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