白立朋,雷晶晶,鄧積微,李秋紅
(湖南大學物理與微電子科學學院微納技術研究中心,長沙 410082)
隨著各種數(shù)據(jù)采集設備的小型化、普及化,各種數(shù)據(jù)信息的采集變得更加方便。但是由于成本因素以及設備小型化帶來的限制,一般來說其數(shù)據(jù)處理能力有限。人們希望在方便地采集信息的同時,也可以更加便捷地對采集到的數(shù)據(jù)信息進行保存、刪除等操作。
為滿足便攜設備對采集數(shù)據(jù)管理的要求,本文以可編程存儲器AT24C256和單片機AT89C52為硬件基礎,提出了一種新的建立文件系統(tǒng)的方法。此方法使得對數(shù)據(jù)的管理更加靈活,適用于數(shù)據(jù)處理能力和存儲空間有限的情況。
AT24C256是Atmel公司生產(chǎn)的32 KB串行電可擦除的可編程存儲器。內(nèi)部共有256頁,每頁64字節(jié)存儲空間,存儲單元地址為16位。[1]其與Atmel公司生產(chǎn)的AT89C52的接口電路如圖1所示。AT24C256的SCL和SDA引腳與AT89C52的讀寫信號相連。本文僅使用一個AT24C256芯片,所以其片選端A0、A1接地。
圖1 AT24C256應用電路
文件系統(tǒng)的實現(xiàn)基于以下考慮:便攜設備數(shù)據(jù)處理能力有限;存儲空間有限。
順序存儲法可以有效地利用現(xiàn)有的存儲空間,但是涉及大量的數(shù)據(jù)操作,數(shù)據(jù)處理能力有限的單片機在速度上很難滿足其要求。一般的分區(qū)數(shù)據(jù)管理模式采用樹形目錄組織,由文件信息指向存儲地址信息,再由存儲地址信息指向?qū)嶋H數(shù)據(jù)存儲區(qū)[2-3]。而在本文的分區(qū)數(shù)據(jù)管理模式中,舍棄了對地址信息的存儲,將AT24C256分成了兩個部分:第一部分是文件存儲區(qū),其功能是存儲文件名等信息,用于目錄查詢;第二部分是數(shù)據(jù)存儲區(qū),其功能是存儲與文件名對應的具體數(shù)據(jù)。
本文將文件存儲區(qū)分成了32個子文件存儲區(qū),分別編號為0~31;同時,數(shù)據(jù)存儲區(qū)也被分成了32個子數(shù)據(jù)存儲區(qū),分別編號為0~31。按照編號的順序,每個子文件存儲區(qū)與相同編號的子數(shù)據(jù)存儲區(qū)相對應,通過數(shù)學計算得到它們的對應關系。圖2表示了從子文件存儲區(qū)對應到子數(shù)據(jù)存儲區(qū)的過程。
圖2 子文件存儲區(qū)對應到子數(shù)據(jù)存儲區(qū)的過程
文件系統(tǒng)的建立方法在已有的類似文件系統(tǒng)的基礎上進了如下的改進:
①只有文件存儲區(qū)和數(shù)據(jù)存儲區(qū)兩個分區(qū)。
②子文件存儲區(qū)的實際物理地址與子數(shù)據(jù)存儲區(qū)的實際物理地址直接相對應,不需要在子文件存儲區(qū)內(nèi)存儲地址信息,節(jié)省了存儲地址信息所需要的空間,尤其對于存儲空間有限的便攜設備而言較有意義。
在分區(qū)數(shù)據(jù)管理模式中:文件存儲區(qū)占用AT24C256的第一頁64字節(jié)的存儲空間,每個文件的信息(如文件名等)存儲在2個字節(jié)中(可以根據(jù)實際需要來改變其存儲空間的大小)。這樣,文件存儲區(qū)內(nèi)共32個子文件存儲區(qū),正好占用了芯片的第一頁存儲空間。數(shù)據(jù)存儲區(qū)占用剩余的255頁,與文件存儲區(qū)相對應,也分為32個子數(shù)據(jù)存儲區(qū)。其中前31個子數(shù)據(jù)存儲區(qū)的存儲空間大小為1 KB,第32個子數(shù)據(jù)存儲區(qū)的存儲空間為960字節(jié)。
首先掃描文件存儲區(qū),如果掃描到的子文件存儲區(qū)為空,則寫入文件名等信息;然后通過數(shù)學計算得到相對應的子數(shù)據(jù)存儲區(qū)的首地址,再將待存儲的數(shù)據(jù)寫入子數(shù)據(jù)存儲區(qū)。當一個子數(shù)據(jù)存儲區(qū)的空間無法滿足一個文件的存儲要求時,繼續(xù)掃描文件存儲區(qū),遇到下一個空子文件存儲區(qū)后,寫入文件名等信息,然后計算得到相對應的子數(shù)據(jù)存儲區(qū)的首地址,繼續(xù)寫入剩余的數(shù)據(jù)。也就是說,在數(shù)據(jù)存儲上可以實現(xiàn)物理存儲地址的不連續(xù)存儲。數(shù)據(jù)存儲流程如圖3所示。
通過下面的地址計算公式,可直接在函數(shù)中計算出相應的子數(shù)據(jù)存儲區(qū)首地址:add_data=add/2*1024+64;
每個子文件存儲區(qū)占2字節(jié),所以add/2為子文件存儲區(qū)的編號。每個子數(shù)據(jù)區(qū)空間大小為1 024字節(jié),而數(shù)據(jù)存儲區(qū)是從第64個存儲單元開始的,所以add/2*1 024+64為相應子數(shù)據(jù)存儲區(qū)的首地址。
數(shù)據(jù)存儲函數(shù)如下:
此方法不需要對地址信息的寫入與讀取操作,因而有更高的效率,并節(jié)省了相應的存儲空間。尤其是在多次存儲和讀出不同文件的數(shù)據(jù)時,效率上的優(yōu)勢將會更加明顯。
圖3 數(shù)據(jù)存儲流程
首先在文件存儲區(qū)找到要讀取的文件名,然后通過數(shù)學計算得到相對應的子數(shù)據(jù)存儲區(qū)首地址,再依次將數(shù)據(jù)讀出。如果數(shù)據(jù)是不連續(xù)存儲的,則在讀完一個子數(shù)據(jù)存儲區(qū)的數(shù)據(jù)后,繼續(xù)掃描后面的子文件存儲區(qū)找到相應的子數(shù)據(jù)存儲區(qū)地址,繼續(xù)將數(shù)據(jù)讀出,直到將數(shù)據(jù)全部讀出為止。
首先在文件存儲區(qū)找到要刪除的文件名并將其刪除,然后通過數(shù)學計算得到相對應的子數(shù)據(jù)存儲區(qū)首地址,再將其中的數(shù)據(jù)全部刪除。如果數(shù)據(jù)是不連續(xù)存儲的,則在刪除完一個子數(shù)據(jù)存儲區(qū)的數(shù)據(jù)后,繼續(xù)掃描后面的子文件存儲區(qū)找到相應的子數(shù)據(jù)存儲區(qū)地址,繼續(xù)刪除操作,直到將數(shù)據(jù)全部刪除為止。
本文在已有的文件系統(tǒng)建立方法的基礎上進行了改進。與順序存儲方式相比,在存儲和讀取數(shù)據(jù)的速度上有明顯的優(yōu)勢,而與已有的分區(qū)數(shù)據(jù)管理模式相比,最大的特點是省去一般分區(qū)數(shù)據(jù)管理模式中的地址信息存儲區(qū)。具體有如下優(yōu)點:
①在存儲和讀取文件的數(shù)量較大時,速度上的優(yōu)勢更明顯。
②由于節(jié)省了地址信息存儲區(qū),使得相應的存儲空間節(jié)省出來。因為每個子數(shù)據(jù)存儲區(qū)都會對應一個地址信息存儲區(qū),所以這一優(yōu)勢在劃分出更多子數(shù)據(jù)存儲區(qū)的情況下更加明顯。
③程序?qū)崿F(xiàn)上更為簡單。
雖然具有以上優(yōu)點,但是此模式依然沒有克服分區(qū)數(shù)據(jù)管理模式的缺點:不能有效地利用存儲空間;存儲文件的數(shù)量受到限制。所以仍然需要探索新的算法來建立文件系統(tǒng),以滿足在數(shù)據(jù)處理能力有限的情況下對于效率和存儲空間利用率的要求。
[1]Atmel.AT24C256芯片手冊.
[2]周明建.AT24C512中數(shù)據(jù)的文件系統(tǒng)化管理[J].單片機與嵌入式系統(tǒng)應用,2004(10):47-49.
[3]單傳偉,張東來.串行EEPROM中數(shù)據(jù)文件系統(tǒng)的建立[J].微計算機信息,2006(22):288-290.