專利名稱:分離式文件存儲(chǔ)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及一種文件存儲(chǔ)系統(tǒng),尤其是涉及一種用于無(wú)線傳感網(wǎng)絡(luò)節(jié)點(diǎn)的分離式文件存儲(chǔ)系統(tǒng)。
背景技術(shù):
自2009年8月溫總理提出“感知中國(guó)”以來(lái),物聯(lián)網(wǎng)技術(shù)高速的發(fā)展著,傳統(tǒng)的傳感器正逐步實(shí)現(xiàn)微型化、智能化、信息化、網(wǎng)絡(luò)化,即逐步完善物聯(lián)網(wǎng)四大核心技術(shù)之一的無(wú)線傳感網(wǎng)技術(shù)。無(wú)線傳感網(wǎng)絡(luò)主要用于數(shù)據(jù)采集并通過(guò)網(wǎng)絡(luò)傳遞。傳感網(wǎng)絡(luò)中可能有大量的傳感數(shù)據(jù)需要本地存儲(chǔ)并集中發(fā)送,以達(dá)到減少通信次數(shù)、降低功耗、減小對(duì)網(wǎng)絡(luò)實(shí)時(shí)性要求、提升數(shù)據(jù)傳送成功率的目的。存儲(chǔ)大量的傳感數(shù)據(jù)需要一種適用的管理方式,而現(xiàn)有的基于Flash文件系統(tǒng)主要應(yīng)用于嵌入式系統(tǒng),對(duì)內(nèi)存限制不高,外存容量也比較大。這對(duì)于無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)內(nèi)存受限、以傳感數(shù)據(jù)為信息單元的應(yīng)用不適合。中華人民共和國(guó)國(guó)家知識(shí)產(chǎn)權(quán)局于2006年8月23日公開(kāi)了公開(kāi)號(hào)為CN1822230A的專利文獻(xiàn),名稱是基于NADA Flash存儲(chǔ)器文件系統(tǒng)的實(shí)現(xiàn)方法,它是建立NAND Flash存儲(chǔ)器文件系統(tǒng)控制塊索引,利用索引進(jìn)行鏈表化區(qū)塊分配和鏈表化垃圾數(shù)據(jù)收回,并以猝發(fā)式輸入輸出進(jìn)行數(shù)據(jù)讀寫(xiě),使用垃圾區(qū)塊回收機(jī)制來(lái)回收那些不再包含有效數(shù)據(jù)的塊。但是本方案在讀取和寫(xiě)入時(shí)仍然是以塊為操作對(duì)象,具有較大的內(nèi)存占用,難以適用于無(wú)線傳感網(wǎng)絡(luò)。
發(fā)明內(nèi)容本實(shí)用新型主要是解決現(xiàn)有技術(shù)所存在的讀寫(xiě)基本單位較大、對(duì)內(nèi)存占用大、對(duì)存儲(chǔ)器的擦寫(xiě)頻繁的技術(shù)問(wèn)題,提供一種以單條信息為讀寫(xiě)對(duì)象、占用內(nèi)存少、減少對(duì)存儲(chǔ)器擦寫(xiě)次數(shù)的分離式文件存儲(chǔ)系統(tǒng)。本實(shí)用新型針對(duì)上述技術(shù)問(wèn)題主要是通過(guò)下述技術(shù)方案得以解決的一種分離式文件存儲(chǔ)系統(tǒng),包括主控MCU、用于存儲(chǔ)文件目錄信息和位置信息的第一存儲(chǔ)器以及用于存儲(chǔ)文件內(nèi)容信息的第二存儲(chǔ)器,所述第一存儲(chǔ)器和第二存儲(chǔ)器分別與所述主控MCU連接。將文件的不同部分存儲(chǔ)于不同的存儲(chǔ)器,這樣在進(jìn)行刪除操作和格式化操作的時(shí)候只需要對(duì)第一存儲(chǔ)器進(jìn)行讀寫(xiě),減少了對(duì)第二存儲(chǔ)器的擦寫(xiě)次數(shù)。作為優(yōu)選,所述第一存儲(chǔ)器為E2PR0M存儲(chǔ)器。作為優(yōu)選,所述第二存儲(chǔ)器為Flash存儲(chǔ)器。E2pRom存儲(chǔ)器能夠單字節(jié)的讀寫(xiě),而Flash存儲(chǔ)器由于本身特性,對(duì)于存儲(chǔ)器的寫(xiě)操作只能將I寫(xiě)為0,反之不行,故對(duì)Flash進(jìn)行操作時(shí)需要先擦除后寫(xiě)入數(shù)據(jù),而Flash存儲(chǔ)器只能對(duì)一個(gè)數(shù)據(jù)段進(jìn)行擦除?;谝陨咸匦?,提出了將需要經(jīng)常進(jìn)行修改保存的目錄及頁(yè)面管理區(qū)存儲(chǔ)于可單字節(jié)讀寫(xiě)的E2pR0M存儲(chǔ)器中,而將數(shù)據(jù)量較大不需經(jīng)常修改的傳感數(shù)據(jù)存儲(chǔ)于Flash存儲(chǔ)器。[0011]本實(shí)用新型中的E2PR0M泛指可以直接進(jìn)行單字節(jié)讀寫(xiě)的存儲(chǔ)器,如FRAM(鐵電存儲(chǔ)器,無(wú)讀寫(xiě)次數(shù)的限制)。主控MCU控制數(shù)據(jù)在各存儲(chǔ)器中的讀取、寫(xiě)入和刪除。一種分離式文件存儲(chǔ)系統(tǒng)管理方法,具體為建立目錄區(qū)、頁(yè)面管理區(qū)和數(shù)據(jù)區(qū)三個(gè)邏輯區(qū)域,目錄區(qū)和頁(yè)面管理區(qū)位于E2PR0M存儲(chǔ)器,數(shù)據(jù)區(qū)位于Flash存儲(chǔ)器,目錄區(qū)存放文件目錄信息,頁(yè)面管理區(qū)放置文件各部分在數(shù)據(jù)區(qū)的具體位置信息,數(shù)據(jù)區(qū)存放文件內(nèi)容信息,文件內(nèi)容信息為傳感數(shù)據(jù),文件內(nèi)容信息寫(xiě)入和讀取的基本單位為一條傳感數(shù)據(jù),數(shù)據(jù)區(qū)包括若干個(gè)頁(yè)面(Page ),每一個(gè)頁(yè)面可以存儲(chǔ)若干條傳感數(shù)據(jù)。還建立有開(kāi)發(fā)預(yù)留區(qū)和功能輔助區(qū),開(kāi)發(fā)預(yù)留區(qū)和功能輔助區(qū)都位于E2PR0M存儲(chǔ)器,開(kāi)發(fā)預(yù)留區(qū)存放開(kāi)發(fā)過(guò)程中使用到的序列號(hào)、密鑰和系統(tǒng)參數(shù)中的一種或多種,功能輔助區(qū)包括存放文件的格式化標(biāo)志的格式化標(biāo)志區(qū)(FormatFlag)和存放要?jiǎng)h除文件Fid號(hào)的被刪文件區(qū)(FidToDelete)。文件Fid號(hào)為文件在目錄區(qū)中所占的目錄編號(hào),例如第一條目錄的文件Fid號(hào)為1,第一條目錄的文件Fid號(hào)為2,以此類推。目錄區(qū)包括若干個(gè)目錄數(shù)據(jù)單元,每個(gè)目錄數(shù)據(jù)單元包括文件名區(qū),存放文件名稱;文件類型區(qū)(FileType),存放文件類型,并說(shuō)明文件所存儲(chǔ)的信息類型、信息單元的長(zhǎng)度和數(shù)據(jù)區(qū)的一個(gè)頁(yè)面能存儲(chǔ)的數(shù)據(jù)條數(shù);起始頁(yè)面區(qū)(StartPage),存放文件的起始頁(yè)面號(hào),可用于查找文件的起始位置;頁(yè)面總數(shù)區(qū)(PageCount),存放文件占用的頁(yè)面數(shù)量,可用于指示文件占用存儲(chǔ)空間的大小;末頁(yè)信息區(qū)(LstCount),存放文件在最后一個(gè)頁(yè)面具有的傳感數(shù)據(jù)條數(shù),聯(lián)合PageCount能計(jì)算出文件總的傳感數(shù)據(jù)條數(shù)。信息單元具體指存儲(chǔ)于Flash數(shù)據(jù)區(qū)的最小讀寫(xiě)單元,即一條傳感數(shù)據(jù),每條傳感數(shù)據(jù)的長(zhǎng)度可根據(jù)應(yīng)用的不同來(lái)設(shè)定。頁(yè)面管理區(qū)包括若干個(gè)頁(yè)面管理單元,頁(yè)面管理單元的數(shù)量與數(shù)據(jù)區(qū)的頁(yè)面的數(shù)量相同,并且頁(yè)面管理單元與數(shù)據(jù)區(qū)的頁(yè)面按順序一一對(duì)應(yīng),每個(gè)頁(yè)面管理單元包括下一頁(yè)位置區(qū)(NextPage),存放下一個(gè)屬于文件的頁(yè)面的位置或者文件尾;從屬狀態(tài)區(qū)(Fid),存放本頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面的狀態(tài)。從屬狀態(tài)包括此頁(yè)為空和不為空兩種狀態(tài)。頁(yè)面管理單元具有三種情況UNextPage數(shù)據(jù)為O, Fid數(shù)據(jù)不為O,則表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面為文件尾;2、NextPage數(shù)據(jù)為O, Fid數(shù)據(jù)為O,表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面為空閑頁(yè);3、NextPage數(shù)據(jù)不為O, Fid數(shù)據(jù)不為O,表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面已被文件占用。頁(yè)面管理區(qū)為鏈表式結(jié)構(gòu),即每個(gè)頁(yè)面管理單元都指明本文件的下一個(gè)頁(yè)面管理單元的位置。而頁(yè)面管理單元與數(shù)據(jù)區(qū)頁(yè)面按順序一一對(duì)應(yīng),讀取數(shù)據(jù)區(qū)的數(shù)據(jù)時(shí)只要找到頁(yè)面管理單元就可以找到對(duì)應(yīng)的頁(yè)面。[0031]文件管理包括初始化、寫(xiě)入、讀取、格式化和刪除;格式化具體操作為刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),同時(shí)將格式化標(biāo)志設(shè)置為已格式化的狀態(tài);刪除具體操作為S101將要?jiǎng)h除文件的Fid號(hào)存入被刪文件區(qū);S102通過(guò)遍歷目錄區(qū)查找到要?jiǎng)h除的文件對(duì)應(yīng)的目錄數(shù)據(jù)單元;S103根據(jù)目錄數(shù)據(jù)單元的起始頁(yè)面區(qū)查找第一個(gè)頁(yè)面管理單元;S104根據(jù)各頁(yè)面管理單元的鏈?zhǔn)浇Y(jié)構(gòu)刪除所有本文件的頁(yè)面管理單元的數(shù)據(jù)直至最后一頁(yè);S105將被刪文件區(qū)中存放的要?jiǎng)h除文件的Fid號(hào)刪除。初始化操作具體為S201主控MCU上電,讀取格式化標(biāo)志,如果格式化標(biāo)志表明文件已經(jīng)格式化,則跳轉(zhuǎn)到步驟S203,如果格式化標(biāo)志表明文件未被格式化,則跳轉(zhuǎn)到步驟S202 ;S202刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),同時(shí)將格式化標(biāo)志設(shè)置為已格式化的狀態(tài),然后跳轉(zhuǎn)到步驟S203 ;S203讀取要?jiǎng)h除的文件信息,如果要?jiǎng)h除的文件信息為有文件要?jiǎng)h除的狀態(tài),則跳轉(zhuǎn)到步驟S204,否則結(jié)束初始化;S204遍歷目錄區(qū)和頁(yè)面管理區(qū),刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),減少文件碎片占用存儲(chǔ)空間的可能,結(jié)束初始化。寫(xiě)入的具體操作為S301判斷要寫(xiě)入的文件是否存在,如果存在則跳轉(zhuǎn)到步驟S302,否則跳轉(zhuǎn)到步驟S304 ;S302判斷是否還有頁(yè)面空間用于存儲(chǔ)數(shù)據(jù),如果沒(méi)有頁(yè)面空間則寫(xiě)入失敗,告知用戶空間不足,同時(shí)結(jié)束寫(xiě)入;如果還有頁(yè)面空間,則跳轉(zhuǎn)到步驟S303 ;S303根據(jù)文件的目錄數(shù)據(jù)單元中的信息計(jì)算本條數(shù)據(jù)在Flash存儲(chǔ)器中的位置,將數(shù)據(jù)寫(xiě)入相應(yīng)的位置,修改頁(yè)面總數(shù)區(qū)和末頁(yè)信息區(qū)的相應(yīng)信息,告知用戶寫(xiě)入成功,結(jié)束寫(xiě)入;S304新建文件,然后判斷文件建立是否成功,如果成功則跳轉(zhuǎn)到步驟S303,如果建立不成功則告知用戶空間不足,結(jié)束寫(xiě)入。讀取包括讀單條傳感數(shù)據(jù)和讀整個(gè)文件;讀單條傳感數(shù)據(jù)具體為判斷所要讀取的傳感數(shù)據(jù)是否文件內(nèi);如果不在文件內(nèi),則直接退出并告知用戶讀取失?。蝗绻谖募?nèi),則根據(jù)頁(yè)面管理區(qū)的信息和單個(gè)頁(yè)面存儲(chǔ)的數(shù)據(jù)條數(shù)計(jì)算該條傳感數(shù)據(jù)的位置并讀取數(shù)據(jù);讀整個(gè)文件具體為根據(jù)頁(yè)面管理區(qū)鏈表和總的數(shù)據(jù)條數(shù)將文件讀取存入指定的內(nèi)存位置。兩種讀取方法都需要讀總數(shù)據(jù)條數(shù),總數(shù)據(jù)條數(shù)=單個(gè)頁(yè)面數(shù)據(jù)條數(shù)容量X (文件占用頁(yè)面數(shù)量-I) +最后一個(gè)頁(yè)面具有的信息條數(shù)。Flash存儲(chǔ)器具有先擦除后寫(xiě)入的特性,現(xiàn)有的Flash文件系統(tǒng)需要有數(shù)據(jù)緩沖機(jī)制,而本實(shí)用新型提出的文件系統(tǒng)將文件的不同部分分別存于不同類型存儲(chǔ)器,并提供專用的文件名命名規(guī)則與讀寫(xiě)數(shù)據(jù)以單條傳感數(shù)據(jù)為數(shù)據(jù)單元的機(jī)制,不必使用數(shù)據(jù)緩沖
5機(jī)制的情況下實(shí)現(xiàn)了單條信息的實(shí)時(shí)寫(xiě)入,有效減小文件系統(tǒng)對(duì)內(nèi)存的占用?,F(xiàn)有技術(shù)存在的問(wèn)題現(xiàn)有的Flash文件系統(tǒng)最小操作單元為一個(gè)簇,采用數(shù)據(jù)緩沖的機(jī)制,無(wú)論是對(duì) 目錄還是文件數(shù)據(jù)進(jìn)行修改時(shí),都需要將整個(gè)簇的信息讀入內(nèi)存,而一個(gè)簇的大小一般為2K到32K字節(jié),這對(duì)內(nèi)存要求苛刻的單片機(jī)系統(tǒng)是難以忍受的。若采用現(xiàn)有的Flash文件系統(tǒng),即使采用如下優(yōu)化方式,都不能很好的解決問(wèn)題一、采用最小的文件擦除單元,讀寫(xiě)時(shí)目錄和文件一般各需占用512字節(jié),相比常規(guī)的用法能夠減少一半的內(nèi)存占用量,但占用內(nèi)存量仍然非常大,且存在間隙的寫(xiě)入一條傳感信息,每次寫(xiě)入都需擦除一次Flash,對(duì)將大大降低存儲(chǔ)器使用壽命。二、基于優(yōu)化辦法一,可提出在內(nèi)存儲(chǔ)傳感信息直到滿足減少對(duì)Flash擦寫(xiě)次數(shù)的要求,但該類型的應(yīng)用一般程序非常容易受到干擾,若系統(tǒng)復(fù)位,存于內(nèi)存中的數(shù)據(jù)將全部丟失,這種方法也是不可取。本實(shí)用新型提供的文件系統(tǒng)以單條傳感數(shù)據(jù)為一個(gè)讀寫(xiě)單元,只在文件新添加一頁(yè)時(shí)擦除頁(yè)面一次,每次寫(xiě)入一條傳感信息時(shí)可根據(jù)文件在目錄區(qū)的信息計(jì)算出要寫(xiě)入的位置,可直接寫(xiě)入。無(wú)論對(duì)經(jīng)常需要修改的文件目錄信息還是文件信息都不必將整個(gè)簇的所有信息讀入內(nèi)存,減少了對(duì)內(nèi)存的占用。數(shù)據(jù)區(qū)的頁(yè)面可以是一個(gè)或者若干個(gè)Flash存儲(chǔ)器最小擦除單元即Flash存儲(chǔ)器的物理頁(yè)。對(duì)于目錄和頁(yè)面管理區(qū),若存于Flash中,需要經(jīng)常修改,修改時(shí)勢(shì)必也需將最小擦除單元內(nèi)的所有數(shù)據(jù)讀出,本實(shí)用新型將該數(shù)據(jù)存于E2pR0M存儲(chǔ)器,直接寫(xiě)入即可,不必占用內(nèi)存。對(duì)于數(shù)據(jù)信息,每條信息寫(xiě)入Flash時(shí),先通過(guò)目錄和頁(yè)面管理區(qū)信息計(jì)算得出將要寫(xiě)入的信息位置,傳感數(shù)據(jù)屬于追加的方式,故不用先讀取數(shù)據(jù)至內(nèi)存,再修改內(nèi)存數(shù)據(jù),最后寫(xiě)回Flash的方式。該方法即保證了減少內(nèi)存的占用,也不必多次擦寫(xiě)Flash存儲(chǔ)器,保證了存儲(chǔ)器使用壽命。本實(shí)用新型帶來(lái)的有益效果是,減少了內(nèi)存占用、減少Flash存儲(chǔ)器的擦寫(xiě)次數(shù)、提高了存儲(chǔ)器的使用壽命。
圖I是本實(shí)用新型的一種物理結(jié)構(gòu)示意圖;圖2是本實(shí)用新型的一種總數(shù)據(jù)結(jié)構(gòu)示意圖;圖3是本實(shí)用新型的一種功能輔助區(qū)的結(jié)構(gòu)示意圖;圖4是本實(shí)用新型的一種目錄區(qū)的數(shù)據(jù)結(jié)構(gòu)示意圖;圖5是本實(shí)用新型的一種頁(yè)面管理區(qū)的數(shù)據(jù)結(jié)構(gòu)示意圖;圖6是本實(shí)用新型的一種數(shù)據(jù)區(qū)的數(shù)據(jù)結(jié)構(gòu)示意圖;圖7是本實(shí)用新型的一種初始化流程圖;圖8是本實(shí)用新型的一種寫(xiě)入流程提。圖中1、主控MCU,2、E2PR0M存儲(chǔ)器,3、Flash存儲(chǔ)器,4、開(kāi)發(fā)預(yù)留區(qū),5、功能輔助區(qū),6、目錄區(qū),7、頁(yè)面管理區(qū),8、數(shù)據(jù)區(qū),501、FormatFlag,502、FidToDelete, 503、功能輔助預(yù)留區(qū),601、文件名區(qū),602、FileType,603、StartPage,604、PageCount, 605、LstCount,701、NextPage, 702、Fid,801、Page。
具體實(shí)施方式
下面通過(guò)實(shí)施例,并結(jié)合附圖,對(duì)本實(shí)用新型的技術(shù)方案作進(jìn)一步具體的說(shuō)明。施例本實(shí)施例的一種分離式文件存儲(chǔ)系統(tǒng),如圖I所示,包括主控MCUl、E2PR0M存儲(chǔ)器2和Flash存儲(chǔ)器3,E2PR0M存儲(chǔ)器2和Flash存儲(chǔ)器3分別與主控MCUl連接?!N分離式文件存儲(chǔ)系統(tǒng)管理方法,如圖2所示,建立開(kāi)發(fā)預(yù)留區(qū)4、功能輔助區(qū)
5、目錄區(qū)6、頁(yè)面管理區(qū)7和數(shù)據(jù)區(qū)8五個(gè)邏輯區(qū)域,開(kāi)發(fā)預(yù)留區(qū)4、功能輔助區(qū)5、目錄區(qū)6和頁(yè)面管理區(qū)7位于E2PR0M存儲(chǔ)器,數(shù)據(jù)區(qū)8位于Flash存儲(chǔ)器。目錄區(qū)6存放文件目錄信息,頁(yè)面管理區(qū)7放置文件各部分在數(shù)據(jù)區(qū)8的具體位置信息,數(shù)據(jù)區(qū)8存放文件內(nèi)容信息,文件內(nèi)容信息為傳感數(shù)據(jù),文件內(nèi)容信息寫(xiě)入和讀取的基本單位為一條傳感數(shù)據(jù)。如圖6所示,數(shù)據(jù)區(qū)8包括若干個(gè)頁(yè)面(Page 801),每一個(gè)頁(yè)面可以存儲(chǔ)若干條傳感數(shù)據(jù)。開(kāi)發(fā)預(yù)留區(qū)4存放開(kāi)發(fā)過(guò)程中使用到的序列號(hào)、密鑰和系統(tǒng)參數(shù)中的一種或多種。如圖3所示,功能輔助區(qū)包括存放文件的格式化標(biāo)志的格式化標(biāo)志區(qū)(FormatFlag501)、存放要?jiǎng)h除文件Fid號(hào)的被刪文件區(qū)(FidToDelete 502)和功能輔助預(yù)留區(qū)503。功能輔助預(yù)留區(qū)503作為系統(tǒng)升級(jí)或者修改的預(yù)留使用區(qū)。如圖4所示,目錄區(qū)6包括若干個(gè)目錄數(shù)據(jù)單元,每個(gè)目錄數(shù)據(jù)單元包括文件名區(qū)601,存放文件名稱;文件類型區(qū)(FileType 602),存放文件類型,并說(shuō)明文件所存儲(chǔ)的信息類型、信息單元的長(zhǎng)度和數(shù)據(jù)區(qū)的一個(gè)頁(yè)面能存儲(chǔ)的數(shù)據(jù)條數(shù);起始頁(yè)面區(qū)(StartPage 603),存放文件的起始頁(yè)面號(hào),可用于查找文件的起始位置;頁(yè)面總數(shù)區(qū)(PageCount 604),存放文件占用的頁(yè)面數(shù)量,可用于指示文件占用存儲(chǔ)空間的大??;末頁(yè)信息區(qū)(LstCount 605),存放文件在最后一個(gè)頁(yè)面具有的信息條數(shù),聯(lián)合PageCount能計(jì)算出文件總的信息條數(shù)。 如圖5所示,頁(yè)面管理區(qū)7包括若干個(gè)頁(yè)面管理單元,頁(yè)面管理單元的數(shù)量與數(shù)據(jù)區(qū)8的頁(yè)面的數(shù)量相同,并且頁(yè)面管理單元與數(shù)據(jù)區(qū)的頁(yè)面按順序一一對(duì)應(yīng),每個(gè)頁(yè)面管理單元包括下一頁(yè)位置區(qū)(NextPage 701),存放下一個(gè)屬于文件的頁(yè)面的位置或者文件尾;從屬狀態(tài)區(qū)(Fid 702),存放本頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面的狀態(tài)。從屬狀態(tài)包括此頁(yè)為空和不為空兩種狀態(tài)。頁(yè)面管理單元具有三種情況UNextPage數(shù)據(jù)為O, Fid數(shù)據(jù)不為O,則表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面為文件尾;2、NextPage數(shù)據(jù)為0,F(xiàn)id數(shù)據(jù)為0,表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面為空閑頁(yè);3、NextPage數(shù)據(jù)不為O, Fid數(shù)據(jù)不為O,表示該頁(yè)面管理單元所對(duì)應(yīng)的頁(yè)面已被文件占用。頁(yè)面管理區(qū)7為鏈表式結(jié)構(gòu),即每個(gè)頁(yè)面管理單元都指明本文件的下一個(gè)頁(yè)面管理單元的位置。而頁(yè)面管理單元與數(shù)據(jù)區(qū)8頁(yè)面按順序一一對(duì)應(yīng),讀取數(shù)據(jù)區(qū)的數(shù)據(jù)時(shí)只要找到頁(yè)面管理單元就可以找到對(duì)應(yīng)的頁(yè)面。文件管理包括初始化、寫(xiě)入、讀取、格式化和刪除;格式化具體操作為刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),同時(shí)將格式化標(biāo)志FormatFlag501設(shè)置為已格式化的狀態(tài)(設(shè)為I);刪除具體操作為S101將要?jiǎng)h除文件的Fid號(hào)存入FidToDelete 502 ;S102通過(guò)遍歷目錄區(qū)查找到要?jiǎng)h除的文件對(duì)應(yīng)的目錄數(shù)據(jù)單元;S103根據(jù)目錄數(shù)據(jù)單元的起始頁(yè)面區(qū)查找第一個(gè)頁(yè)面管理單元;S104根據(jù)各頁(yè)面管理單元的鏈?zhǔn)浇Y(jié)構(gòu)刪除所有本文件的頁(yè)面管理單元的數(shù)據(jù)直至最后一頁(yè);S105從FidToDelete 502中刪除要?jiǎng)h除文件的Fid號(hào)。刪除和格式化所有操作不涉及到對(duì)Flash存儲(chǔ)器進(jìn)行讀、寫(xiě)或刪除。初始化操作如圖7所示,具體為S201主控MCU上電,讀取格式化標(biāo)志,如果格式化標(biāo)志表明文件已經(jīng)格式化(格式化標(biāo)志為I),則跳轉(zhuǎn)到步驟S203,如果格式化標(biāo)志表明文件未被格式化(格式化標(biāo)志為0,只有出廠時(shí)會(huì)將格式化標(biāo)志設(shè)定為0),則跳轉(zhuǎn)到步驟S202 ;S202刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),同時(shí)將格式化標(biāo)志設(shè)置為已格式化的狀態(tài),然后跳轉(zhuǎn)到步驟S203 ;S203讀取要?jiǎng)h除的文件信息,如果要?jiǎng)h除的文件信息為有文件要?jiǎng)h除的狀態(tài),則跳轉(zhuǎn)到步驟S204,否則結(jié)束初始化;S204遍歷目錄區(qū)和頁(yè)面管理區(qū),刪除目錄區(qū)的所有數(shù)據(jù)和頁(yè)面管理區(qū)的所有數(shù)據(jù),減少文件碎片占用存儲(chǔ)空間的可能,結(jié)束初始化。初始化操作也不涉及到對(duì)Flash存儲(chǔ)器進(jìn)行讀、寫(xiě)或刪除。此初始化在系統(tǒng)復(fù)位后都需執(zhí)行一次,其中提出的格式化文件系統(tǒng)的服務(wù)可根據(jù)用戶的需求直接調(diào)用。寫(xiě)入如圖8所示,具體操作為S301判斷要寫(xiě)入的文件是否存在,如果存在則跳轉(zhuǎn)到步驟S302,否則跳轉(zhuǎn)到步驟S304 ;S302判斷是否還有頁(yè)面空間用于存儲(chǔ)數(shù)據(jù),如果沒(méi)有頁(yè)面空間則寫(xiě)入失敗,告知用戶空間不足,同時(shí)結(jié)束寫(xiě)入;如果還有頁(yè)面空間,則跳轉(zhuǎn)到步驟S303 ;S303根據(jù)文件的目錄數(shù)據(jù)單元中的信息計(jì)算本條數(shù)據(jù)在Flash存儲(chǔ)器中的位置,將數(shù)據(jù)寫(xiě)入相應(yīng)的位置,修改頁(yè)面總數(shù)區(qū)和末頁(yè)信息區(qū)的相應(yīng)信息,告知用戶寫(xiě)入成功,結(jié)束寫(xiě)入;S304新建文件,然后判斷文件建立是否成功,如果成功則跳轉(zhuǎn)到步驟S303,如果建立不成功則告知用戶空間不足,結(jié)束寫(xiě)入。寫(xiě)入的時(shí)候不需要對(duì)整個(gè)頁(yè)面進(jìn)行讀出操作,通過(guò)目錄區(qū)信息找到數(shù)據(jù)區(qū)的空位,直接在空位寫(xiě)入即可。讀取包括讀單條傳感數(shù)據(jù)和讀整個(gè)文件;讀單條傳感數(shù)據(jù)具體為判斷所要讀取的傳感數(shù)據(jù)是否文件內(nèi);如果不在文件內(nèi),則直接退出并告知用戶讀取失??;如果在文件內(nèi),則根據(jù)頁(yè)面管理區(qū)的信息和單個(gè)頁(yè)面存儲(chǔ)的數(shù)據(jù)條數(shù)計(jì)算該條傳感數(shù)據(jù)的位置并讀取數(shù)據(jù);讀整個(gè)文件具體為根據(jù)頁(yè)面管理區(qū)鏈表和總的數(shù)據(jù)條數(shù)將文件讀取存入指定的·內(nèi)存位置。兩種讀取方法都需要讀總數(shù)據(jù)條數(shù),總數(shù)據(jù)條數(shù)=單個(gè)頁(yè)面數(shù)據(jù)條數(shù)容量X (文件占用頁(yè)面數(shù)量-I) +最后一個(gè)頁(yè)面具有的信息條數(shù)。分離式文件存儲(chǔ)系統(tǒng)還包括與主控MCU連接的指示燈,所述指示燈為紅綠雙色LED,在存儲(chǔ)系統(tǒng)空閑容量小于10%時(shí)指示燈顯示紅色,在存儲(chǔ)系統(tǒng)空閑容量大于10%時(shí)指示燈顯示綠色。本文中所描述的具體實(shí)施例僅僅是對(duì)本實(shí)用新型精神作舉例說(shuō)明。本實(shí)用新型所屬技術(shù)領(lǐng)域的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會(huì)偏離本實(shí)用新型的精神或者超越所附權(quán)利要求書(shū)所定義的范圍。盡管本文較多地使用了頁(yè)面管理區(qū)、數(shù)據(jù)區(qū)、讀取等術(shù)語(yǔ),但并不排除使用其它術(shù)語(yǔ)的可能性。使用這些術(shù)語(yǔ)僅僅是為了更方便地描述和解釋本實(shí)用新型的本質(zhì);把它們解釋成任何一種附加的限制都是與本實(shí)用新型精神相違背的。
權(quán)利要求1.一種分離式文件存儲(chǔ)系統(tǒng),其特征在于,包括主控MCU、用于存儲(chǔ)文件目錄信息和位置信息的第一存儲(chǔ)器以及用于存儲(chǔ)文件內(nèi)容信息的第二存儲(chǔ)器,所述第一存儲(chǔ)器和第二存儲(chǔ)器分別與所述主控MCU連接。
2.根據(jù)權(quán)利要求I所述的分離式文件存儲(chǔ)系統(tǒng),其特征在于,所述第一存儲(chǔ)器為E2PR0M存儲(chǔ)器。
3.根據(jù)權(quán)利要求I或2所述的分離式文件存儲(chǔ)系統(tǒng),其特征在于,所述第二存儲(chǔ)器為Flash存儲(chǔ)器。
專利摘要本實(shí)用新型公開(kāi)了一種分離式文件存儲(chǔ)系統(tǒng),旨在提供一種用于無(wú)線傳感網(wǎng)絡(luò)節(jié)點(diǎn)的分離式文件存儲(chǔ)系統(tǒng)。文件系統(tǒng)的物理結(jié)構(gòu)包括主控MCU以及分別與主控MCU連接的E2PROM存儲(chǔ)器和Flash存儲(chǔ)器。文件系統(tǒng)的邏輯結(jié)構(gòu)包括位于E2PROM存儲(chǔ)器的功能輔助區(qū)、目錄區(qū)、頁(yè)面管理區(qū)和位于Flash存儲(chǔ)器的數(shù)據(jù)區(qū)。目錄區(qū)存放文件目錄信息,頁(yè)面管理區(qū)放置文件在數(shù)據(jù)區(qū)的具體位置信息,數(shù)據(jù)區(qū)存放文件內(nèi)容信息,文件內(nèi)容信息寫(xiě)入和讀取的基本單位為一條傳感數(shù)據(jù)。數(shù)據(jù)區(qū)包括若干個(gè)頁(yè)面,每一個(gè)頁(yè)面可以存儲(chǔ)若干條傳感數(shù)據(jù)。本實(shí)用新型減少了內(nèi)存占用、減少Flash存儲(chǔ)器的擦寫(xiě)次數(shù),適用于無(wú)線傳感網(wǎng)絡(luò)節(jié)點(diǎn)。
文檔編號(hào)G06F12/02GK202736028SQ20122036979
公開(kāi)日2013年2月13日 申請(qǐng)日期2012年7月30日 優(yōu)先權(quán)日2012年7月30日
發(fā)明者盧勇, 劉家春 申請(qǐng)人:利爾達(dá)科技有限公司