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