《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > VxWorks文件系統、Flash的TFFS設計與實現
VxWorks文件系統、Flash的TFFS設計與實現
摘要: 一般情況下,磁盤文件系統大多是基于sector的文件系統,磁盤按照物理上分為柱面、磁盤、扇區,扇區是基于塊的文件系統操作的基本存儲單位,磁盤的容量都是根據這些數據計算出來的,每個扇區大小通常都是512bytes。
Abstract:
Key words :

0 引言

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上去。

為了實現DOS層從邏輯上看扇區是連續的,可隨時對任意bit讀寫操作,FTL必須提供對Flash芯片的管理,包括向上層(DOS層)提供可以任意讀寫的操作接口,向下對Flash的擦除、寫入、讀取統一管理,同時還必須提供磨損均衡,以防止一個擦除塊提前損壞。

3.1 FTL的啟動過程分析

在我們調用函數tffsDevCreate創建TFFS文件系統時,會以參數FL_MOUNT_VOLUME調用函數flcall→mountvolume→flmount→mountFTL,函數mountFTL是FTL層的加載函數人口,處理過程首先是初始化FTL,然后就可按下列步驟進行:

(1)查找第一個合法的unit頭信息

合法性的判斷依據是unit header頭上的標志CISF..FTL100和部分頭部的flag信息,由于bsp已把FS的相關信息注冊到FTL的數據結構中,所以,FTL層可以找到第一塊unit,并可以向后查,直到找到合法的unit為止。

(2)檢驗信息合法性

將所有有用的信息都讀出到內部數據結構中后,即可檢驗信息合法性。由于unit header中的Unit ID和擦除次數都相同,所以整個文件系統的共用信息都可以從首先找到的頭中讀出來。

(3)給Mount每一個unit建立page表

這是mount最重要的過程,對每個unit調用mountunit()函數,并在mountunit()函數中首先判斷,如果是非法unit,則作為交換unit,然后對每個BAM選項進行處理,并對垃圾BAM、空閑BAM進行統計,如果是緩沖的BAM數據和交換page的VBM,則將此page的邏輯扇區信息記錄到內存的page表中,以便后續映射訪問查詢使用,而對于非緩沖的BAM數據,則不作處理,另外,對于交換page的VBM,則進行記錄??紤]到上述過程,可見其系統中的page VBM和緩沖的數據BAM分布在各個unit的各個角落,需要將所有的VBM和緩沖數據BAM收集起來建立整個交換page表,這是FTL標準層設計時就要決定的。

(4)檢驗邏輯unit的完整性

當所有的unit都mount完成后,每個邏輯unit都應存在,否則mount失敗。

(5)判斷并關閉交換page

如果系統中已存在交換page,則對系統中存在的交換page進行關閉操作,以便后面檢查page的完整性。

(6)檢查page的完整性

系統中的page表必須是完整的,這個表中包含有緩沖的數據BAM映射信息和更重要的page映射信息,因此,缺少任何一個,都將導致DOS的虛擬扇區無法映射到相應的邏輯扇區。

從上述過程可見,整個mount過程是將文件系統信息讀入內存數據結構并檢驗的過程,這個Mount PTL過程完成后,mountvolume ()函數即將隱蔽的0扇區和DOS的啟動扇區信息讀入內存數據結構,這樣,DOS就可以訪問FTL底層扇區了。

3.2 TFFS的塊映射

圖3中,FTL層將DOS上連續的扇區映射到Flash上某個R/W block塊中,同時在某個位置記錄一個映射表(稱為MAP表),該表中記錄了DOS的扇區映射到Flash中的哪個block,當DOS要進行讀操作時,FTL首先查詢這個MAP,以獲得映射信息,然后讀取相應的block信息并返回給DOS,從而實現讀映射。當DOS需要寫入操作時,可能存在將bit0修改為1的情況,于是FTL層將申請一個新的block塊,并將新信息寫入,然后修改map信息,記錄這個DOS扇區已經重新映射了,從而實現寫映射。所以,從邏輯上看,FTL層就實現了DOS扇區的映射和FLASH的寫入管理。



3.3 垃圾收集過程

FTL格式化后,可用扇區將被不斷申請使用,原有扇區被不斷的廢棄,系統中可用的free扇區越來越少,但這并不是由于上層DOS真的使用了這么多扇區,而是FTL為了方便管理、為了不需要每次擦除一塊而付出的管理代價。所以,當系統中的可用扇區少于用戶要申請寫入的扇區時,FTL層就必須解決這些垃圾問題,這個過程在FTL中稱為垃圾回收(garbage collect)。

當FTL中的可用sector小于用戶要申請的扇區時,系統將啟動垃圾收集,但系統中有很多個unit,到底收集哪個unit呢?FTL會考慮磨損均衡,它將采用一個偽隨機的算法來決定收集策略:即用4/256的幾率選擇磨損情況少的塊來收集;252/256的幾率則根據垃圾最多為第一條件,當垃圾一樣時,判斷磨損次數小的優先選擇。

3.4 FFL創建的DOS

TFFS的格式化函數需要調用tffsDevFormat來格式化,而不需要調用dosFsVolFormat來格式化;另外,在tffsDevFormat格式化參數中,需要傳人的參數含有FAT個數參數,其原因是DOS是FTL層創建的,而不是在FTL基礎上創建的,下面是TFFS的整個格式化過程:

tffsDevFormat→flcall(FL_FORMAT_VOLUME)→formatVolume→Format→formatFTL;

其中,函數formatFTL是執行FTL層格式化的操作函數,操作時,首先根據格式化參數和BSP參數對內部數據結構初始化;然后再對每個unit進行格式化,在擦除后,即可寫入unitheader信息和控制BAM值;之后寫入unit No;最后申請每個page的空間;

上述formatFTL函數執行完以后,FTL就已經準備好,可以接受上層的扇區讀寫函數了(當然還沒有內容可以讀寫)。

在函數formatVolume中,mount可進行卷操作,當內存的數據結構準備好后,FTL層即可調用函數flDosFormat來創建DOS。其中首先創建隱藏扇區,以用于記錄該卷的部分信息,然后分別創建MBR、FAT和ROOT目錄;這樣,DOS創建完成后,再執行dosFsDevCreat函數,當然就無須格式化,找到0扇區自然就找到了MBR,因為DOS是FTL創建的。

從更深層次講,FTL層之所以創建DOS層,是因為只有FTL層才知道有哪些扇區是可以供DOS使用的,哪些扇區是DOS不能使用的(作為FTL層管理使用),也正是因為DOS層不了解FTL層的運作情況,所有的扇區映射關系都被FTL層隱蔽,因而導致DOS層無法在上層作出有利于Flash擦寫等優化動作,如大文件寫入時的字節數更新,FAT表更新等操作,都會嚴重浪費FTL層的映射關系運算。

4 基于M25P32 SPI Flash的TFFS設計

對于TFFS的實現,涉及到config.h、sysTffs.c、tffsConifg.c、tffsMtd.c、Makefile幾個文件的配置和修改,其中編譯是通過建立一個downloadalbe的tomado工程,來把這幾個.c源文件編譯進去生成.pl文件提供給bsp工程,而后由bsp工程把.pl文件編譯進去,從而生成bootable image。

4.1 Config.h的相關配置

要在vxworks映像中加入TFFS文件系統,需要加入相關的組件,雖然也可以在該文件中直接加入相應的配置宏,但很容易造成遺漏和有些需要依賴的宏沒有定義或者沖突,本文采用的方法是建一個bootable的tornado工程,而后在這個工程中通過加入TFFS和DOSFS的相關組件來編譯這個工程,從而生成一個prjParams.h文件,該文件里就包含了剛剛加入的組件對應的宏,因而,組件與組件之間依賴也是安全的,不會有任何沖突,最后再在Config.h中包含這個文件即可。

4.2 sysTffs.c文件的修改

該文件用于提供socket層的bsp實現代碼。如果鏡像文件包含TFFS相關組件,那么,系統啟動時就會按照如下過程自動調用sysTffsInit()函數:

usrRoot()→tffsDrv()→flInit()→flRegisterComponent ()→sysTffslnit ()

sysTffsInit ()函數會依次調用socket注冊函數simmRegisterOfsl (),注冊函數數量視需要構建的文件系統數量而定,本文構建了1個文件系統ofsl,并在simmRegisterOfsl()函數中對文件系統的基地址進行了設置,同時對FLSocket()結構體中的毀掉處理函數進行了掛接,掛接函數也在該文件中實現,如卡上電、斷電、寫保護等。

對sysTffsFormaOfsl()函數的格式化參數可根據自己的需要進行修改。

4.3 tffsConfig.c和tffSMtd.c文件的修改

tffsConfig.c文件的修改就是在mtdTalbe []表中注冊Flash識別函數iUnifiedIdentifyOfsl();而tffsConfig.c文件則用于實現iUnifiedldentifyOfsl()函數,iUnifiedIdentifyOfsl()函數對FLFlash結構體中的回調函數進行了掛接,如flash的讀、寫、擦除等,掛接函數的具體實現可在Dry_MvSFlash.cpp文件中以一個類的方式提供針對M25P32 spi Flash操作的所有驅動接口。

4.4 TFFS文件系統的安裝

通過上面的過程,socket層和mtd層就都準備好了,下面便可以安裝tffs文件系統。安裝時,首先用sysTffsFormatOfsl()函數按照上面設定的參數格式化TFFS文件系統,而后通過usrTffsConfig(0,0,”ofsl”)函數接口在已建好的TFFS上掛接DOS文件系統,成功后,即可通過open、read、write等來操作Flash上的文件系統,也可以通過FTP方式用IE訪問該文件系統中的內容。

4.5 Makefile文件的修改

對于Makefile的修改非常簡單,因為幾個和TFFS相關的源文件都是以.pl的方式被鏈人bsp工程的,所以只需要在makefile文件中把這個文件加入即可,即在makefile中加了如下的宏定義:

MACH_EXTRA+=../ArmPri/ARMARCH5gnu/ArmBspPrj.pl

5 結束語

本文對VxWorks下TFFS文件系統的層次結構和FTL層的啟動過程、塊映射算法、垃圾回收算法以及用FTL創建DOSFS進行了分析,給出了在M25P32 SPI Flash上創建TFFS文件系統和將TFFS掛在DOSFS的實現方法。通過對TFFS核心層FIL的分析給出的TFFS實現方法,可以從更基礎的層面來認識VxWorks中的TFFS文件系統,從而給TFFS文件系統的問題定位和實現帶來新的方法。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          aa级大片欧美三级| 亚洲人成网站精品片在线观看| 欧美午夜免费影院| 欧美精品日韩| 亚洲一区二区精品在线观看| 欧美有码在线视频| 国产日韩一区在线| 欧美精品在线免费观看| 欧美高清视频在线播放| 国产精品亚洲激情| 亚洲婷婷在线| 欧美+日本+国产+在线a∨观看| 亚洲精品影视在线观看| 国产午夜亚洲精品不卡| 性欧美video另类hd性玩具| 亚洲图片欧美日产| 国语自产精品视频在线看| 狠狠久久婷婷| 乱人伦精品视频在线观看| 久久国产精品久久久久久电车| 久久久夜夜夜| 国产精品成人午夜| 亚洲欧美春色| 亚洲剧情一区二区| 欧美激情一区二区三区高清视频| 在线不卡欧美| 久久亚洲欧美国产精品乐播| 亚洲女人小视频在线观看| 激情六月综合| 欧美系列电影免费观看| 国产午夜精品理论片a级大结局| 欧美一区二区久久久| 欧美成人影音| 国产午夜精品久久久久久免费视| 日韩午夜免费| 国产欧美日韩免费看aⅴ视频| 欧美日韩国产不卡在线看| 免费在线亚洲| 免费不卡在线观看av| 国产欧美一区二区白浆黑人| 亚洲高清视频在线观看| 1024欧美极品| 99re热精品| 久久精品五月婷婷| 国产精品素人视频| 久久久噜噜噜久久中文字免| 韩国精品主播一区二区在线观看| 91久久精品国产| 欧美大胆人体视频| 一本久久知道综合久久| 久久国内精品自在自线400部| 午夜精品99久久免费| 欧美日韩免费高清一区色橹橹| 久久国产婷婷国产香蕉| 日韩视频在线永久播放| 亚洲综合大片69999| 国产精品区一区| 黑丝一区二区三区| 国产精品国产亚洲精品看不卡15| 亚洲欧美日韩国产中文在线| 1769国内精品视频在线播放| 欧美高清在线视频| 亚洲神马久久| 欧美11—12娇小xxxx| 亚洲欧美一区二区激情| 亚洲乱码国产乱码精品精天堂| 国模大胆一区二区三区| 国产美女精品人人做人人爽| 国产精品高潮呻吟| 国产精品久久久久久久久果冻传媒| 欧美三区在线| 亚洲第一精品夜夜躁人人躁| 久久久久久久综合日本| 亚洲无吗在线| 欧美成人精品影院| 国产美女精品在线| 亚洲网友自拍| 久久在线精品| 麻豆精品精品国产自在97香蕉| 国产欧美精品在线播放| 亚洲在线视频免费观看| 欧美一区二区三区四区夜夜大片| 欧美一区国产在线| 国产自产v一区二区三区c| 亚洲欧美日韩综合国产aⅴ| 久久综合导航| 国产午夜精品麻豆| 久久国产一区| 中文高清一区| 欧美一区二区三区四区在线观看| 国产精品一区亚洲| 欧美高清在线观看| 亚洲一区二区三区四区五区黄| 久久国产精品一区二区三区| 在线观看亚洲专区| 欧美影院精品一区| 9l国产精品久久久久麻豆| 欧美一区二区网站| 国内精品视频久久| 国产亚洲欧美日韩在线一区| 狠狠色伊人亚洲综合网站色| 欧美精品日韩www.p站| 亚洲免费不卡| 国产一区二区福利| 欧美一级久久久久久久大片| 欧美日本不卡视频| 亚洲第一区在线观看| 欧美日韩麻豆| 免费观看亚洲视频大全| 国产欧美日韩另类一区| 亚洲一区二区三区影院| 国产一区深夜福利| 亚洲精品国产品国语在线app| 久久国产精品网站| 亚洲一区免费在线观看| 国产九九精品| 欧美日韩精品免费观看视频| 久久久人人人| 亚洲人成网在线播放| 一区电影在线观看| 国产欧美精品在线观看| 久久九九全国免费精品观看| 亚洲激情中文1区| 久久精品一区二区三区不卡| 老司机亚洲精品| 国产美女精品视频免费观看| 欧美日韩成人激情| 亚洲视频导航| 国产精品有限公司| 久久久人成影片一区二区三区观看| 久久国产夜色精品鲁鲁99| 午夜精品在线看| 欧美日韩国产不卡在线看| 国产精品毛片a∨一区二区三区|国| 国产精品女同互慰在线看| 亚洲国产精品久久久久婷婷老年| 国产精品一区二区久久久| 亚洲欧美99| 国产一区二区三区四区五区美女| 久久久噜噜噜久久| 国产亚洲午夜高清国产拍精品| 欧美一级黄色录像| 亚洲尤物视频网| 欧美a级片网站| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品在线观看视频| 狠狠操狠狠色综合网| 欧美日产在线观看| 国产精品无码专区在线观看| 国产精品一级| 国产在线麻豆精品观看| 99精品国产在热久久下载| 欧美精品一区二区三区久久久竹菊| 激情综合自拍| 欧美激情偷拍| 亚洲线精品一区二区三区八戒| 国产精品系列在线播放| 揄拍成人国产精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲免费av网站| 日韩视频中文字幕| 国产精品一区免费在线观看| 国产精品xnxxcom| 国产综合久久久久影院| 亚洲欧美日韩视频二区| 一区二区视频免费在线观看| 欧美日韩国产页| 欧美日韩亚洲一区二区三区在线| 欧美激情视频一区二区三区免费| 国产精品久久| 亚洲精品视频免费观看| 亚洲精品久久久久久久久久久久久| 欧美色区777第一页| 一本色道久久加勒比88综合| 欧美日韩视频在线| 久久精品在线观看| 一区二区三区高清在线观看| 欧美成年人视频网站| 亚洲免费伊人电影在线观看av| 欧美深夜影院| 欧美日韩综合久久| 午夜一级久久| 久久偷看各类wc女厕嘘嘘偷窃| 影音先锋中文字幕一区二区| 国产精品白丝av嫩草影院| 国产精品视频第一区| 亚洲激情黄色| 欧美精品成人在线| 欧美国产高潮xxxx1819| 雨宫琴音一区二区在线| 欧美精品一区二区三区很污很色的| 欧美日韩国产影片| 欧美日韩中文字幕在线| 国产视频一区免费看| 欧美日韩国产一区精品一区| 欧美激情区在线播放| 夜夜嗨av一区二区三区四区| 国产精品久久久久久久久免费桃花| 一区二区电影免费观看| 免费成人激情视频| 欧美三级特黄| 另类欧美日韩国产在线| 亚洲毛片在线看| 午夜精品久久久久久99热软件| 理论片一区二区在线| 激情久久一区| 黄色精品一区二区| 在线视频欧美精品| 欧美电影打屁股sp| 欧美色图一区二区三区| 午夜免费日韩视频| 欧美日韩一级片在线观看| 久久久久久9| 午夜国产精品视频免费体验区| 国产欧美大片| 精东粉嫩av免费一区二区三区| 久久aⅴ国产欧美74aaa| 国产综合久久| 亚洲在线一区二区三区| 欧美色视频日本高清在线观看| 国产午夜精品久久久久久免费视| 国产精品久久久久久模特| 国产日韩欧美a| 香蕉国产精品偷在线观看不卡| 国产精品麻豆成人av电影艾秋| 欧美日韩另类国产亚洲欧美一级| 日韩小视频在线观看| 国产精品久久久久免费a∨大胸| 国产日产亚洲精品系列| 久久国产一二区| 亚洲欧洲日本一区二区三区| 在线成人亚洲| 国产一区二区欧美日韩| 免费观看在线综合色| 国产精品视频免费在线观看| 国产精品稀缺呦系列在线| 欧美破处大片在线视频| 亚洲欧美影院| 久久婷婷蜜乳一本欲蜜臀| 亚洲自拍偷拍麻豆| 一区二区三区精品视频在线观看| 久久精品99国产精品日本| 国产视频久久| 国产亚洲精品久久久久动| 欧美a级理论片| 黄色另类av| 久久精品夜夜夜夜久久| 免费看精品久久片| 欧美久久久久久久久| 久久亚洲精品网站| 国产精品视频内| 国产精品久久波多野结衣| 亚洲精品视频免费观看| 一区二区成人精品| 亚洲欧洲另类国产综合| 国产伦精品一区二区三区免费迷| 亚洲国产二区| 国产精品video| 91久久久久| 亚洲欧美色一区| 狼狼综合久久久久综合网| 黄色成人在线网址| 国产精品久久久久久久久免费桃花| 欧美理论视频| 国产女人aaa级久久久级| 欧美日韩另类一区| 久久国产日韩| 亚洲欧美日韩爽爽影院| 另类酷文…触手系列精品集v1小说| 亚洲一二三区在线| 欧美色综合天天久久综合精品| 亚洲精品国久久99热| 久久视频免费观看| 日韩手机在线导航| 亚洲精品免费电影| 在线看片第一页欧美| 一区二区在线视频| 伊人久久久大香线蕉综合直播| 好吊色欧美一区二区三区四区| 国产精品乱子乱xxxx| 国一区二区在线观看| 亚洲第一区在线| 欧美激情91| 欧美有码在线观看视频| 国产精品美女www爽爽爽| 欧美一区二区三区四区夜夜大片| 亚洲人体大胆视频| 欧美在线视频一区二区三区| 国产免费成人| 欧美午夜一区| 亚洲在线观看视频| 91久久久一线二线三线品牌| 亚洲系列中文字幕| 亚洲日本欧美在线| 亚洲三级国产| 免费人成网站在线观看欧美高清| 免费毛片一区二区三区久久久| 亚洲欧洲在线观看| 欧美理论电影在线观看| 久久久美女艺术照精彩视频福利播放| av成人免费在线观看| 亚洲国产美女久久久久| 最新69国产成人精品视频免费| 亚洲一区欧美二区| 久热精品视频在线观看一区| 免费成年人欧美视频| 卡通动漫国产精品| 欧美日韩国产高清| 亚洲欧美日韩国产成人精品影院| 亚洲欧洲美洲综合色网| 99精品免费视频| 欧美电影免费观看高清| 欧美激情综合亚洲一二区| 日韩亚洲欧美高清| 欧美三级中文字幕在线观看| 亚洲一区二区三区四区五区午夜| 亚洲欧美成人综合| 麻豆精品一区二区av白丝在线| 欧美日韩成人免费| 国产精品日韩在线| 亚洲一区二区三区成人在线视频精品| 欧美14一18处毛片| 亚洲黄色成人网| 欧美亚州一区二区三区| 国产精品中文在线| 久久久久久网| 亚洲调教视频在线观看| 久久九九有精品国产23|