專利名稱:基于falsh的自恢復(fù)實(shí)時(shí)文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種實(shí)時(shí)自恢復(fù)文件系統(tǒng),適用于使用FLASH作為存儲(chǔ)信息介質(zhì)的嵌 入式系統(tǒng),通過(guò)實(shí)時(shí)存儲(chǔ)數(shù)據(jù)及自行恢復(fù)文件系統(tǒng)來(lái)避免突發(fā)情況導(dǎo)致的對(duì)文件系統(tǒng)或文 件的破壞。
背景技術(shù):
在嵌入式系統(tǒng)中,尤其是電力系統(tǒng)裝置中,不僅要求文件系統(tǒng)能夠快速完成文件 操作,提高文件操作實(shí)時(shí)性;同時(shí)還要求文件系統(tǒng)具有較高的安全性,能夠在掉電等突發(fā)情 況下恢復(fù)FLASH中存儲(chǔ)的文件系統(tǒng)。目前,嵌入式系統(tǒng)標(biāo)準(zhǔn)的磁盤文件系統(tǒng)有Ext2、FAT。將這種標(biāo)準(zhǔn)的磁盤文件系統(tǒng) 運(yùn)行在FLASH上,需要將FLASH模擬成一個(gè)具有512字節(jié)扇區(qū)大小的標(biāo)準(zhǔn)塊設(shè)備。當(dāng)上層 文件系統(tǒng)要對(duì)一個(gè)設(shè)備扇區(qū)進(jìn)行寫操作時(shí),其操作順序是1、將這個(gè)扇區(qū)所在FLASH塊數(shù)據(jù)讀到內(nèi)存(BUFFER)中;2、將BUFFER中數(shù)據(jù)與寫操作的數(shù)據(jù)合并成新的數(shù)據(jù)放入BUFFER中;3、將FLASH塊進(jìn)行擦除操作;4、將BUFFER中的數(shù)據(jù)寫回該FLASH塊。這種方式雖然能完成正常操作,但是存在下面幾個(gè)缺點(diǎn)1、效率低,對(duì)一個(gè)扇區(qū)的更新需擦寫整個(gè)FLASH塊的數(shù)據(jù);2、安全性低,很容易引起數(shù)據(jù)丟失。如果在上面第三步與第四步間發(fā)生設(shè)備掉電, 將會(huì)導(dǎo)致整個(gè)FLASH塊數(shù)據(jù)丟失,可能造成文件系統(tǒng)處于不一致的狀態(tài),甚至不可恢復(fù)。嵌入式系統(tǒng)提供的日志文件系統(tǒng)jffs2、jffs3能夠解決上述問(wèn)題。日志式文件系 統(tǒng)通過(guò)詳細(xì)記錄文件系統(tǒng)中的每個(gè)操作及其數(shù)據(jù)內(nèi)容,來(lái)保證文件系統(tǒng)的安全性。但是日 志式文件系統(tǒng)存在下面缺點(diǎn)1、對(duì)每個(gè)文件需記錄前面多個(gè)操作,這樣不僅浪費(fèi)空間(jffs2浪費(fèi)內(nèi)存空間、 jffs3浪費(fèi)FLASH空間),而且在掉電或突發(fā)情況后,自恢復(fù)文件系統(tǒng)過(guò)程緩慢;2、由于操作系統(tǒng)對(duì)寫操作不是直接將數(shù)據(jù)寫入到FLASH物理空間,日志式文件系 統(tǒng)很難滿足嵌入式系統(tǒng)中對(duì)讀寫文件的實(shí)時(shí)性要求。由此可見(jiàn),目前幾種常用文件系統(tǒng)很難滿足嵌入式系統(tǒng)對(duì)文件操作實(shí)時(shí)性及自恢 復(fù)性能要求。
發(fā)明內(nèi)容
本發(fā)明針對(duì)上述問(wèn)題,克服現(xiàn)有技術(shù)上述缺點(diǎn),提出一種基于FALSH的自恢復(fù)實(shí) 時(shí)文件系統(tǒng),通過(guò)實(shí)時(shí)存儲(chǔ)數(shù)據(jù)及自行恢復(fù)文件系統(tǒng)來(lái)避免突發(fā)情況導(dǎo)致的對(duì)文件系統(tǒng)或 文件的破壞。為了解決以上技術(shù)問(wèn)題,本發(fā)明提供的基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),以 FLASH塊為單位來(lái)存儲(chǔ)文件,其特征在于一個(gè)文件存儲(chǔ)于一個(gè)FLASH塊中(每個(gè)文件必須占有一個(gè)FLASH塊且不允許多個(gè)文件共享一個(gè)FLASH塊),文件的特征信息存儲(chǔ)于所 在FLASH塊的指定頁(yè),文件的內(nèi)容存儲(chǔ)于所在FLASH塊的其余頁(yè)中,系統(tǒng)啟動(dòng)后掃描所有 FLASH塊的所述指定頁(yè),將所有文件的特征信息讀入內(nèi)存,并據(jù)此在內(nèi)存中自行重新構(gòu)建系 統(tǒng)文件列表,當(dāng)系統(tǒng)文件列表發(fā)生變化時(shí),將變化信息同步至相應(yīng)文件所在FLASH塊的所 述指定頁(yè)中,若新增文件,則在空白FLASH塊的指定頁(yè)寫入新增中寫入新增文件的特征信 息,新增文件的內(nèi)容寫入該空白FLASH塊的其余頁(yè),若刪除文件,則擦除該待刪除文件對(duì)應(yīng) FLASH塊指定頁(yè)上的文件特征信息。進(jìn)一步的,本發(fā)明將文件的特征信息存儲(chǔ)于所在FLASH塊的第一頁(yè)。本發(fā)明文件系統(tǒng)以FLASH塊為單位來(lái)存儲(chǔ)文件,將文件特征信息記錄在存儲(chǔ)文件 數(shù)據(jù)的每個(gè)FLASH塊的第一頁(yè),利用FLASH掉電不丟失特性,在系統(tǒng)重新上電時(shí),掃描FLASH 每塊信息,根據(jù)存儲(chǔ)的文件特征信息自行恢復(fù)文件系統(tǒng)。更進(jìn)一步的,本發(fā)明具有用于對(duì)FLASH塊進(jìn)行讀寫的文件操作接口模塊,所述文 件操作接口模塊直接調(diào)用FLASH操作接口來(lái)對(duì)FLASH塊進(jìn)行讀寫操作,實(shí)現(xiàn)文件操作的讀 寫實(shí)時(shí)性。傳統(tǒng)文件系統(tǒng)的文件讀寫都需要經(jīng)過(guò)BUFFER緩沖,本發(fā)明文件系統(tǒng)直接對(duì)FLASH 塊進(jìn)行讀寫操作,實(shí)時(shí)性更強(qiáng),確保電力數(shù)據(jù)能夠?qū)崟r(shí)、完整的被記錄。本發(fā)明的有益效果如下1.提高了讀寫操作速度,10-15%。2.文件寫過(guò)程中設(shè)備掉電,能夠保存寫入部分,并能夠在設(shè)備重新上電后正確讀 出已經(jīng)寫入部分。3.能夠移植到多種嵌入式操作系統(tǒng),也可不依賴操作系統(tǒng)使用。
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。圖1為本發(fā)明實(shí)施例1構(gòu)架框圖。
具體實(shí)施例方式下面參照附圖并結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。但是本發(fā)明不限于所給 出的例子。本發(fā)明基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),以FLASH塊為單位來(lái)存儲(chǔ)文件,其改進(jìn) 之處在于一個(gè)文件存儲(chǔ)于一個(gè)FLASH塊中(每個(gè)文件必須占有一個(gè)FLASH塊且不允許多 個(gè)文件共享一個(gè)FLASH塊),文件的特征信息存儲(chǔ)于所在FLASH塊的第一頁(yè)(也可為最后一 頁(yè),根據(jù)需要自定義),文件的內(nèi)容存儲(chǔ)于所在FLASH塊的其余頁(yè)中,系統(tǒng)啟動(dòng)后掃描所有 FLASH塊的所述第一頁(yè),將所有文件的特征信息讀入內(nèi)存,并據(jù)此在內(nèi)存中自行重新構(gòu)建系 統(tǒng)文件列表,當(dāng)系統(tǒng)文件列表發(fā)生變化時(shí),將變化信息同步至相應(yīng)文件所在FLASH塊的所 述第一頁(yè)中,若新增文件,則在空白FLASH塊的指定頁(yè)寫入新增中寫入新增文件的特征信 息,新增文件的內(nèi)容寫入該空白FLASH塊的其余頁(yè),若刪除文件,則擦除該待刪除文件對(duì)應(yīng) FLASH塊指定頁(yè)上的文件特征信息。文件的特征信息包括有文件名、文件屬性、文件所屬 目錄,文件大小、文件創(chuàng)建日期、最近修改時(shí)間、文件在FLASH中所占的起始?jí)K號(hào)及當(dāng)前塊號(hào)。本發(fā)明文件系統(tǒng)具有用于對(duì)FLASH塊進(jìn)行讀寫的文件操作接口模塊,所述文件操 作接口模塊直接調(diào)用FLASH操作接口來(lái)對(duì)FLASH塊進(jìn)行讀寫操作,實(shí)現(xiàn)文件操作的讀寫實(shí) 時(shí)性。當(dāng)處理器處于空閑時(shí),對(duì)無(wú)用FLASH塊執(zhí)行擦除操作,將其變?yōu)榭瞻譌LASH塊。避免 FLASH被寫滿后,需要臨時(shí)先擦除再寫數(shù)據(jù)所帶來(lái)的延時(shí),確保數(shù)據(jù)寫入的實(shí)時(shí)性。如圖1所示,為本發(fā)明文件系統(tǒng)的構(gòu)架框圖。本發(fā)明文件系統(tǒng)(以下簡(jiǎn)稱ARPFS)的功能包括兩部分1、FLASH存儲(chǔ)管理功能。該模塊包括四個(gè)子模塊a)FLASH塊管理模塊。ARPFS使用單向鏈表分布管理FLASH中空閑塊、已使用塊、 擦除塊、壞塊。b) FLASH塊更新模塊。該模塊用來(lái)擦除文件系統(tǒng)釋放使用過(guò)的塊,并將擦除完成的 塊插入到空閑塊鏈中。C)地址映射模塊。地址映射功能完成將文件系統(tǒng)中使用的塊地址及塊內(nèi)偏移轉(zhuǎn)換 成對(duì)FLASH物理地址。起轉(zhuǎn)換公式為物理地址=FLASH基地址+塊地址*塊長(zhǎng)度+塊內(nèi)偏移d) FLASH操作接口模塊。包括實(shí)際操作FLASH物理介質(zhì)的接口函數(shù),主要提供給上 層的模塊提供直接訪問(wèn)FLASH的接口。2、文件管理及操作。包括三個(gè)子模塊a)文件系統(tǒng)自恢復(fù)模塊。在系統(tǒng)重新上電時(shí),通過(guò)掃描所有FLASH塊第一頁(yè)存儲(chǔ) 的文件特征信息,重新在內(nèi)存中構(gòu)建一張系統(tǒng)文件列表,從而恢復(fù)文件系統(tǒng)。b)文件表管理模塊。ARPFS使用一張線性文件表來(lái)管理FLASH中所有文件,文件 表可以保存IOM個(gè)文件項(xiàng)(包括目錄),每個(gè)文件項(xiàng)記錄了該文件的文件名、文件屬性、文 件所屬目錄,文件大小、文件創(chuàng)建的日期和最近修改時(shí)間以及文件在FLASH中所占的起始 塊號(hào)、當(dāng)前塊號(hào)等文件特征信息,同時(shí)這些信息也同步到該文件起始?jí)K的第一個(gè)頁(yè)中。c)文件操作接口模塊。ARPFS文件系統(tǒng)還提供文件及目錄的打開(kāi)、刪除、關(guān)閉,文 件的讀寫、查找等基本的功能。通過(guò)ARPFS文件系統(tǒng)對(duì)文件的操作進(jìn)行管理后,應(yīng)用程序 使用該文件系統(tǒng)接口與使用其它文件系統(tǒng)的接口完全一致。為了保證文件操作的實(shí)時(shí)性, ARPFS提供的文件系統(tǒng)操作接口都是直接調(diào)用FLASH操作接口來(lái)操作FLASH物理介質(zhì),加快 文件訪問(wèn)速度。除上述實(shí)施例外,本發(fā)明還可以有其他實(shí)施方式。凡采用等同替換或等效變換形 成的技術(shù)方案,均落在本發(fā)明要求的保護(hù)范圍。
權(quán)利要求
1.基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),以FLASH塊為單位來(lái)存儲(chǔ)文件,其特征在于一 個(gè)文件存儲(chǔ)于一個(gè)FLASH塊中,文件的特征信息存儲(chǔ)于所在FLASH塊的指定頁(yè),文件的內(nèi) 容存儲(chǔ)于所在FLASH塊的其余頁(yè)中,系統(tǒng)啟動(dòng)后掃描所有FLASH塊的所述指定頁(yè),將所有 文件的特征信息讀入內(nèi)存,并據(jù)此在內(nèi)存中自行重新構(gòu)建系統(tǒng)文件列表,當(dāng)系統(tǒng)文件列表 發(fā)生變化時(shí),將變化信息同步至相應(yīng)文件所在FLASH塊的所述指定頁(yè)中,若新增文件,則在 空白FLASH塊的指定頁(yè)寫入新增中寫入新增文件的特征信息,新增文件的內(nèi)容寫入該空白 FLASH塊的其余頁(yè),若刪除文件,則擦除該待刪除文件對(duì)應(yīng)FLASH塊指定頁(yè)上的文件特征信 肩、ο
2.根據(jù)權(quán)利要求1所述基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),其特征在于具有用于對(duì) FLASH塊進(jìn)行讀寫的文件操作接口模塊,所述文件操作接口模塊直接調(diào)用FLASH操作接口 來(lái)對(duì)FLASH塊進(jìn)行讀寫操作,實(shí)現(xiàn)文件操作的讀寫實(shí)時(shí)性。
3.根據(jù)權(quán)利要求1所述基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),其特征在于當(dāng)處理器處 于空閑時(shí),對(duì)無(wú)用FLASH塊執(zhí)行擦除操作,將其變?yōu)榭瞻譌LASH塊。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),其特征在于所 述的指定頁(yè)為第一頁(yè)。
5.根據(jù)權(quán)利要求1-3任一項(xiàng)所述基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),其特征在于所 述的指定頁(yè)為最后一頁(yè)。
6.根據(jù)權(quán)利要求1-3任一項(xiàng)所述基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),其特征在于文 件的特征信息包括有文件名、文件屬性、文件所屬目錄,文件大小、文件創(chuàng)建日期、最近修 改時(shí)間、文件在FLASH中所占的起始?jí)K號(hào)及當(dāng)前塊號(hào)。
全文摘要
基于FALSH的自恢復(fù)實(shí)時(shí)文件系統(tǒng),一個(gè)文件存儲(chǔ)于一個(gè)FLASH塊中,文件的特征信息存儲(chǔ)于所在FLASH塊的第一頁(yè),文件的內(nèi)容存儲(chǔ)于其余頁(yè)中,系統(tǒng)啟動(dòng)后掃描所有FLASH塊的第一頁(yè),將所有文件的特征信息讀入內(nèi)存,并據(jù)此在內(nèi)存中自行重新構(gòu)建系統(tǒng)文件列表,當(dāng)系統(tǒng)文件列表發(fā)生變化時(shí),將變化信息同步至相應(yīng)文件所在FLASH塊的所述指定頁(yè)中。本發(fā)明利用FLASH掉電不丟失特性,在系統(tǒng)重新上電時(shí),掃描FLASH每塊信息,根據(jù)存儲(chǔ)的文件特征信息自行恢復(fù)文件系統(tǒng)。并且本文件系統(tǒng)還具有用于對(duì)FLASH塊進(jìn)行讀寫的文件操作接口模塊,文件操作接口模塊直接調(diào)用FLASH操作接口來(lái)對(duì)FLASH塊進(jìn)行讀寫操作,實(shí)現(xiàn)文件操作的讀寫實(shí)時(shí)性。
文檔編號(hào)G06F11/14GK102053879SQ201010590868
公開(kāi)日2011年5月11日 申請(qǐng)日期2010年12月16日 優(yōu)先權(quán)日2010年12月16日
發(fā)明者張少波, 徐廣輝, 朱捷, 田小鋒, 趙峰榮, 鄭玉平 申請(qǐng)人:國(guó)網(wǎng)電力科學(xué)研究院