www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]嵌入式操作系統(tǒng)VxWorks中TFFS文件系統(tǒng)的構(gòu)建

摘要:目前的嵌入式系統(tǒng)多使用FLASH作為主存,因此,如何有效管理FLASH上的數(shù)據(jù)非常重要。文章以MX29LV160BT芯片為例,討論了在VxWorks操作系統(tǒng)下Nor Flash上建立TFFS文件系統(tǒng)的一般步驟,從而為FLASH上的數(shù)據(jù)管理提供了理想的選擇方式,同時也為開發(fā)者和用戶升級程序提供了方便。

關(guān)鍵詞:VxWorks  Flash  MTD  TFFS   文件系統(tǒng)

嵌入式系統(tǒng)正隨著Internet的發(fā)展而在各個領(lǐng)域得到廣泛的應(yīng)用,作為一個優(yōu)秀的操作系統(tǒng),VxWorks實現(xiàn)了比其他實時操作系統(tǒng)更好的有效性、商用性、可裁減性以及互操作性,廣泛應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習(xí)、彈道制導(dǎo)、飛機導(dǎo)航等。

如今越來越多的嵌入式操作系統(tǒng)中,通常都使用FLASH作為主存介質(zhì)。許多開發(fā)者和用戶為了方便以后升級用戶程序,通常在FLASH上建立TFFS文件系統(tǒng),建立文件系統(tǒng)后,我們就可以象在windows操作系統(tǒng)下對硬盤操作一樣,進行數(shù)據(jù)的拷貝、刪除以及文件的建立等操作。

NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。Intel于1988年首先開發(fā)出NOR flash技術(shù),徹底改變了原先有EPROM和EEPROM一統(tǒng)天下的局面。NOR的特點是芯片內(nèi)執(zhí)行XIP execute In Place,這樣應(yīng)用程序可以直接在flash閃存內(nèi)運行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,因此在嵌入式系統(tǒng)得到廣泛的應(yīng)用。

一、    TFFS文件系統(tǒng)結(jié)構(gòu)簡介

Tornado的TrueFFS是和VxWorks兼容的一種M-Systems Flite實現(xiàn)方式,版本為2.0。它為種類繁多的flash存儲設(shè)備提供了統(tǒng)一的塊設(shè)備接口,并且具有可重入、線程安全的特點,支持大多數(shù)流行的CPU構(gòu)架。有了Tornado的TrueFFS,應(yīng)用程序?qū)lash存儲設(shè)備的讀寫就好象它們對擁有MS-DOS文件系統(tǒng)的磁碟設(shè)備的操作一樣。
如圖1所示,TrueFFS由核心層(core layer)和三個功能層,翻譯層(translation layer),MTD層(MTD layer),socket層(socket layer)組成。

核心層(Core layer):核心層主要起相互連接其他幾層的功能。同時它也可以進行碎片回收、定時器和其他系統(tǒng)資源的維護。通常WindRiver公司將這部分內(nèi)容以二進制文件提供。

翻譯層主要實現(xiàn)TrueFFS和dosFs之間的高級交互功能。它也包含了控制flash映射到塊、wear-leveling、碎片回收和數(shù)據(jù)完整性所需的智能化處理功能。目前有三種不同的翻譯層模塊可供選擇。選擇哪一種層要看你所用的flash介質(zhì)是采用NOR-based, 還是NAND-based, 或者SSFDC-based技術(shù)而定。

  Socket層則是提供TrueFFS和板卡硬件(如flash卡)的接口服務(wù)。其名字來源于用戶可以插入flash卡的物理插槽。用來向系統(tǒng)注冊socket設(shè)備,檢測設(shè)備拔插,硬件寫保護等。后面將詳細講解它的功能。

  MTD層(Memory Technology Drivers)功能主要是實現(xiàn)對具體的flash進行讀、寫、擦、ID識別等驅(qū)動,并設(shè)置與flash密切相關(guān)的一些參數(shù)。TrueFFS已經(jīng)包含了支持Intel,AMD以及samsung部分flash芯片的MTD層驅(qū)動。新的芯片需要新的MTD支持,你可以使用一個標(biāo)準(zhǔn)的接口來加入這些驅(qū)動。

  以上四部分,我們通常要的工作就是后兩層。

  當(dāng)在VxWorks下配置TrueFFS時,你必須為每一層至少包含一個軟件模塊。后面我們將詳細討論。

二、    MX29LV160BT芯片上建立TrueFFS文件系統(tǒng)

1、配置相關(guān)文件

在此,我以Nor Flash MX29LV160BT為例,開發(fā)工具為Tornado2.2 for PPC。要在VxWorks映像中包含TrueFFS文件系統(tǒng),首先必須在config.h文件中定義INCLUDE_TFFS。這使得VxWorks的初始化代碼調(diào)用tffsDrv()來創(chuàng)建管理TrueFFS所需的結(jié)構(gòu)和全局變量,并為所有掛接了的flash設(shè)備注冊socket組件驅(qū)動。在鏈接的時候,通過解析與tffsDrv()相關(guān)聯(lián)的符號(symbols)可以將TrueFFS所必需的軟件模塊鏈接到VxWorks映象中。

為了支持TrueFFS,每一個BSP目錄下都必須包含一個sysTffs.c文件。它將TrueFFS所有的層(翻譯層,socket層和MTD層)鏈接到一起并和VxWorks綁定。因此,我必須編輯這個文件并決定哪一種MTD和翻譯層模塊應(yīng)該包含到TrueFFS中。即:

#define INCLUDE_MTD_MX29LV           /* MX29LV160BT MTD driver */
#define INCLUDE_TL_FTL                  /* FTL translation layer */
#define    FLASH_BASE_ADRS        0x2a10000 /* Flash memory base address */
#undef FLASH_SIZE
#define    FLASH_SIZE        0x001f0000    /*Flash memory size,2M(parameter block) */

其他無關(guān)的MTD driver包含頭都#undef掉,同時定義Flash在系統(tǒng)中的基地址和大小。另外,還必須編輯sysLib.c中的sysPhysMemDesc[ ]數(shù)組,將Flash基地址和大小加入到MMU中,以供將來訪問Flash,否則訪問Flash會失敗。如果BSP目錄下沒有sysTffs.c文件,那么我們可以從其他BSP目錄下拷貝一個即可,然后做上述修改,其他的內(nèi)容基本可以不用修改。

接下來需要修改tffsConfig.c文件,為了方便管理,通常我們將src/drv/tffs/目錄下該文件拷貝到我們BSP目錄下,然后再做出修改。在MTDidentifyRoutine mtdTable[]表中加入如下語句:

#ifdef  INCLUDE_MTD_MX29LV
    mx29lvMTDIdentify,
#endif  /* INCLUDE_MTD_MX29LV */
并在該文件開頭聲明。
#ifdef  INCLUDE_MTD_MX29LV
FLStatus  mx29lvMTDIdentify (FLFlash vol);
#endif   /* INCLUDE_MTD_MX29LV */
最后就是將我們的flash相關(guān)MTD驅(qū)動加入到makefile中。即:
MACH_EXTRA   = mx29lvMtd.o
為了方便我們調(diào)試MTD驅(qū)動,應(yīng)該在重新編譯VxWorks映象前將諸如格式化flash、創(chuàng)建TrueFFS塊設(shè)備、綁定此塊設(shè)備到dosFs所必要的功能包含到VxWorks映像中。比如如下定義:
#define  INCLUDE_TFFS
#ifdef INCLUDE_TFFS
#define INCLUDE_TFFS_DOSFS
#define INCLUDE_TFFS_SHOW
#define INCLUDE_DOSFS        /* dosFs file system */
#define INCLUDE_SHOW_ROUTINES    /* show routines for system facilities*/
#define INCLUDE_TL_FTL
#define INCLUDE_IO_SYSTEM
#define INCLUDE_DISK_UTIL
#endif /* INCLUDE_DOSFS */

2、MTD驅(qū)動簡介
   做了上述配置后,進入VxWorks操作系統(tǒng)后,我們在shell上利用tffsShow工具來顯示flash的信息。TffsShow函數(shù)最終會調(diào)用MTD驅(qū)動中的mx29lvMtdIdentiy( )函數(shù),在mx29lvMtdIdentiy ( )函數(shù)主要是通過讀取MX29LV160BT芯片的設(shè)備和廠商ID來識別它,然后對FLFlash結(jié)構(gòu)成員進行初始化,最主要的幾個參數(shù)是:
type
    Flash內(nèi)存的JEDEC ID號。

erasableBlockSize

Flash內(nèi)存的擦除塊大?。ㄗ止?jié))。設(shè)置這個值時應(yīng)考慮到interleaving。因此,通常通過如下方法來設(shè)置它的大小。
Vol.erasableBlockSize = MX29LV_MTD_SECTOR_SIZE * vol.interleaving;
對于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE為64K字節(jié)。
chipSize
使用來構(gòu)建TrueFFS文件系統(tǒng)的flash實際大?。ㄗ止?jié))。
noOfChips
使用來構(gòu)建TrueFFS文件系統(tǒng)的flash實際片數(shù)。
interleaving
   Flash內(nèi)存交叉因子(interleaving factor)。即擴展數(shù)據(jù)總線的設(shè)備數(shù)。比如,一個32位數(shù)據(jù)總線上,我們可以使用4片8位或2片16位的設(shè)備。
map
   指向flash內(nèi)存映射(map)函數(shù)。該函數(shù)將flash映射到內(nèi)存區(qū)。
read
   指向flash內(nèi)存的讀函數(shù)。在MTD驅(qū)動識別函數(shù)中,這個成員函數(shù)已經(jīng)被初始化為缺省的讀函數(shù)。通常情況下,我們不需要再初始化它,否則還需要修改很多相關(guān)的函數(shù)。
write
指向flash內(nèi)存的寫函數(shù)。這個成員必須初始化,這是我們要做的一個重要工作。
erase
指向flash內(nèi)存的擦除函數(shù)。這個成員必須初始化,這也是我們要做的一個重要工作。

針對FLFlash結(jié)構(gòu)成員,我們所關(guān)心的兩個函數(shù)就是寫和擦除函數(shù)。在mx29lvMtdIdentiy()函數(shù)中必須有如下定義:
vol.write = mx29lvWrite;
vol.erase = mx29lvErase;
在mx29lvWrite()函數(shù)中主要是實現(xiàn)將數(shù)據(jù)寫到flash中。首先需要對扇區(qū)進行解鎖,然后寫入寫命令,之后才能進行數(shù)據(jù)的寫入。最后需要判斷數(shù)據(jù)是否寫完。為了確保操作成功,我們應(yīng)該在寫完每個數(shù)據(jù)后進行數(shù)據(jù)的比較,比較正確后方能進行下一個數(shù)據(jù)的操作。
在mx29lvErase ()函數(shù)中主要是實現(xiàn)flash扇區(qū)的擦除。如今的flash一般都是按照扇區(qū)進行擦除操作的。在擦除操作之前也應(yīng)該首先對扇區(qū)進行解鎖,然后寫擦除建立和扇區(qū)擦除命令。擦除成功后,flash中的內(nèi)容應(yīng)該是0xffff。所以為了確保成功,我們還是應(yīng)該在擦除后進行比較,比較正確后方能進入下一個扇區(qū)的擦除操作,否則返回擦除錯誤標(biāo)志。
所以,對于MTD驅(qū)動的調(diào)試,基本上就是調(diào)試寫和擦除兩個函數(shù)。在調(diào)試過程中,我們可以在這兩個函數(shù)相應(yīng)位置加入打印語句來調(diào)試。為了能調(diào)試這兩個函數(shù),我們通過在shell上輸入命令tffsDevFormat來格式化flash,tffsDevFormat最終會調(diào)用mx29lvErase和mx29lvWrite函數(shù),如果成功就會返回0,否則返回-1。當(dāng)然也可以調(diào)用tffsDevCreate函數(shù)來驗證我們的寫和擦除函數(shù)的正確性。圖2說明了tffsDevCreate調(diào)用過程。

在shell上利用tffsShow來驗證mx29lvMtdIdentiy。
è    tffsShow 
0: socket=RFA: type=0x2249, unitSize=0x10000, mediaSize=0x1f0000 
value = 49 = 0x31 = "1"
說明已正確識別到MX29LV160BT設(shè)備,設(shè)備號為0x2249。

三、    建立TFFS設(shè)備
1、掛接設(shè)備名
MTD驅(qū)動調(diào)試成功后,我們就可以給flash設(shè)備掛接上dos設(shè)備名,如下操作:
格式化:
è    tffsDevFormat 
value = 1
è    usrTffsConfig 0,0,”/tffs0”
value = 0
然后通過devs來查看掛接的設(shè)備名。
è    devs
drv name                
  0 /null               
  1 /tyCo/0             
  1 /tyCo/1             
  5 host:               
  6 /pty/rlogin.S       
  7 /pty/rlogin.M       
  3 /tffs0/             
  8 /vio                
value = 25 = 0x19
看到/tffs0/說明掛接設(shè)備已經(jīng)成功,接下來就可以利用dosFs文件系統(tǒng)相關(guān)命令來操作flash了。如,ls、copy等。

2、從Flash中啟動并下載VxWorks映像
    要從flash中下載VxWorks映像,首先需要把VxWorks映像拷貝到flash中,在shell中的操作命令為copy “VxWorks”,”/tffs0/VxWorks”,然后修改config.h文件中引導(dǎo)行,如下:
#define DEFAULT_BOOT_LINE 
"tffs=0,0(0,0)host:/tffs0/VxWorks h=192.168.0.153 e=192.168.0.154 u=target pw=target o=cpm"
修改完后,重新編譯生成bootrom_uncmp.bin,并把它燒寫到flash中(注意:該flash與上面建立TFFS文件系統(tǒng)的flash不一樣,它并沒有建立文件系統(tǒng))。然后重新啟動,即可看到如下啟動畫面:
boot device          : tffs=0,0
unit number          : 0 
processor number     : 0 
host name            : host
file name            : /tffs0/VxWorks
inet on ethernet (e) : 192.168.0.154
host inet (h)        : 192.168.0.153
user (u)             : target
ftp password (pw)    : target
flags (f)            : 0x0 
other (o)            : cpm
Attaching to TFFS... done.
Loading /tffs0/VxWorks...894304
Starting at 0x10000...

Development System
        VxWorks version 5.5.1
        KERNEL: WIND version 2.6
        Copyright Wind River Systems, Inc., 1984-2003
    CPU: Motorola ADS - PowerPC 860.  Processor #0.
    Memory Size: 0x1000000.  BSP version 1.2/5.
    WDB Comm Type: WDB_COMM_END
                 WDB: Ready.

到此,說明引導(dǎo)成功。flash整個TFFS文件系統(tǒng)就已經(jīng)建立成功。

四、    結(jié)論
VxWorks操作系統(tǒng)中支持TFFS文件系統(tǒng),我們將VxWorks映像作為文件放到flash上,這就有利于開發(fā)者和用戶更新應(yīng)用程序而不需要影響bootrom,直接更新VxWorks映像或者將應(yīng)用程序直接copy到flash中,然后裝載到RAM中運行。

參考文獻
1  VxWorks 5.5 Programmer’s Guide.

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

新竹2025年9月9日 /美通社/ -- 全球客制化存儲芯片解決方案設(shè)計公司愛普科技今日宣布,其新一代PSRAM—ApSRAMTM (Attached-pSRAM)已通過客戶平臺驗證,預(yù)計將于年底開始量產(chǎn)。ApSRAMT...

關(guān)鍵字: PSRAM 低功耗 存儲芯片 MT

武漢2025年9月9日 /美通社/ -- 7月24日,2025慧聰跨業(yè)品牌巡展——湖北?武漢站在武漢中南花園酒店隆重舉辦!本次巡展由慧聰安防網(wǎng)、慧聰物聯(lián)網(wǎng)、慧聰音響燈光網(wǎng)、慧聰LED屏網(wǎng)、慧聰教育網(wǎng)聯(lián)合主辦,吸引了安防、...

關(guān)鍵字: AI 希捷 BSP 平板

上海2025年9月9日 /美通社/ -- 9月8日,移遠通信宣布,其自研藍牙協(xié)議棧DynaBlue率先通過藍牙技術(shù)聯(lián)盟(SIG)BQB 6.1標(biāo)準(zhǔn)認證。作為移遠深耕短距離通信...

關(guān)鍵字: 藍牙協(xié)議棧 移遠通信 COM BSP

上海2025年9月9日 /美通社/ -- 為全面落實黨中央、國務(wù)院和上海市委、市政府關(guān)于加快發(fā)展人力資源服務(wù)業(yè)的決策部署,更好發(fā)揮人力資源服務(wù)業(yè)賦能百業(yè)作用,8月29日,以"AI智領(lǐng) HR智鏈 靜候你來&quo...

關(guān)鍵字: 智能體 AI BSP 人工智能

為高效精準(zhǔn)的分析提供一站式解決方案 上海2025年9月9日 /美通社/ -- 科學(xué)探索與產(chǎn)業(yè)升級浪潮下,AI賦能的精準(zhǔn)分析技術(shù)正加速重構(gòu)未來實驗室。自動化技術(shù)和技術(shù)培訓(xùn)領(lǐng)域的世界領(lǐng)導(dǎo)者,F(xiàn)esto(展位:E2333)首...

關(guān)鍵字: FESTO 測試 MT 運動控制

北京2025年9月8日 /美通社/ -- 近日,易生支付與一汽出行達成合作,為其自主研發(fā)的"旗馭車管"車輛運營管理平臺提供全流程支付通道及技術(shù)支持。此次合作不僅提升了平臺對百余家企業(yè)客戶的運營管理效率...

關(guān)鍵字: 一汽 智能化 BSP SAAS

深圳2025年9月8日 /美通社/ -- 晶泰科技(2228.HK)今日宣布,由其助力智擎生技制藥(PharmaEngine, Inc.)發(fā)現(xiàn)的新一代PRMT5抑制劑PEP0...

關(guān)鍵字: 泰科 AI MT BSP

上海2025年9月5日 /美通社/ -- 由上海市經(jīng)濟和信息化委員會、上海市發(fā)展和改革委員會、上海市商務(wù)委員會、上海市教育委員會、上海市科學(xué)技術(shù)委員會指導(dǎo),東浩蘭生(集團)有限公司主辦,東浩蘭生會展集團上海工業(yè)商務(wù)展覽有...

關(guān)鍵字: 電子 BSP 芯片 自動駕駛

推進卓越制造,擴大產(chǎn)能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會正式簽署備忘錄,以設(shè)立耐世特亞太總部蘇州智能制造項目。...

關(guān)鍵字: 智能制造 BSP 汽車系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團宣布,新世代首款量產(chǎn)車型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車展。中國專屬版車型也將在年內(nèi)與大家見面,2026年在國內(nèi)投產(chǎn)。 寶馬集團董事...

關(guān)鍵字: 寶馬 慕尼黑 BSP 數(shù)字化
關(guān)閉