專(zhuān)利名稱(chēng):增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法。
背景技術(shù):
FAT文件系統(tǒng)主要包括FAT區(qū)、目錄區(qū)和數(shù)據(jù)區(qū)三個(gè)部分,其中FAT區(qū)和目錄區(qū)為重要的數(shù)據(jù)區(qū), 一旦損毀就會(huì)導(dǎo)致文件或整個(gè)磁盤(pán)數(shù)據(jù)損壞。由于NAND Flash的特性,造成了NAND Flash特定區(qū)域的讀寫(xiě)壽命非常有限,而FAT文件系統(tǒng)的原理決定了文件分配表(FAT表)寫(xiě)入次數(shù)非常頻繁,進(jìn)而導(dǎo)致FAT區(qū)容易損毀造成存儲(chǔ)介質(zhì)中所有數(shù)據(jù)丟失。 一種解決方法式對(duì)FAT表在內(nèi)存中進(jìn)行緩沖,以減少FAT表寫(xiě)入次數(shù)。但該方法的缺點(diǎn)是如果在沒(méi)有后備電源的系統(tǒng)上,掉電后緩沖數(shù)據(jù)來(lái)不及寫(xiě)入磁盤(pán)的數(shù)據(jù)簇部分仍然會(huì)丟失,范圍為0~128簇或更多。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,該方法有利于在減少文件分配表頻繁寫(xiě)入次數(shù)的同時(shí),防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失。 .
為實(shí)現(xiàn)上述之目的,本發(fā)明的技術(shù)方案是 一種增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,其特征在于通過(guò)在系統(tǒng)中增加EEROM并使之與FAT緩存配合工作來(lái)防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失,該方法包含以下步驟
(1) 從NAND Flash的FAT區(qū)中讀取文件分配表到FAT緩存;
(2) 從FAT緩存的文件分配表中為待寫(xiě)入數(shù)據(jù)尋找空的FAT簇號(hào);
(3) 找到后在FAT緩存中修改簇鏈關(guān)系,并將文件分配表改動(dòng)的位置和數(shù)據(jù)信息寫(xiě)入EEROM;
(4) 修改NAND Flash的目錄區(qū)中指示文件大小的標(biāo)簽;
(5) 往NAND Flash的數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù);
(6) 上個(gè)數(shù)據(jù)寫(xiě)完后,如果還有新的待寫(xiě)入數(shù)據(jù),則返回步驟(2),直至FAT緩存中所有空的FAT簇號(hào)都被修改完,再將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash;如果沒(méi)有新的數(shù)據(jù)需要寫(xiě)入,則直接將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash。
本發(fā)明的有益效果是通過(guò)將FAT表中的緩沖數(shù)據(jù)放到EEROM中,解決了緩沖數(shù)據(jù)單純放置到FAT緩存中掉電丟失數(shù)據(jù)量過(guò)大的問(wèn)題,可以將掉電丟失數(shù)據(jù)減少到最多0~1個(gè)簇,提高了數(shù)據(jù)完整性和FAT文件系統(tǒng)的穩(wěn)定性。下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一歩的詳細(xì)說(shuō)明。
圖1是現(xiàn)有技術(shù)的工作原理框圖。
圖2是本發(fā)明的工作原理框圖。
具體實(shí)施例方式
本發(fā)明的增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,通過(guò)在系統(tǒng)中增加EEROM并使之與FAT緩存配合工作來(lái)防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失,該方法包含以下步驟
(1) 從NAND Flash的FAT區(qū)中讀取文件分配表到FAT緩存;
(2) 從FAT緩存的文件分配表中為待寫(xiě)入數(shù)據(jù)尋找空的FAT簇號(hào);
(3) 找到后在FAT緩存中修改簇鏈關(guān)系,并將文件分配表改動(dòng)的位置和數(shù)據(jù)信息寫(xiě)入EEROM;
(4) 修改NAND Flash的目錄區(qū)中指示文件大小的標(biāo)簽;
(5) 往NAND Flash的數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù);
(6) 上個(gè)數(shù)據(jù)寫(xiě)完后,如果還有新的待寫(xiě)入數(shù)據(jù),則返回步驟(2),直至FAT緩存中所有空的FAT簇號(hào)都被修改完,再將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash;如果沒(méi)有新的數(shù)據(jù)需要寫(xiě)入,則直接將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash。
文章中提到的FAT為FAT12、 FAT16和FAT32總稱(chēng)。
如果正在進(jìn)行步驟(2)、 (3)或(4)的操作時(shí)掉電,則此時(shí)會(huì)出現(xiàn)兩種情況, 一種是之前未往數(shù)據(jù)區(qū)寫(xiě)入過(guò)數(shù)據(jù),則讀到FAT緩存中的文件分配表中的簇鏈關(guān)系尚未經(jīng)過(guò)修改,還有一種情況是之前已完整寫(xiě)入過(guò)數(shù)據(jù),故FAT緩存中的部分簇鏈關(guān)系已經(jīng)過(guò)修改,但由于FAT緩存中所有空的FAT簇號(hào)未被全部修改完,使得修改過(guò)的簇鏈關(guān)系還未被從FAT緩存寫(xiě)回NAND Flash的FAT區(qū)。因此,在重新上電后,判斷是否存在上個(gè)數(shù)據(jù)已完整寫(xiě)入,但對(duì)應(yīng)修改的簇鏈關(guān)系還未寫(xiě)回NAND Flash的情況,如果是,則讀出EEROM中的數(shù)據(jù),即文件分配表改動(dòng)的位置和數(shù)據(jù)信息,即可恢復(fù)已寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的簇鏈關(guān)系,從而恢復(fù)之前寫(xiě)入數(shù)據(jù)區(qū)的數(shù)據(jù),否則由于不存在數(shù)據(jù)丟失的問(wèn)題,不進(jìn)行相應(yīng)的操作。
如果正在進(jìn)行步驟(5)的操作時(shí)掉電,則在重新上電后,讀出EEROM中的數(shù)據(jù),恢復(fù)所有已寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的簇鏈關(guān)系,并修改目錄區(qū)中指示掉電時(shí)正在寫(xiě)入數(shù)據(jù)大小的標(biāo)簽,將數(shù)據(jù)大小修改為掉電時(shí)正在寫(xiě)入數(shù)據(jù)中已寫(xiě)入NAND Flash這部分?jǐn)?shù)據(jù)的大小,以恢復(fù)之前寫(xiě)入數(shù)據(jù)區(qū)的所有數(shù)據(jù)。這樣就可以恢復(fù)之前已完整寫(xiě)入的數(shù)據(jù)及掉電時(shí)正在寫(xiě)入數(shù)據(jù)中已寫(xiě)入NAND Flash的這部分?jǐn)?shù)據(jù),使得數(shù)據(jù)丟失量小于一個(gè)簇。以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,其特征在于通過(guò)在系統(tǒng)中增加EEROM并使之與FAT緩存配合工作來(lái)防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失,該方法包含以下步驟(1)從NAND Flash的FAT區(qū)中讀取文件分配表到FAT緩存;(2)從FAT緩存的文件分配表中為待寫(xiě)入數(shù)據(jù)尋找空的FAT簇號(hào);(3)找到后在FAT緩存中修改簇鏈關(guān)系,并將文件分配表改動(dòng)的位置和數(shù)據(jù)信息寫(xiě)入EEROM;(4)修改NAND Flash的目錄區(qū)中指示文件大小的標(biāo)簽;(5)往NAND Flash的數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù);(6)上個(gè)數(shù)據(jù)寫(xiě)完后,如果還有新的待寫(xiě)入數(shù)據(jù),則返回步驟(2),直至FAT緩存中所有空的FAT簇號(hào)都被修改完,再將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash;如果沒(méi)有新的數(shù)據(jù)需要寫(xiě)入,則直接將FAT緩存中的數(shù)據(jù)寫(xiě)回NAND Flash。
2、 根據(jù)權(quán)利要求1所述的增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,其特征在于如果正在進(jìn)行步驟(2)、 (3)或(4)的操作時(shí)掉電,則在重新上電后,判斷是否存在下述的情況掉電前上個(gè)數(shù)據(jù)己完整寫(xiě)入,但由于FAT緩存中所有空的簇號(hào)未被全部修改完,故對(duì)應(yīng)修改的簇鏈關(guān)系還未寫(xiě)回NAND Flash,如果是,則讀出EEROM中的數(shù)據(jù),恢復(fù)已寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的簇鏈關(guān)系,以恢復(fù)之前寫(xiě)入數(shù)據(jù)區(qū)的數(shù)據(jù),否則不進(jìn)行相應(yīng)的操作。
3、 根據(jù)權(quán)利要求1所述的增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,其特征在于如果正在進(jìn)行步驟(5)的操作時(shí)掉電,則在重新上電后,讀出EEROM中的數(shù)據(jù),恢復(fù)所有己寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的簇鏈關(guān)系,并修改目錄區(qū)中指示掉電時(shí)正在寫(xiě)入數(shù)據(jù)大小的標(biāo)簽,以恢復(fù)之前寫(xiě)入數(shù)據(jù)區(qū)的數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種增強(qiáng)基于NAND Flash的FAT文件系統(tǒng)穩(wěn)定性的方法,其特征在于通過(guò)在系統(tǒng)中增加EEROM并使之與FAT緩存配合工作來(lái)防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失,該方法包含以下步驟1)從FAT區(qū)中讀取文件分配表到FAT緩存;2)從FAT緩存的文件分配表中尋找空的簇號(hào);3)找到后在FAT緩存中修改簇鏈關(guān)系,并將文件分配表改動(dòng)的位置和數(shù)據(jù)信息寫(xiě)入EEROM;4)修改目錄區(qū)中指示文件大小的標(biāo)簽;5)往數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù);6)寫(xiě)完后,如果還有新的待寫(xiě)入數(shù)據(jù),則返回步驟(2),直至FAT緩存中所有空的FAT簇號(hào)都被修改完,再將FAT緩存中的數(shù)據(jù)寫(xiě)回存儲(chǔ)介質(zhì)。該方法有利于在減少文件分配表頻繁寫(xiě)入次數(shù)的同時(shí),防止掉電時(shí)寫(xiě)入數(shù)據(jù)的大量丟失。
文檔編號(hào)G06F17/30GK101634997SQ200910111899
公開(kāi)日2010年1月27日 申請(qǐng)日期2009年6月2日 優(yōu)先權(quán)日2009年6月2日
發(fā)明者俞育海, 文 帥, 林偉鵬 申請(qǐng)人:福州思邁特?cái)?shù)碼科技有限公司