基于M25P32 SPI Flash的TFFS設(shè)計與實現(xiàn)
在VxWorks的應(yīng)用系統(tǒng)中,基于flash的文件系統(tǒng)通常都采用DOS+FAT+FTL的結(jié)構(gòu)。
一般情況下,磁盤文件系統(tǒng)大多是基于sector的文件系統(tǒng),磁盤按照物理上分為柱面、磁盤、扇區(qū),扇區(qū)是基于塊的文件系統(tǒng)操作的基本存儲單位,磁盤的容量都是根據(jù)這些數(shù)據(jù)計算出來的,每個扇區(qū)大小通常都是512bytes。
VxWorks文件系統(tǒng)中的DOSFS是MS-DOS兼容的文件系統(tǒng),可基于塊對物理介質(zhì)進行操作。由于Fish的物理特性,對Flash作基于塊(不同于Flash的擦除塊)的操作必須由軟件作封裝實現(xiàn),這就是TFFS所起的作用。
1 VxWorks文件系統(tǒng)的總體結(jié)構(gòu)
VxWorks文件系統(tǒng)的總體結(jié)構(gòu)以及TFFS在整個文件系統(tǒng)的位置如圖l所示。
Tomado下的TFFS文件系統(tǒng)是Tornado的一個可選組件,它可為種類繁多的Flash設(shè)備提供一個統(tǒng)一的塊設(shè)備接口。在Tornado2.2版本中自帶的TFFS版本為2.0,在文件系統(tǒng)中,TFFS的功能相當(dāng)于磁盤驅(qū)動,通過TFFS可使上層的DOSFS或RTll文件系統(tǒng)像操作普通的標(biāo)準(zhǔn)磁盤一樣來操作Flash。
2 TFFS文件系統(tǒng)的分層
圖2所示為TFFS文件系統(tǒng)的分層圖。圖中的Core Layer內(nèi)核層可將其他層連接起來協(xié)同工作;翻譯層主要實現(xiàn)DOS和TFFS之間的交互、管理文件系統(tǒng)和Flash各個物理塊的關(guān)系,同時支持TFFS的各種功能,如磨損均衡、錯誤恢復(fù)等;MTD層執(zhí)行底層的程序驅(qū)動(map、read、write、erase等);socket層的名稱來源于可以插拔的socket存儲卡,主要提供與具體的硬件板相關(guān)的驅(qū)動。
3 FTL層分析
FTL是TFFS文件系統(tǒng)的核心,它是PCMCIS的一項標(biāo)準(zhǔn),意思是Flash Translation Laycr Specification,這種類型的文件系統(tǒng)是目前嵌入式系統(tǒng)中最流行的,很多公司都提供這種文件系統(tǒng)的相關(guān)解決方案。
PTL為DOS BPB/FAT與Flash之間的中間層,F(xiàn)TL利用現(xiàn)成的基于塊的文件系統(tǒng)(例如DOSFS)來實現(xiàn)應(yīng)用層的操作,實質(zhì)上就是在Flash設(shè)備上模擬磁盤塊設(shè)備的實現(xiàn),為基于塊的文件系統(tǒng)提供統(tǒng)一的接口。FTL通過以下幾步來模擬磁盤驅(qū)動:首先是在Flash擦除塊之外定義小的讀寫塊(相當(dāng)于磁盤扇區(qū));其次是邏輯扇區(qū)(對塊文件系統(tǒng)如DOSFS呈現(xiàn)的地址)和物理地址(Flash的實際地址)之間的轉(zhuǎn)換;然后管理Flash,使得能在空閑的地方寫入數(shù)據(jù)。其核心就是將DOS上的扇區(qū)映射到Flash上去。
評論