專利名稱:一種nandflash文件系統(tǒng)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算,尤其涉及一種nandflash文件系統(tǒng)實(shí)現(xiàn)方法。
背景技術(shù):
nandflash是一種低廉高效的存儲(chǔ)器件,其內(nèi)部結(jié)構(gòu)如圖1所示,nandflash存儲(chǔ)器分成若干塊,每塊分成若干頁,每頁的大小固定為一個(gè)固定數(shù)值。在控制信號(hào)的配合下,它的數(shù)據(jù)口通過分時(shí)復(fù)用方式實(shí)現(xiàn)命令,地址,數(shù)據(jù)的傳輸,這樣它的封裝腳大大減小,價(jià)格低。在現(xiàn)有的應(yīng)用中,針對(duì)nandflash的文件系統(tǒng)有很多,但是它們都是通用文件系統(tǒng),屬于操作系統(tǒng)的一個(gè)功能,nandflash的應(yīng)用則對(duì)系統(tǒng)的要求很高,系統(tǒng)開銷很大,無法應(yīng)用于普通的CPU,這就對(duì)nandflash的應(yīng)用產(chǎn)生了限制。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種應(yīng)用性能強(qiáng)的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,以克服現(xiàn)有技術(shù)中對(duì)系統(tǒng)的要求高,開銷大,無法應(yīng)用于普通CPU的不足。
本發(fā)明所采用的nandflash文件系統(tǒng)實(shí)現(xiàn)方法為在nandflash存儲(chǔ)器中尋找至少兩個(gè)有效塊,分別作為系統(tǒng)塊和物理文件塊,所述的系統(tǒng)塊反映nandflash的所有塊信息,所述的物理文件塊保存該nandflash所有物理文件信息。
本發(fā)明采用如下步驟A、對(duì)nandflash存儲(chǔ)器進(jìn)行格式化操作,以尋找到的第1個(gè)好塊作為系統(tǒng)塊,所述的系統(tǒng)塊中包括設(shè)定的文件系統(tǒng)標(biāo)識(shí)字符串和nandflash各個(gè)塊的好壞、使用情況、作用信息;在nandflash里尋找第2個(gè)好塊作為物理文件塊,所述的物理文件體現(xiàn)為nandflash驅(qū)動(dòng)函數(shù),每個(gè)驅(qū)動(dòng)函數(shù)產(chǎn)生符合nandflash操作的控制時(shí)序,每個(gè)物理文件占用設(shè)定長度的字節(jié),其數(shù)據(jù)結(jié)構(gòu)包括文件名、文件擴(kuò)展名、文件大小和文件數(shù)據(jù)所要分配的nandflash物理塊信息;B、根據(jù)所述的系統(tǒng)塊和物理文件塊中的信息,完成邏輯文件的操作。
所述的步驟A中,所述的系統(tǒng)塊第0頁第0個(gè)字節(jié)開始,前面的字節(jié)保存設(shè)定的nandflash文件系統(tǒng)標(biāo)識(shí)字符串,后續(xù)的字節(jié)保存每個(gè)塊的信息。
所述的步驟A中,所述的物理文件塊中,從第0頁到最后一頁,以FileNode數(shù)據(jù)為一個(gè)單位,依次保存FileNode數(shù)據(jù);讀取其中的物理信息時(shí),從該物理文件塊第0頁到最后一頁,按256字節(jié)為一個(gè)單位依次讀取所有信息。
所述的步驟B中,所述的邏輯文件體現(xiàn)為高級(jí)函數(shù),高級(jí)函數(shù)通過調(diào)用驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元數(shù)據(jù)訪問,所述的系統(tǒng)塊根據(jù)nandflash每物理塊的作用和使用信息分配物理塊保存邏輯文件數(shù)據(jù)。
所述的步驟B中,所述的邏輯文件所包含的基本信息包括邏輯文件操作緩沖區(qū),邏輯文件大小,文件操作邏輯位置,邏輯文件操作結(jié)果標(biāo)識(shí),邏輯文件對(duì)應(yīng)的物理文件。
所述的步驟A包括如下步驟A1、對(duì)整個(gè)nandflash刪除,根據(jù)nandflash控制時(shí)序要求,從第一塊到最后一塊依次發(fā)送刪除命令刪除;A2、分配等于nandflash總塊數(shù)字節(jié)的內(nèi)存空間,每個(gè)字節(jié)標(biāo)識(shí)每nandflash物理快的好、壞,使用情況、作用信息;A3、設(shè)置文件系統(tǒng)標(biāo)識(shí)字符串;A4、進(jìn)一步判斷整個(gè)nandflash存儲(chǔ)器好、壞塊,并且在分配的內(nèi)存空間中設(shè)置或刷新相應(yīng)標(biāo)志;A5、在nandflash里尋找第1個(gè)好塊作為系統(tǒng)塊,設(shè)置塊信息的結(jié)構(gòu);A6、在nandflash里尋找第2個(gè)好塊作為物理文件塊;A7、在系統(tǒng)塊中保存所設(shè)置的文件系統(tǒng)標(biāo)識(shí)符和內(nèi)存空間所保存的nandflash每個(gè)塊的好壞、使用情況、作用信息。
所述的步驟B包括如下步驟B1、讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表;B2、在物理文件鏈表里查找到需要讀取的邏輯文件,并分配緩沖空間;B3、獲取邏輯文件對(duì)應(yīng)的物理文件數(shù)據(jù),并將其保存至緩沖空間;B4、由緩沖空間輸出數(shù)據(jù);B5、關(guān)閉邏輯文件操作。
所述的步驟B包括如下步驟b1、讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表;b2、打開需要寫入的邏輯文件,并分配緩沖空間;
b3、把邏輯文件數(shù)據(jù)寫到緩沖空間;b4、由緩沖空間將邏輯文件數(shù)據(jù)保存到nandflash對(duì)應(yīng)物理塊;b5、釋放緩沖空間和邏輯文件空間,更新系統(tǒng)塊數(shù)據(jù)和物理文件塊數(shù)據(jù),以保存新的邏輯文件輸入。
本發(fā)明的有益效果為在本發(fā)明中,在nandflash存儲(chǔ)器中尋找至少兩個(gè)有效塊,分別作為系統(tǒng)塊和物理文件塊,系統(tǒng)塊反映nandflash的所有塊信息,物理文件塊保存該nandflash所有物理文件信息,由于nandflash在出廠是不能保證所有塊是好的,也不能保證第1塊一定是好的,另外,在使用過程中,也可能出現(xiàn)壞塊,但不影響其他塊的使用,壞與塊之間是相對(duì)獨(dú)立的,本發(fā)明中通過尋找至少兩個(gè)有效塊,極大程度地適應(yīng)了這種塊與塊之間相對(duì)獨(dú)立的特性,通過設(shè)定系統(tǒng)塊和物理文件塊,提高了nandflash的應(yīng)用兼容性,其應(yīng)用性能強(qiáng),也使本發(fā)明獲得了較高的穩(wěn)定性和可靠性。
本發(fā)明通過nandflash驅(qū)動(dòng)函數(shù)通過對(duì)nandflash信號(hào)時(shí)序以及有關(guān)數(shù)據(jù)口的控制,實(shí)現(xiàn)基本的刪除,編程,讀操作,邏輯文件(高級(jí)函數(shù))則可以通過調(diào)用驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元數(shù)據(jù)訪問,nandflash驅(qū)動(dòng)函數(shù)具有相當(dāng)?shù)耐该餍裕瑯O大地方便了用戶對(duì)nandflash的應(yīng)用,本發(fā)明根據(jù)系統(tǒng)塊和物理文件塊中的信息,完成邏輯文件的讀取或?qū)懭氩僮?,?shí)現(xiàn)nandflash的動(dòng)態(tài)應(yīng)用,使本發(fā)明具有很強(qiáng)應(yīng)用性能,并且文件存儲(chǔ)、訪問代碼小,效率高,對(duì)系統(tǒng)要求不高,尤其適用于一般的CPU。
圖1為nandflash存儲(chǔ)器件內(nèi)部結(jié)構(gòu)示意圖;圖2為本發(fā)明整體系統(tǒng)結(jié)構(gòu)示意圖;圖3為本發(fā)明文件系統(tǒng)物理結(jié)構(gòu)示意圖;
圖4為本發(fā)明格式化處理的具體控制流程示意圖;圖5為本發(fā)明讀取文件的具體控制流程示意圖;圖6為本發(fā)明物理文件鏈表結(jié)構(gòu)示意圖;圖7為本發(fā)明寫入文件具體控制流程示意圖。
具體實(shí)施例方式
下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明在本發(fā)明中,在nandflash存儲(chǔ)器中尋找至少兩個(gè)有效塊,分別作為系統(tǒng)塊和物理文件塊,系統(tǒng)塊反映nandflash的所有塊信息,物理文件塊保存該nandflash所有物理文件信息。
如圖2所示,本發(fā)明的整體系統(tǒng)結(jié)構(gòu)分為三層a)器件層nandflash存儲(chǔ)設(shè)備。
b)文件物理層nandflash驅(qū)動(dòng)函數(shù),通過對(duì)nandflash信號(hào)時(shí)序以及有關(guān)數(shù)據(jù)口的控制,實(shí)現(xiàn)基本的刪除,編程,讀操作,每個(gè)函數(shù)產(chǎn)生符合nandflash操作的控制時(shí)序。
c)文件邏輯層文件操作函數(shù),用戶通過文件名調(diào)用高級(jí)函數(shù)實(shí)現(xiàn)文件讀寫等操作。高級(jí)函數(shù)調(diào)用驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元數(shù)據(jù)訪問,具有相當(dāng)?shù)耐该餍裕奖懔擞脩魧?duì)nandflash的應(yīng)用。
對(duì)于文件存儲(chǔ)分為物理文件和邏輯文件,物理文件和邏輯文件按nandflash的塊大小進(jìn)行分配。物理/邏輯文件按nandflash一塊的大小申請(qǐng)nandflash存儲(chǔ)空間;邏輯塊容量等于物理塊容量,這樣可以簡化整個(gè)文件系統(tǒng)設(shè)計(jì)。
本發(fā)明的基本基本控制方法如下1)對(duì)nandflash存儲(chǔ)器進(jìn)行格式化操作,以尋找到的第1個(gè)好塊作為系統(tǒng)塊,系統(tǒng)塊中包括設(shè)定的文件系統(tǒng)標(biāo)識(shí)字符串和nandflash各個(gè)塊的好壞、使用情況、作用信息,以后根據(jù)這些信息知道nandflash每物理塊的作用和使用情況,根據(jù)這些信息分配物理塊保存邏輯文件數(shù)據(jù)。例如,如圖3所示,系統(tǒng)塊第0頁第0個(gè)字節(jié)開始,前8字節(jié)保存nandflash文件系統(tǒng)標(biāo)識(shí)字符串“MALATAFS”,從第8字節(jié)開始保存每塊的信息。每塊的信息標(biāo)識(shí)含義可如下表1所示
表12)在nandflash里尋找第2個(gè)好塊作為物理文件塊,物理文件體現(xiàn)為nandflash驅(qū)動(dòng)函數(shù),每個(gè)驅(qū)動(dòng)函數(shù)產(chǎn)生符合nandflash操作的控制時(shí)序,每個(gè)物理文件占用設(shè)定長度的字節(jié),其數(shù)據(jù)結(jié)構(gòu)如下表2所示,包括文件名、文件擴(kuò)展名、文件大小和文件數(shù)據(jù)所要分配的nandflash物理塊信息。
表2如圖3所示,在物理文件塊中,從第0頁到最后一頁,以FileNode數(shù)據(jù)為一個(gè)單位,依次保存FileNode數(shù)據(jù);讀取其中的物理信息時(shí),從該物理文件塊第0頁到最后一頁,按256字節(jié)為一個(gè)單位依次讀取所有信息。不使用的物理文件信息區(qū)域值是0xFF,根據(jù)這一點(diǎn)可以判斷物理文件信息的合法性。
一個(gè)物理文件占(FileNode)256字節(jié),256字節(jié)的分配如上表2,文件名占89字節(jié);文件擴(kuò)展名占3字節(jié);文件大小占4字節(jié)。文件分配物理塊最大塊數(shù)為80塊,一塊2個(gè)字節(jié)。256=89+3+4+80×2。是2的8次方,非常適合計(jì)算機(jī)運(yùn)算。256字節(jié)為一個(gè)物理文件信息(FileNode)。
該文件系統(tǒng)文件最大容量是=80×NandFlash塊容量。
在nandflash中,nandflash容量=塊總數(shù)*每塊頁總數(shù)*每頁大小。
nandflash有幾種操作刪除,編程和讀數(shù)據(jù),讀狀態(tài),讀器件ID號(hào)基本操作。在控制信號(hào)時(shí)序控制下,通過數(shù)據(jù)口發(fā)不同的命令字實(shí)現(xiàn)不同的操作。刪除只能對(duì)整個(gè)塊操作刪除,啟動(dòng)刪除某塊命令,把整個(gè)塊刪除,不管塊的其他地方是否用到同樣刪除;編程只能對(duì)整個(gè)頁操作;數(shù)據(jù)的讀取可以整頁讀取,也可以頁內(nèi)任意數(shù)據(jù)讀取。
nandflash線性物理地址由塊號(hào),頁號(hào),和頁內(nèi)地址得到。其計(jì)算式如下nandflash物理地址=((Block Address<<N))|((PageAddress in block)<<M)| Page Offset Address其中,N=log2(每塊頁總數(shù)+頁大小),M=Log2(頁大小)。
對(duì)于nandflash,可以根據(jù)這個(gè)物理地址實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元的訪問。nandflash物理地址分幾個(gè)字節(jié)發(fā)送,由高字節(jié)依次到低字節(jié)發(fā)送。
3)根據(jù)系統(tǒng)塊和物理文件塊中的信息,完成邏輯文件的讀取或?qū)懭氩僮鳎壿嬑募w現(xiàn)為高級(jí)函數(shù),高級(jí)函數(shù)通過調(diào)用驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元數(shù)據(jù)訪問,系統(tǒng)塊根據(jù)nandflash每物理塊的作用和使用信息分配物理塊保存邏輯文件數(shù)據(jù),邏輯文件所需要的存儲(chǔ)塊為(邏輯文件容量+邏輯文件塊容量-1)/NandFlash塊容量。
對(duì)于邏輯文件。文件按nandflash一塊的大小申請(qǐng)nandflash存儲(chǔ)空間。邏輯塊容量等于物理塊容量,這樣可以簡化整個(gè)文件系統(tǒng)設(shè)計(jì)。如下表3所示,邏輯文件所包含的基本信息包括邏輯文件操作緩沖區(qū),邏輯文件大小,文件操作邏輯位置,邏輯文件操作結(jié)果標(biāo)識(shí),邏輯文件對(duì)應(yīng)的物理文件FileNode。
表3
●邏輯文件操作緩沖區(qū)本文件系統(tǒng)是通過緩沖區(qū)實(shí)現(xiàn)對(duì)邏輯文件的操作,通過緩沖區(qū)可以提高文件的訪問速度,提高效率。對(duì)文件讀時(shí),如果要讀取的數(shù)據(jù)在緩沖區(qū)里,則直接從緩沖區(qū)輸出數(shù)據(jù),這時(shí)不用訪問nandfash,速度非常快.如果要讀取的數(shù)據(jù)不在緩沖區(qū)里,根據(jù)文件訪問位置,計(jì)算出對(duì)應(yīng)物理文件物理塊,立即從nandflash的物理塊讀取該塊數(shù)度到緩沖區(qū)。再從緩沖區(qū)輸出數(shù)據(jù)。寫時(shí)。先把數(shù)據(jù)寫到緩沖區(qū),緩沖區(qū)滿,分配nandflash物理塊把數(shù)據(jù)寫進(jìn)該物理塊。通過緩沖區(qū)實(shí)現(xiàn)nandFlash和用戶的傳輸。
●邏輯文件大小FileSize是邏輯文件的大小。文件占用字節(jié)數(shù)。等于物理文件大小.
●文件操作邏輯位置就是邏輯文件現(xiàn)在的操作位置,該值在
之間。對(duì)文件讀寫操作N個(gè)字節(jié)數(shù)據(jù)后,該值自動(dòng)增加N個(gè)數(shù)字。該值記下文件最后操作的位置。用它實(shí)現(xiàn)邏輯文件任意數(shù)據(jù)操作。本文件系統(tǒng)也增加了動(dòng)態(tài)改變文件訪問位置的高級(jí)函數(shù).極大方便用戶.
●邏輯文件操作結(jié)果標(biāo)識(shí)邏輯文件操作過程中出現(xiàn)錯(cuò)誤,則置1。正常置0。
●物理文件結(jié)構(gòu)FileNode如下表4所示,與物理文件的數(shù)據(jù)結(jié)構(gòu)相同。
表4
如圖4所示,本發(fā)明的格式化處理的具體控制流程如下1.根據(jù)nandflash控制時(shí)序要求,對(duì)整個(gè)nandflash刪除,如步驟S601至步驟S604,從第一塊到最后一塊依次發(fā)送刪除命令刪除。進(jìn)行刪除后,一般而言,nandflash全是0xFF。
2.如步驟S605,分配等于nandflash總塊數(shù)字節(jié)的內(nèi)存空間,每個(gè)字節(jié)標(biāo)識(shí)每nandflash物理快的好、壞,使用情況、作用信息,至于每塊的作用,可參看上述表1得知。
3.如步驟S606,設(shè)置文件系統(tǒng)標(biāo)識(shí)字符串,例如,將文件系統(tǒng)標(biāo)識(shí)字符串“MALATAFS”寫入一個(gè)系統(tǒng)變量中。該文件系統(tǒng)標(biāo)識(shí)字符串應(yīng)該保存在系統(tǒng)塊的第0頁的第0到第7地址處,對(duì)于任意nandflash,如果某塊的第0頁的第0到第7地址保存的是該字符串,則該nandflash為萬利達(dá)文件系統(tǒng),否則就不是。
4.如步驟S607至步驟S614,進(jìn)一步判斷整個(gè)nandflash存儲(chǔ)器好、壞塊,并且在分配的內(nèi)存空間中設(shè)置或刷新相應(yīng)標(biāo)志。由于nandflash在出廠是不能保證所有塊是好的,也不能保證第1塊一定是好的,另外,在使用過程中,也可能出現(xiàn)壞塊,在這里,首先根據(jù)Nandflash的數(shù)據(jù)規(guī)格書datasheet讀取判斷nandflash好壞的地址數(shù)據(jù),再對(duì)于初步確定為壞塊的,重新進(jìn)行一次刪除以進(jìn)一步確定。對(duì)于壞塊,在內(nèi)存空間中設(shè)置或刷新BLOCK_BAT標(biāo)志,表示不能使用;對(duì)于好塊,在內(nèi)存空間中設(shè)置或刷新BLOCK_GOOD NOTUSE標(biāo)志。
5.如步驟S615至步驟S619,在nandflash里尋找第1個(gè)好塊作為系統(tǒng)塊,設(shè)置塊信息的結(jié)構(gòu)BLOCK_INFO。
6.如步驟S620至步驟S624,在nandflash里尋找第2個(gè)好塊作為物理文件塊,該物理文件塊保存該nandflash所有物理文件信息,物理文件結(jié)構(gòu)參照表2。
7.如步驟S625,在系統(tǒng)塊中保存所設(shè)置的文件系統(tǒng)標(biāo)識(shí)符(即“MALATAFS”)和內(nèi)存空間所保存的nandflash每個(gè)塊的好壞、使用情況、作用信息。
8.如步驟S626,由于格式化后nandflash是沒有文件的,所以把物理文件雙向鏈表,頭,尾指針置空。
9.顯然,在步驟S627中,表示該nandflash好快的數(shù)量不足2個(gè)(好快為0個(gè)或僅僅1個(gè)),不能創(chuàng)建文件系統(tǒng)。
通過步述步驟1至步驟8完成本發(fā)明的格式化處理,確定了系統(tǒng)塊和物理文件塊,創(chuàng)建了文件系統(tǒng)。
如圖5所示,本發(fā)明的讀取文件具體控制流程如下I.如步驟S701,初始化文件系統(tǒng),如步驟S702,判斷該nandflash是否是本實(shí)施例中和“MALATAFS”(萬利達(dá))文件系統(tǒng),進(jìn)行如下操作I1、若是,則繼續(xù)如下步驟II。
I2、若不是,繼續(xù)如下步驟Ⅶ。
II.讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表保存于內(nèi)存中,如圖6所示,該鏈表為一雙向鏈表,把整個(gè)nandflash物理文件FileNode連接起來。在讀,寫,刪除某邏輯文件時(shí),在鏈表里查找文件,得到邏輯文件對(duì)應(yīng)的物理文件數(shù)據(jù),以提高速度。
III.如步驟S703,打開需要讀取的邏輯文件,在物理文件鏈表里查找該邏輯文件,如步驟S704,根據(jù)打開是否成功進(jìn)行如下操作III1、若成功,則繼續(xù)如下步驟Ⅳ。
III2、若不成功,則繼續(xù)如下步驟Ⅶ。
IV.分配緩沖空間,其大小等于nandflash一個(gè)塊的大小,獲取邏輯文件對(duì)應(yīng)的物理文件數(shù)據(jù),并將其保存至緩沖空間。
V.如步驟S705,用戶讀取緩沖空間的數(shù)據(jù),由緩沖空間輸出數(shù)據(jù),此時(shí)用戶調(diào)用高級(jí)函數(shù)讀取數(shù)據(jù),剛打開文件時(shí)已把文件第一塊數(shù)據(jù)讀進(jìn)緩沖空間,邏輯文件位置0,如果高級(jí)函數(shù)讀取的數(shù)據(jù)在該緩沖空間,則從緩沖區(qū)里直接輸出數(shù)據(jù)給用戶;如步驟706,如果高級(jí)函數(shù)讀取的數(shù)據(jù)不在緩沖區(qū),則根據(jù)文件位置,計(jì)算訪問位置所在物理塊,把新的一塊數(shù)據(jù)讀進(jìn)緩沖空間,再從緩沖空間輸出數(shù)據(jù)給用戶。如步驟707,直至所有數(shù)據(jù)輸出給用戶。
VI.讀取完畢后,如步驟708,進(jìn)行關(guān)閉邏輯文件操作,釋放緩沖空間內(nèi)存和邏輯文件指針。
VII.結(jié)束流程。
如圖7所示,本發(fā)明的寫入文件具體控制流程如下i.如步驟S801,初始化文件系統(tǒng),如步驟S802,判斷該nandflash是否是本實(shí)施例中和“MALATAFS”(萬利達(dá))文件系統(tǒng),進(jìn)行如下操作i1、若是,則繼續(xù)如下步驟ii。
i2、若不是,繼續(xù)如下步驟xi。
ii.讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表。
iii.如步驟S803,在物理文件鏈表里查找是否存在該邏輯文件,進(jìn)行如下操作iii1、若存在,則繼續(xù)如下步驟xi。
iii2、若不存在,則繼續(xù)如下步驟iv。
iv.如步驟S804,打開需要寫入的邏輯文件,并分配緩沖空間,其大小等于nandflash一個(gè)塊的大小,如步驟S805,根據(jù)打開是否成功進(jìn)行如下操作iv1、若成功,則繼續(xù)如下步驟v。
iv2、若不成功,則繼續(xù)如下步驟xi。
v.如步驟S806把邏輯文件第一塊數(shù)據(jù)寫到緩沖空間。
vi.如步驟S807,在緩沖空間中保存數(shù)據(jù)。
vii.如步驟S808,若緩沖空間已滿,繼續(xù)如下步驟viii,否則,返回步驟vi。
viii.如步驟S809,從系統(tǒng)塊里分配一可使用的物理塊保存緩沖區(qū)數(shù)據(jù),分配成功則同時(shí)把該塊信息保存在(如表2的)物理文件信息分配表中,如步驟S810,調(diào)用底層函數(shù)把該塊數(shù)據(jù)保存在nandflash里,繼續(xù)如下步驟ix;分配不成功則繼續(xù)如下步驟x。
ix.如步驟S811,繼續(xù)邏輯文件下一塊數(shù)據(jù)的操作,如步驟S812,重復(fù)上述步驟vi至步驟viii,直至將所有邏輯文件數(shù)據(jù)保存到nandflash對(duì)應(yīng)物理塊。
x.如步驟S813,關(guān)閉邏輯文件,釋放緩沖空間和邏輯文件空間,更新系統(tǒng)塊數(shù)據(jù)和物理文件塊數(shù)據(jù),以保存新的邏輯文件輸入。
xi.結(jié)束流程。
綜上所述,盡管本發(fā)明的基本結(jié)構(gòu)、原理、方法通過上述實(shí)施例予以具體闡述,在不脫離本實(shí)用新型要旨的前提下,根據(jù)以上所述的啟發(fā),本領(lǐng)域普通技術(shù)人員可以不需要付出創(chuàng)造性勞動(dòng)即可實(shí)施多種變換/替代形式或組合,此處不再贅述。
權(quán)利要求
1.一種nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于在nandflash存儲(chǔ)器中尋找至少兩個(gè)有效塊,分別作為系統(tǒng)塊和物理文件塊,所述的系統(tǒng)塊反映nandflash的所有塊信息,所述的物理文件塊保存該nandflash所有物理文件信息。
2.如權(quán)利要求1所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于它采用如下步驟A、對(duì)nandflash存儲(chǔ)器進(jìn)行格式化操作,以尋找到的第1個(gè)好塊作為系統(tǒng)塊,所述的系統(tǒng)塊中包括設(shè)定的文件系統(tǒng)標(biāo)識(shí)字符串和nandflash各個(gè)塊的好壞、使用情況、作用信息;在nandflash里尋找第2個(gè)好塊作為物理文件塊,所述的物理文件體現(xiàn)為nandflash驅(qū)動(dòng)函數(shù),每個(gè)驅(qū)動(dòng)函數(shù)產(chǎn)生符合nandflash操作的控制時(shí)序,每個(gè)物理文件占用設(shè)定長度的字節(jié),其數(shù)據(jù)結(jié)構(gòu)包括文件名、文件擴(kuò)展名、文件大小和文件數(shù)據(jù)所要分配的nandflash物理塊信息;B、根據(jù)所述的系統(tǒng)塊和物理文件塊中的信息,完成邏輯文件的操作。
3.如權(quán)利要求2所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟A中,所述的系統(tǒng)塊第0頁第0個(gè)字節(jié)開始,前面的字節(jié)保存設(shè)定的nandflash文件系統(tǒng)標(biāo)識(shí)字符串,后續(xù)的字節(jié)保存每個(gè)塊的信息。
4.如權(quán)利要求2所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟A中,所述的物理文件塊中,從第0頁到最后一頁,以FileNode數(shù)據(jù)為一個(gè)單位,依次保存FileNode數(shù)據(jù);讀取其中的物理信息時(shí),從該物理文件塊第0頁到最后一頁,按256字節(jié)為一個(gè)單位依次讀取所有信息。
5.如權(quán)利要求2所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟B中,所述的邏輯文件體現(xiàn)為高級(jí)函數(shù),高級(jí)函數(shù)通過調(diào)用驅(qū)動(dòng)函數(shù)實(shí)現(xiàn)對(duì)nandflash物理存儲(chǔ)單元數(shù)據(jù)訪問,所述的系統(tǒng)塊根據(jù)nandflash每物理塊的作用和使用信息分配物理塊保存邏輯文件數(shù)據(jù)。
6.如權(quán)利要求2所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟B中,所述的邏輯文件所包含的基本信息包括邏輯文件操作緩沖區(qū),邏輯文件大小,文件操作邏輯位置,邏輯文件操作結(jié)果標(biāo)識(shí),邏輯文件對(duì)應(yīng)的物理文件。
7.如權(quán)利要求2-6中任意一項(xiàng)所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟A包括如下步驟A1、對(duì)整個(gè)nandflash刪除,根據(jù)nandflash控制時(shí)序要求,從第一塊到最后一塊依次發(fā)送刪除命令刪除;A2、分配等于nandflash總塊數(shù)字節(jié)的內(nèi)存空間,每個(gè)字節(jié)標(biāo)識(shí)每nandflash物理快的好、壞,使用情況、作用信息;A3、設(shè)置文件系統(tǒng)標(biāo)識(shí)字符串;A4、進(jìn)一步判斷整個(gè)nandflash存儲(chǔ)器好、壞塊,并且在分配的內(nèi)存空間中設(shè)置或刷新相應(yīng)標(biāo)志;A5、在nandflash里尋找第1個(gè)好塊作為系統(tǒng)塊,設(shè)置塊信息的結(jié)構(gòu);A6、在nandflash里尋找第2個(gè)好塊作為物理文件塊;A7、在系統(tǒng)塊中保存所設(shè)置的文件系統(tǒng)標(biāo)識(shí)符和內(nèi)存空間所保存的nandflash每個(gè)塊的好壞、使用情況、作用信息。
8.如權(quán)利要求2-6中任意一項(xiàng)所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟B包括如下步驟B1、讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表;B2、在物理文件鏈表里查找到需要讀取的邏輯文件,并分配緩沖空間;B3、獲取邏輯文件對(duì)應(yīng)的物理文件數(shù)據(jù),并將其保存至緩沖空間;B4、由緩沖空間輸出數(shù)據(jù);B5、關(guān)閉邏輯文件操作。
9.如權(quán)利要求2-6中任意一項(xiàng)所述的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,其特征在于所述的步驟B包括如下步驟b1、讀取系統(tǒng)塊信息和所有物理文件,并且創(chuàng)建物理文件鏈表;b2、打開需要寫入的邏輯文件,并分配緩沖空間;b3、把邏輯文件數(shù)據(jù)寫到緩沖空間;b4、由緩沖空間將邏輯文件數(shù)據(jù)保存到nandflash對(duì)應(yīng)物理塊;b5、釋放緩沖空間和邏輯文件空間,更新系統(tǒng)塊數(shù)據(jù)和物理文件塊數(shù)據(jù),以保存新的邏輯文件輸入。
全文摘要
一種涉及計(jì)算的nandflash文件系統(tǒng)實(shí)現(xiàn)方法,在nandflash存儲(chǔ)器中尋找至少兩個(gè)有效塊,分別作為系統(tǒng)塊和物理文件塊,系統(tǒng)塊反映nandflash的所有塊信息,物理文件塊保存該nandflash所有物理文件信息,主要步驟為A.對(duì)nandflash存儲(chǔ)器進(jìn)行格式化操作,以尋找到的第1個(gè)好塊作為系統(tǒng)塊,系統(tǒng)塊中包括設(shè)定的文件系統(tǒng)標(biāo)識(shí)字符串和nandflash各個(gè)塊的好壞、使用情況、作用信息;在nandflash里尋找第2個(gè)好塊作為物理文件塊,物理文件體現(xiàn)為nandflash驅(qū)動(dòng)函數(shù),每個(gè)驅(qū)動(dòng)函數(shù)產(chǎn)生符合nandflash操作的控制時(shí)序,B.根據(jù)系統(tǒng)塊和物理文件塊中的信息,完成邏輯文件的操作,本發(fā)明應(yīng)用性能強(qiáng),穩(wěn)定性和可靠性高。
文檔編號(hào)G06F17/30GK101013397SQ20071007309
公開日2007年8月8日 申請(qǐng)日期2007年2月8日 優(yōu)先權(quán)日2007年2月8日
發(fā)明者吳凱庭, 吳啟楠, 王燕飛, 梁仲宏 申請(qǐng)人:深圳萬利達(dá)電子工業(yè)有限公司