1.Flash設備總體上分爲兩類:NorFlash和NandFlash。它們具有完全不同的數據訪問方式,但也都是基於塊的擦除;
- NorFlash
(1)適合存儲少量代碼;
(2)支持芯片內執行(XIP,execute inplace);
(3)具有高傳輸效率;
(4)寫入和擦除速度很低;
(5)可以對單個字節寫入而不對周圍其他字節造成影響;
(6)有獨立的地址線來尋址,可以很容易地存取其內部的每個字節;
(7)佔據了1~16MB閃存市場的大部分;
(8)每個塊的最大擦寫次數是10萬次;
(9)很少出現位反轉的問題;
(10)在NorFlash器件上運行代碼不需要任何的軟件支持;
- NandFlash
(1)是高數據存儲密度的理想解決方案;
(2)寫入和擦除速度很快;
(3)應用的難度在於對其的管理,且需要特殊的系統接口;
(4)不支持單個字節的寫入操作,只能採取面向一個頁面的寫入操作,每個頁面通常爲2112個字節(2048個數據字節+64個空閒字節);
(5)使用同一數據線進行操作,每次數據讀寫操作都要分爲幾個週期使用這一組相同的信號線進行命令、地址、數據的傳輸;
(6)主要使用在8~128MB的產品中;
(7)每個塊的最大擦寫次數是百萬次;
(8)容易出現位反轉問題,需要同時使用錯誤探測/錯誤更正(EDC/ECC)算法;
(9)壞塊是隨機分佈的;
(10)在NAND器件上通常需要驅動程序支持,及內存技術驅動程序(MTD);
2.VxWorks爲Flash設備驅動在CBIO中間層之下又提供了一個TFFS中間層來直接負責與底層FLASH設備的交互。TFFS中間層存在的原因在於FLASH不同於硬盤設備的特殊操作方式:FLASH設備寫入前必須進行擦除,而且擦除是面向塊的,即每次只能擦除一個塊。而且FLASH的頁面大小與硬盤設備的基本操作單元(扇區)完全不同,所以需要在CBIO中間層與FLASH設備驅動之間插入一個新的層次——TFFS中間層。
3.TFFS中間層對FLASH設備進行封裝,提供一個普通硬盤設備接口給上層使用,即通過TFFS中間層,文件系統(CBIO中間層)就像操作一個硬盤設備一樣操作底層FLASH設備。
4.FLASH設備驅動內核層次如下圖所示
FLASH設備驅動將包含在TrueFFs中間層實現中,具體的由其中的MTD層和socket層兩個子層次實現。MTD層完成主要驅動函數(設備讀寫、擦除)的實現,而socket層則完成設備電源管理、設備探測及設備容量探測函數的實現。
5.TrueFFs初始化
作爲中間層和驅動本身,需要在初始化時完成三方面的工作:
(1)內部初始化:包括各子層次所需資源分配;
(2)MTD層和socket層初始化,這兩個子層次實現爲FLASH設備驅動本身,必須完成這兩個子層次向TrueFFs其他子層次(核心層)的註冊;
(3)TrueFFs中間層向其上層(CBIO中間層)的註冊;
6.TrueFFs初始化過程總結:
(1)TrueFFs中間層中核心層、映射層、socket層驅動在VxWorks操作系統啓動過程中完成初始化工作;
(2)TrueFFs中MTD層在調用tffsDevCreate函數進行FLASH設備創建時完成初始化,並同時完成與socket層驅動的對接,二者共同完成FLASH設備的驅動。