《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 非2的n次冪大小的TrueFFS文件系統的構建
非2的n次冪大小的TrueFFS文件系統的構建
2017年微型機與應用第6期
周翔
中國電波傳播研究所 第四研究部,山東 青島 266107
摘要: 介紹了嵌入式VxWorks的TrueFFS(True Flash File System)文件系統的結構和算法,針對項目開發中遇到的問題提出了非2的n次冪大小的TFFS文件系統的構建,描述了該理論的實現過程。經實踐證明該方法可行,并且為Flash存儲器的充分利用和通過TFFS加載鏡像提供了參考。
Abstract:
Key words :

  周翔

  (中國電波傳播研究所 第四研究部,山東 青島 266107)

        摘要:介紹了嵌入式VxWorks的TrueFFS(True Flash File System)文件系統的結構和算法,針對項目開發中遇到的問題提出了非2的n次冪大小的TFFS文件系統的構建,描述了該理論的實現過程。經實踐證明該方法可行,并且為Flash存儲器的充分利用和通過TFFS加載鏡像提供了參考。

  關鍵詞:嵌入式;VxWorks;TFFS;存儲器

  中圖分類號:TP316.2文獻標識碼:ADOI: 10.19358/j.issn.1674--7720.2017.06.007

  引用格式:周翔. 非2的n次冪大小的TrueFFS文件系統的構建[J].微型機與應用,2017,36(6):19-21.

0引言

  Flash存儲器以其體積小、耗電省、非易失的特性,越來越廣泛地應用于嵌入式系統開發中,成為重要的程序和數據載體。TrueFFS 文件系統是M-systems 公司推出的Flash管理軟件,它為種類繁多的Flash 提供了標準的塊設備接口,因此被包括VxWorks在內的很多嵌入式操作系統所采用。建立TFFS 后,用戶可以像操作標準磁盤一樣實現對Flash的管理。

1TrueFFS文件系統結構

  圖1TrueFFS結構及其在系統中的位置TrueFFS位于DOS文件系統和Flash存儲器之間,可以實現對底層Flash的讀寫操作,同時對上層提供應用接口,使Flash像標準磁盤設備一樣由操作系統和文件系統所管理。其在整個系統中的位置和結構如圖1所示。

001.jpg

  核心層為文件系統提供完整的塊設備功能;翻譯層負責管理文件系統和Flash各個塊的關系,實現邏輯塊到物理塊的映射,另外它還實現設備模擬算法和Flash管理算法,如壞塊管理、碎片回收、損耗均衡等;MTD(Memory Technology Driver) 層實現Flash底層驅動,如讀、寫、擦除等;Socket層提供TFFS與硬件之間的接口服務,如向系統注冊Socket設備、檢測插拔、硬件寫保護等[1]。

2TrueFFS文件系統算法

  TrueFFS能均勻使用Flash,用冗余數據結構保證可靠的數據操作,能排除損壞以避免錯誤,實現了FTL(Flash Translation Layer)標準[2]。

 ?。?)損耗均衡算法

  Flash存儲器的擦除壽命有限,隨著使用次數的增多,它最終會變成只讀狀態。為延長其壽命,行之有效的方法就是平衡使用所有的存儲單元,而不讓某一單元過度使用。TrueFFS使用一種基于動態維護表的blocktoflash(塊對應于Flash)傳輸系統來實現損耗均衡技術。當塊數據被修改、移動或碎片回收后,這張維護表會自動調整。

 ?。?)碎片回收

  塊數據的修改使得Flash的一些塊區域被填滿無效數據,這些區域在擦除之前變得不可寫。TrueFFS使用一種碎片回收(garbage collection)機制來回收這些塊。該機制從一個預擦除單元內拷貝所有的有效數據塊到一個新的單元,然后更新blocktoflash映射表,最后擦除廢舊的預擦除單元。

 ?。?)塊分配和關聯數據集結

  TrueFFS會將關聯的數據(如出自同一個文件)集結到同一個單獨擦除單元(erase unit)內的一段連續的區域中。為此,TrueFFS盡量在同一個擦除單元(erase unit)內維持一個由多個物理上連續自由的塊組成的存儲池。這就提高了數據的讀取效率,減少碎片的產生。

  (4)錯誤恢復

  TrueFFS使用了一種“先寫后擦”的策略。當更新Flash一個扇區的數據時,只有在更新操作完成并且新存儲的數據校驗成功后,先前的數據才會被允許擦掉。操作成功,新扇區的數據才有效,否則老扇區的數據有效。

3開發背景介紹

  在開發中使用的硬件電路板焊接了64 MB SDRAM,兩片NOR Flash,每片8 MB。嵌入式VxWorks開發時生成bootrom.bin文件為256 KB,VxWorks鏡像文件為5.13 MB。計劃借助TrueFFS創建兩個磁盤C和D,C中存放bootrom.bin和VxWorks鏡像文件,D中存放數據文件和工作日志。但創建TFFS時,Flash大小必須以2的正整數次冪對齊,即C盤空間只能為1 MB、2 MB、4 MB或8 MB。由于bootrom.bin是直接固化到第一片NOR Flash中,所以無法實現將該Flash全部創建TFFS,導致不僅無法存放VxWorks鏡像文件,而且還造成Flash空間的浪費。

4實現過程

  將第一片NOR Flash(Intel公司生產的JS28F640J3)起始處的2 MB空間用于固化bootrom.bin文件,上電后可自動運行bootrom;另外6 MB空間創建TFFS文件系統。構建TFFS的過程中涉及5個文件的修改:config.h、Makefile、sysTffs.c、tffsConfig.c、i28f640.c。各文件改動如下:

 ?。?)config.h:加入必要的定義

  #defineINCLUDE_TFFS

  #defineINCLUDE_TFFS_DOSFS

  #defineINCLUDE_TFFS_SHOW

  #defineINCLUDE_DOSFS

  #defineINCLUDE_TL_FTL

  /* 包含需要使用的翻譯層 */

 ?。?)Makefile:將生成的i28f640.o編譯進系統映像,加入定義

  MACH_EXTRA = i28f640.o

 ?。?)sysTffs.c:配置TFFS各項參數

  #defineINCLUDE_MTD_I28F640

  /* 可以調用i28f640Identify函數 */

  #defineINCLUDE_TL_FTL

  /* 包含需要使用的翻譯層 */

  #undefINCLUDE_TL_SSFDC

  /* 去掉不使用的翻譯層 */

  #defineFLASH_BASE_ADRS0

  /* TFFS空間從0地址開始 */

  #defineFLASH_SIZE0x00800000

  /* 共8MB */

  改寫sysTffsFormat函數,完成格式化過程。此處必須弄清tffsDevFormatParams中各個參數的定義[3]。

  typedef struct {

  long int bootImageLen;

  /*bootImage需要從flash開始處預留的長度*/

  unsignedpercentUse;

  /*Flash被格式化的百分率,為了提高TrueFFS的性能,不要設為100%,以便任何時候都有空余空間。默認值為99%*/

  unsignednoOfSpareUnits;

  /*空余擦除單元數目,目的在于flash出現壞塊時可以用它來替代,默認為1*/

  unsigned long vmAddressingLimit;

  /* FTL 在RAM中映射的大小,默認為61Kbytes*/

  FLStatus (*progressCallback)(int totalUnitsToFormat, int totalUnitsFormattedSoFar);

  /* 回調函數,用來監測flash擦除過程,如果返回值為OK,則繼續,否則停止擦除*/

  char volumeId[4];

  /*Dos卷標號*/

  char FAR1 * volumeLabel;

  /*Dos卷標字符串,如果為NULL,則沒有卷標*/

  unsigned noOfFATcopies;

  /* 文件分配表(FAT)的拷貝數,正常情況下只使用一個FAT,而另一個只有在使用的FAT被破壞的情況下用來恢復分配表,默認為2*/

  unsigned embeddedCISlength;

  /* CIS 嵌在單元頭部(unit header)之后的字節長度*/

  char FAR1 * embeddedCIS;

  /* 單元頭部被結構化用來作為一個PCMCIA''tuple'' 鏈(a CIS)的起始,它包含了一個數據組織tuple,通常用16進制的0xFF來標示上一個單元頭部結束的位置(''endoftuplechain'')。*/

  } FormatParams;

  實際使用的格式化參數為 {0x00200000l, 99, 1, 0x10000l , NULL, {0,0,0,0}, NULL, 2, 0, NULL} 。此文件的改寫是實現非2的n次冪TFFS文件系統創建的關鍵。在設置Flash地址和空間大小時依據NOR Flash的實際參數配置,而在對Flash格式化時修改bootImageLen參數,將2 MB空間給bootrom,而TFFS只使用后面6 MB空間。

 ?。?)tffsConfig.c:在MTDidentifyRoutine mtdTable[]中加入定義

  #ifdefINCLUDE_MTD_I28F640

  i28f640Identify,

  #endif

 ?。?)i28f640.c:實現MTD層的功能

  根據js28f640j3數據手冊編寫FLFlash結構體的各項成員,包括i28f640Write、i28f640Erase、i28f640Identify、lv28f640MTDMap。

  程序中需要注意以下幾點:

 ?、賹τ贜OR Flash,不需要編寫i28f640Read函數;

  ②如果要創建多于1個TFFS文件系統,需要對每個文件系統編寫lv28f640MTDMap函數;

 ?、凼状蝿摻〞r,最好#define DEBUG_PRINT printf,可以觀察整個創建過程,便于查找問題;

 ?、苄枰诓脸蛯懖僮髦衅帘沃袛啵驗镕lash在擦除、讀寫ID狀態時,不能正常讀取Flash中的數據。而VxWorks的異常入口位于Flash存儲器的開始處,異常發生時不能得到正常的入口指令,會導致系統跑飛。

  5文件系統創建

  第一次啟動時設置通過網絡加載映像,當系統啟動成功后在Shell中執行以下命令:

  -> tffsShowAll

  TFFS Version 2.2

  0: socket=RFA: type=0x17, unitSize=0x20000, mediaSize=0x800000

  1: socket=RFA: type=0x17, unitSize=0x20000, mediaSize=0x800000

  value = 48 = 0x30 = '0'

  -> sysTffsFormat

  value = 0 = 0x0

  -> sysTffsFormat

  -> usrTffsConfig 0,0,"/tffs"

  value = 0 = 0x0

  -> devs

  drv name

  0 /null

  1 /tyCo/0

  5 host:

  6 /vio

  3 /tffs

  value = 25 = 0x19

  此時可以看到“3 /tffs”,說明設備掛接已經成功。執行dosFsShow “/tffs/”命令,/tffs空間5.68 MB可用。

6結束語

  通過對TrueFFS相關函數的配置,可實現嵌入式VxWorks中非2的n次冪TFFS文件系統的構建。本文詳細描述了創建過程及注意事項。這種方式已經應用到某發射系統的顯控技術上,設備運行穩定、可靠,具有較大的實用價值。

參考文獻

 ?。?] 曹桂平,等. VxWorks設備驅動開發詳解[M]. 北京:電子工業出版社,2011.

  [2] Wind River systems Inc. VxWorks reference manual[Z]. 1999.

 ?。?] Wind River Systems Inc. VxWorks drivers API reference[Z]. 2006.


此內容為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>
          开心色5月久久精品| 一区二区三区波多野结衣在线观看| 99视频精品| 亚洲与欧洲av电影| 久久久久国产精品一区三寸| 亚洲欧美视频在线观看视频| 亚洲国产另类久久精品| 久久国内精品自在自线400部| 欧美伊人久久久久久久久影院| 欧美午夜免费| 欧美在线免费| 亚洲一区中文字幕在线观看| 欧美gay视频激情| 99国产精品| 欧美.日韩.国产.一区.二区| 欧美与黑人午夜性猛交久久久| 欧美久色视频| 国产精品美女主播| 亚洲精品看片| 国产精品一区二区在线观看网站| 先锋影音国产一区| 你懂的一区二区| 激情av一区| 久久久久国产一区二区| 亚洲日韩中文字幕在线播放| 亚洲黄色一区二区三区| 欧美成人资源网| 欧美午夜三级| 国产精品久久国产三级国电话系列| 欧美一级大片在线观看| 国产精品v欧美精品v日韩| 国产精品国产三级国产aⅴ9色| 亚洲综合社区| 麻豆精品视频在线观看| 亚洲专区欧美专区| 国产精品久久久久9999吃药| 久久国产欧美| 欧美一级久久久久久久大片| 欧美一级在线播放| 国产欧美一区二区白浆黑人| 一区二区三区我不卡| 久久精品一区| 国产精品久久久久aaaa| 亚洲激情视频在线播放| 欧美理论电影网| 久久精品国产第一区二区三区| 久久精彩免费视频| 久久精品国产久精国产思思| 亚洲精品欧美一区二区三区| 欧美日韩免费观看中文| 另类激情亚洲| 国产一区清纯| 亚洲精品国产精品乱码不99按摩| 欧美激情精品久久久久久黑人| 亚洲人成毛片在线播放| 久久久久久亚洲精品不卡4k岛国| 欧美主播一区二区三区美女 久久精品人| 日韩视频免费观看高清完整版| 久久久久久九九九九| 亚洲黄一区二区三区| 亚洲中字黄色| 亚洲无线观看| 亚洲欧洲精品一区二区精品久久久| 亚洲激情一区二区三区| 亚洲欧美国产不卡| 99在线热播精品免费| 小嫩嫩精品导航| 亚洲国产成人久久综合一区| 欧美极品一区二区三区| 一区二区三区高清在线观看| 欧美成人免费va影院高清| 国产精品女主播在线观看| 影音先锋久久| 在线观看中文字幕不卡| 欧美精品在线观看91| 午夜视频一区二区| 久久精品麻豆| 亚欧美中日韩视频| 欧美日在线观看| 欧美三级韩国三级日本三斤| 欧美大片免费| 美女国内精品自产拍在线播放| 欧美一级久久久| 嫩草伊人久久精品少妇av杨幂| 亚欧成人在线| 国产精品亚洲成人| 国产在线日韩| 亚洲综合视频在线| 亚洲另类自拍| 99re6热在线精品视频播放速度| 99精品热视频| 国产农村妇女毛片精品久久麻豆| 国语精品中文字幕| 亚洲欧美精品suv| 亚洲国产精品久久| 久久久精品免费视频| 亚洲综合国产| 一区二区国产在线观看| 欧美调教vk| 亚洲国产精品久久91精品| 久久伊人精品天天| 激情久久久久久久久久久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 亚洲婷婷综合色高清在线| 亚洲欧洲精品一区| 亚洲国产一区二区视频| 久久精品在线| 国产一区二区三区在线观看精品| 欧美亚一区二区| 国产精品久久久久9999吃药| 香蕉久久国产| 国产精品成人午夜| 性亚洲最疯狂xxxx高清| 美女成人午夜| 中文日韩欧美| 久久9热精品视频| 在线观看视频亚洲| 99国产精品久久久久久久成人热| 欧美电影电视剧在线观看| 亚洲精选成人| 亚洲国产高清在线| 亚洲第一偷拍| 在线观看一区二区精品视频| 欧美日韩精品一区二区三区| 一色屋精品视频免费看| 欧美精品日韩一区| 国产精品视频yy9299一区| 国产精品少妇自拍| 午夜亚洲影视| 国内精品美女在线观看| 99精品视频免费| 国产精品啊啊啊| 亚洲国产成人精品女人久久久| 国产一区二区三区四区hd| 欧美日产国产成人免费图片| 久久精品导航| 99精品视频免费全部在线| 日韩一区二区电影网| 国产精品a级| 激情五月婷婷综合| 在线观看亚洲一区| 亚洲男同1069视频| 欧美在线一区二区三区| 国产一区二区高清视频| 亚洲婷婷免费| 久久麻豆一区二区| 欧美精品色一区二区三区| 欧美亚洲网站| 99精品视频免费观看视频| 久久av一区二区| 欧美日韩久久久久久| 欧美日韩精品在线| 一区二区三区国产精华| 欧美日一区二区在线观看| 欧美99在线视频观看| 欧美18av| 在线观看国产成人av片| 欧美日本亚洲| 亚洲影院高清在线| 一区二区三区在线视频观看| 亚洲大片精品永久免费| 欧美精品久久一区| 亚洲电影有码| 欧美日韩伦理在线| 好看的亚洲午夜视频在线| 国产日韩在线播放| 国产日韩精品久久久| 欧美日韩精品一区二区三区| 亚洲人成77777在线观看网| 欧美日韩黄色一区二区| 亚洲精品国产精品国产自| 性色av一区二区三区在线观看| 韩国自拍一区| 国产资源精品在线观看| 亚洲狼人综合| 亚洲在线中文字幕| 亚洲精品中文字幕有码专区| 欧美日韩大片| 亚洲综合精品一区二区| 欧美偷拍另类| 国产日韩精品在线| 一区二区三区四区蜜桃| 国产欧美成人| 在线精品一区二区| 亚洲欧美成人在线| 欧美寡妇偷汉性猛交| 国产精品www994| 欧美精品久久99| 欧美在线一区二区三区| 亚洲国产精品一区制服丝袜| 亚洲图片欧美一区| 欧美性事在线| 国产精品素人视频| 一区二区激情视频| 韩国一区电影| 久久天堂国产精品| 亚洲高清视频一区二区| 国产精品视频专区| 国产精品爽爽ⅴa在线观看| 免费观看成人| 国产精品99久久久久久www| 日韩一区二区精品葵司在线| 一本久道综合久久精品| 欧美色视频一区| 亚洲乱码国产乱码精品精98午夜| 久久精品国产96久久久香蕉| 亚洲一二三区精品| 欧美亚洲三区| 国产亚洲欧美中文| 亚洲激情av在线| 亚洲激情视频在线播放| 国产欧美亚洲日本| 国产精品99久久久久久久女警| 国产农村妇女精品一区二区| 亚洲自拍偷拍色片视频| 国产精品亚洲美女av网站| 午夜精品一区二区三区电影天堂| 欧美精品九九99久久| 久久资源av| 欧美电影免费观看| 久久久久久免费| 欧美暴力喷水在线| 在线电影欧美日韩一区二区私密| 亚洲视频一区在线观看| 国产精自产拍久久久久久| 樱花yy私人影院亚洲| 午夜日韩在线观看| 黄色欧美成人| 国产一区av在线| 蜜桃久久av一区| 国产精品久久久久久久久久免费| 国产精品区一区| 久久久久亚洲综合| 日韩午夜电影av| 国产精品久久久久国产精品日日| 伊人男人综合视频网| 欧美日本国产精品| 国产亚洲精品综合一区91| 午夜免费久久久久| 国产精品久久久久一区二区三区| 亚洲色图自拍| 欧美极品在线视频| 国产一区二区三区在线观看视频| 中文av一区特黄| 亚洲国产精选| 免费短视频成人日韩| 国产精品美女在线| 亚洲视频免费| 黑人巨大精品欧美一区二区| 欧美久久久久久久久| 国产区精品在线观看| 欧美视频在线一区二区三区| 国产欧美精品日韩区二区麻豆天美| 亚洲精品网站在线播放gif| 极品尤物av久久免费看| 欧美综合第一页| 欧美精品一区在线观看| 亚洲人成久久| 国产精品手机在线| 99国产成+人+综合+亚洲欧美| 一区二区日韩免费看| 一本色道久久综合亚洲精品高清| 国产综合色产在线精品| 99re6热在线精品视频播放速度| 欧美呦呦网站| 久久激情五月激情| 欧美午夜在线一二页| 亚洲国产精品第一区二区| 欧美aⅴ一区二区三区视频| 一本大道久久a久久精品综合| 亚洲国产毛片完整版| 国产欧美日韩亚洲一区二区三区| 亚洲人永久免费| 午夜精品久久久久久99热| 国产一区91精品张津瑜| 国产欧美 在线欧美| 久久午夜精品| 亚洲精选国产| 久久久久久久激情视频| 欧美在线观看网址综合| 亚洲国产精品久久久| 美国十次成人| 亚洲人成欧美中文字幕| 久久婷婷影院| 亚洲欧洲免费视频| 欧美在线视频免费| 欧美四级在线| 悠悠资源网亚洲青| 牛牛精品成人免费视频| 先锋影音国产精品| 欧美欧美全黄| 欧美日韩成人综合| 欧美午夜视频一区二区| 亚洲三级色网| 亚洲激情一区二区| 久久午夜精品| 亚洲第一久久影院| 亚洲无线视频| 欧美亚洲一区二区在线观看| 欧美成人免费va影院高清| 欧美影院久久久| 中文在线不卡视频| 国产精品豆花视频| 久久综合国产精品台湾中文娱乐网| 国产欧美日韩综合一区在线观看| 欧美色欧美亚洲另类七区| 亚洲精品视频一区二区三区| 国产欧美精品日韩精品| 欧美韩国日本综合| 伊人久久噜噜噜躁狠狠躁| 午夜精品电影| 在线日韩成人| 亚洲国产婷婷综合在线精品| 亚洲人成网在线播放| 久久精品麻豆| 久久在线免费| 激情欧美一区二区三区在线观看| 国产精品久久网站| a91a精品视频在线观看| 国产精品社区| 欧美日韩国产一区二区三区| 欧美一区二区在线免费观看| 国产欧美日韩一区| 国产一区二区主播在线| 亚洲黄色小视频| 91久久线看在观草草青青| 一本久道久久综合中文字幕| 正在播放日韩|