基于M25P32 SPI Flash的TFFS設計與實現
在VxWorks的應用系統中,基于flash的文件系統通常都采用DOS+FAT+FTL的結構。
一般情況下,磁盤文件系統大多是基于sector的文件系統,磁盤按照物理上分為柱面、磁盤、扇區,扇區是基于塊的文件系統操作的基本存儲單位,磁盤的容量都是根據這些數據計算出來的,每個扇區大小通常都是512bytes。
VxWorks文件系統中的DOSFS是MS-DOS兼容的文件系統,可基于塊對物理介質進行操作。由于Fish的物理特性,對Flash作基于塊(不同于Flash的擦除塊)的操作必須由軟件作封裝實現,這就是TFFS所起的作用。
1 VxWorks文件系統的總體結構
VxWorks文件系統的總體結構以及TFFS在整個文件系統的位置如圖l所示。

Tomado下的TFFS文件系統是Tornado的一個可選組件,它可為種類繁多的Flash設備提供一個統一的塊設備接口。在Tornado2.2版本中自帶的TFFS版本為2.0,在文件系統中,TFFS的功能相當于磁盤驅動,通過TFFS可使上層的DOSFS或RTll文件系統像操作普通的標準磁盤一樣來操作Flash。
2 TFFS文件系統的分層
圖2所示為TFFS文件系統的分層圖。圖中的Core Layer內核層可將其他層連接起來協同工作;翻譯層主要實現DOS和TFFS之間的交互、管理文件系統和Flash各個物理塊的關系,同時支持TFFS的各種功能,如磨損均衡、錯誤恢復等;MTD層執行底層的程序驅動(map、read、write、erase等);socket層的名稱來源于可以插拔的socket存儲卡,主要提供與具體的硬件板相關的驅動。

3 FTL層分析
FTL是TFFS文件系統的核心,它是PCMCIS的一項標準,意思是Flash Translation Laycr Specification,這種類型的文件系統是目前嵌入式系統中最流行的,很多公司都提供這種文件系統的相關解決方案。
PTL為DOS BPB/FAT與Flash之間的中間層,FTL利用現成的基于塊的文件系統(例如DOSFS)來實現應用層的操作,實質上就是在Flash設備上模擬磁盤塊設備的實現,為基于塊的文件系統提供統一的接口。FTL通過以下幾步來模擬磁盤驅動:首先是在Flash擦除塊之外定義小的讀寫塊(相當于磁盤扇區);其次是邏輯扇區(對塊文件系統如DOSFS呈現的地址)和物理地址(Flash的實際地址)之間的轉換;然后管理Flash,使得能在空閑的地方寫入數據。其核心就是將DOS上的扇區映射到Flash上去。
評論