當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要:目前的嵌入式系統(tǒng)多使用FLASH作為主存,因此,如何有效管理FLASH上的數(shù)據(jù)非常重要。文章以MX29LV160BT芯片為例,討論了在 VxWorks操作系統(tǒng)下Nor Flash上建立TFFS文

摘要:目前的嵌入式系統(tǒng)多使用FLASH作為主存,因此,如何有效管理FLASH上的數(shù)據(jù)非常重要。文章以MX29LV160BT芯片為例,討論了在 VxWorks操作系統(tǒng)下Nor Flash上建立TFFS文件系統(tǒng)的一般步驟,從而為FLASH上的數(shù)據(jù)管理提供了理想的選擇方式,同時(shí)也為開(kāi)發(fā)者和用戶(hù)升級(jí)程序提供了方便。 關(guān)鍵詞:VxWorks Flash MTD TFFS 文件系統(tǒng) 嵌入式系統(tǒng)正隨著Internet的發(fā)展而在各個(gè)領(lǐng)域得到廣泛的應(yīng)用,作為一個(gè)優(yōu)秀的操作系統(tǒng),VxWorks實(shí)現(xiàn)了比其他實(shí)時(shí)操作系統(tǒng)更好的有效性、商用性、可裁減性以及互操作性,廣泛應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中,如衛(wèi)星通訊、軍事演習(xí)、彈道制導(dǎo)、飛機(jī)導(dǎo)航等。 如今越來(lái)越多的嵌入式操作系統(tǒng)中,通常都使用FLASH作為主存介質(zhì)。許多開(kāi)發(fā)者和用戶(hù)為了方便以后升級(jí)用戶(hù)程序,通常在FLASH上建立TFFS文件系統(tǒng),建立文件系統(tǒng)后,我們就可以象在windows操作系統(tǒng)下對(duì)硬盤(pán)操作一樣,進(jìn)行數(shù)據(jù)的拷貝、刪除以及文件的建立等操作。 NOR和NAND是現(xiàn)在市場(chǎng)上兩種主要的非易失閃存技術(shù)。Intel于1988年首先開(kāi)發(fā)出NOR flash技術(shù),徹底改變了原先有EPROM和EEPROM一統(tǒng)天下的局面。NOR的特點(diǎn)是芯片內(nèi)執(zhí)行XIP execute In Place,這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,因此在嵌入式系統(tǒng)得到廣泛的應(yīng)用。 一、 TFFS文件系統(tǒng)結(jié)構(gòu)簡(jiǎn)介 Tornado的TrueFFS是和VxWorks兼容的一種M-Systems Flite實(shí)現(xiàn)方式,版本為2.0。它為種類(lèi)繁多的flash存儲(chǔ)設(shè)備提供了統(tǒng)一的塊設(shè)備接口,并且具有可重入、線(xiàn)程安全的特點(diǎn),支持大多數(shù)流行的CPU 構(gòu)架。有了Tornado的TrueFFS,應(yīng)用程序?qū)lash存儲(chǔ)設(shè)備的讀寫(xiě)就好象它們對(duì)擁有MS-DOS文件系統(tǒng)的磁碟設(shè)備的操作一樣。 如圖1所示,TrueFFS由核心層(core layer)和三個(gè)功能層,翻譯層(translation layer),MTD層(MTD layer),socket層(socket layer)組成。

核心層(Core layer):核心層主要起相互連接其他幾層的功能。同時(shí)它也可以進(jìn)行碎片回收、定時(shí)器和其他系統(tǒng)資源的維護(hù)。通常WindRiver公司將這部分內(nèi)容以二進(jìn)制文件提供。 翻譯層主要實(shí)現(xiàn)TrueFFS和dosFs之間的高級(jí)交互功能。它也包含了控制flash映射到塊、wear-leveling、碎片回收和數(shù)據(jù)完整性所需的智能化處理功能。目前有三種不同的翻譯層模塊可供選擇。選擇哪一種層要看你所用的flash介質(zhì)是采用NOR-based, 還是NAND-based, 或者SSFDC-based技術(shù)而定。   Socket層則是提供TrueFFS和板卡硬件(如flash卡)的接口服務(wù)。其名字來(lái)源于用戶(hù)可以插入flash卡的物理插槽。用來(lái)向系統(tǒng)注冊(cè) socket設(shè)備,檢測(cè)設(shè)備拔插,硬件寫(xiě)保護(hù)等。后面將詳細(xì)講解它的功能。   MTD層(Memory Technology Drivers)功能主要是實(shí)現(xiàn)對(duì)具體的flash進(jìn)行讀、寫(xiě)、擦、ID識(shí)別等驅(qū)動(dòng),并設(shè)置與flash密切相關(guān)的一些參數(shù)。TrueFFS已經(jīng)包含了支持Intel,AMD以及samsung部分flash芯片的MTD層驅(qū)動(dòng)。新的芯片需要新的MTD支持,你可以使用一個(gè)標(biāo)準(zhǔn)的接口來(lái)加入這些驅(qū)動(dòng)。   以上四部分,我們通常要的工作就是后兩層。   當(dāng)在VxWorks下配置TrueFFS時(shí),你必須為每一層至少包含一個(gè)軟件模塊。后面我們將詳細(xì)討論。 二、 MX29LV160BT芯片上建立TrueFFS文件系統(tǒng) 1、配置相關(guān)文件 在此,我以Nor Flash MX29LV160BT為例,開(kāi)發(fā)工具為T(mén)ornado2.2 for PPC。要在VxWorks映像中包含TrueFFS文件系統(tǒng),首先必須在config.h文件中定義INCLUDE_TFFS。這使得VxWorks的初始化代碼調(diào)用tffsDrv()來(lái)創(chuàng)建管理TrueFFS所需的結(jié)構(gòu)和全局變量,并為所有掛接了的flash設(shè)備注冊(cè)socket組件驅(qū)動(dòng)。在鏈接的時(shí)候,通過(guò)解析與tffsDrv()相關(guān)聯(lián)的符號(hào)(symbols)可以將TrueFFS所必需的軟件模塊鏈接到VxWorks映象中。 為了支持TrueFFS,每一個(gè)BSP目錄下都必須包含一個(gè)sysTffs.c文件。它將TrueFFS所有的層(翻譯層,socket層和MTD層)鏈接到一起并和VxWorks綁定。因此,我必須編輯這個(gè)文件并決定哪一種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) */ 其他無(wú)關(guān)的MTD driver包含頭都#undef掉,同時(shí)定義Flash在系統(tǒng)中的基地址和大小。另外,還必須編輯sysLib.c中的sysPhysMemDesc[ ]數(shù)組,將Flash基地址和大小加入到MMU中,以供將來(lái)訪(fǎng)問(wèn)Flash,否則訪(fǎng)問(wèn)Flash會(huì)失敗。如果BSP目錄下沒(méi)有sysTffs.c文件,那么我們可以從其他BSP目錄下拷貝一個(gè)即可,然后做上述修改,其他的內(nèi)容基本可以不用修改。 接下來(lái)需要修改tffsConfig.c文件,為了方便管理,通常我們將src/drv/tffs/目錄下該文件拷貝到我們BSP目錄下,然后再做出修改。在MTDidentifyRoutine mtdTable[]表中加入如下語(yǔ)句: #ifdef INCLUDE_MTD_MX29LV mx29lvMTDIdentify, #endif /* INCLUDE_MTD_MX29LV */ 并在該文件開(kāi)頭聲明。 #ifdef INCLUDE_MTD_MX29LV FLStatus mx29lvMTDIdentify (FLFlash vol); #endif /* INCLUDE_MTD_MX29LV */ 最后就是將我們的flash相關(guān)MTD驅(qū)動(dòng)加入到makefile中。即: MACH_EXTRA = mx29lvMtd.o 為了方便我們調(diào)試MTD驅(qū)動(dòng),應(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ū)動(dòng)簡(jiǎn)介 做了上述配置后,進(jìn)入VxWorks操作系統(tǒng)后,我們?cè)趕hell上利用tffsShow工具來(lái)顯示flash的信息。TffsShow函數(shù)最終會(huì)調(diào)用 MTD驅(qū)動(dòng)中的mx29lvMtdIdentiy( )函數(shù),在mx29lvMtdIdentiy ( )函數(shù)主要是通過(guò)讀取MX29LV160BT芯片的設(shè)備和廠(chǎng)商ID來(lái)識(shí)別它,然后對(duì)FLFlash結(jié)構(gòu)成員進(jìn)行初始化,最主要的幾個(gè)參數(shù)是: type Flash內(nèi)存的JEDEC ID號(hào)。 erasableBlockSize Flash內(nèi)存的擦除塊大小(字節(jié))。設(shè)置這個(gè)值時(shí)應(yīng)考慮到interleaving。因此,通常通過(guò)如下方法來(lái)設(shè)置它的大小。 Vol.erasableBlockSize = MX29LV_MTD_SECTOR_SIZE * vol.interleaving; 對(duì)于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE為64K字節(jié)。 chipSize 使用來(lái)構(gòu)建TrueFFS文件系統(tǒng)的flash實(shí)際大小(字節(jié))。 noOfChips 使用來(lái)構(gòu)建TrueFFS文件系統(tǒng)的flash實(shí)際片數(shù)。 interleaving Flash內(nèi)存交叉因子(interleaving factor)。即擴(kuò)展數(shù)據(jù)總線(xiàn)的設(shè)備數(shù)。比如,一個(gè)32位數(shù)據(jù)總線(xiàn)上,我們可以使用4片8位或2片16位的設(shè)備。 map 指向flash內(nèi)存映射(map)函數(shù)。該函數(shù)將flash映射到內(nèi)存區(qū)。 read 指向flash內(nèi)存的讀函數(shù)。在MTD驅(qū)動(dòng)識(shí)別函數(shù)中,這個(gè)成員函數(shù)已經(jīng)被初始化為缺省的讀函數(shù)。通常情況下,我們不需要再初始化它,否則還需要修改很多相關(guān)的函數(shù)。 write 指向flash內(nèi)存的寫(xiě)函數(shù)。這個(gè)成員必須初始化,這是我們要做的一個(gè)重要工作。 erase 指向flash內(nèi)存的擦除函數(shù)。這個(gè)成員必須初始化,這也是我們要做的一個(gè)重要工作。 針對(duì)FLFlash結(jié)構(gòu)成員,我們所關(guān)心的兩個(gè)函數(shù)就是寫(xiě)和擦除函數(shù)。在mx29lvMtdIdentiy()函數(shù)中必須有如下定義: vol.write = mx29lvWrite; vol.erase = mx29lvErase; 在mx29lvWrite()函數(shù)中主要是實(shí)現(xiàn)將數(shù)據(jù)寫(xiě)到flash中。首先需要對(duì)扇區(qū)進(jìn)行解鎖,然后寫(xiě)入寫(xiě)命令,之后才能進(jìn)行數(shù)據(jù)的寫(xiě)入。最后需要判斷數(shù)據(jù)是否寫(xiě)完。為了確保操作成功,我們應(yīng)該在寫(xiě)完每個(gè)數(shù)據(jù)后進(jìn)行數(shù)據(jù)的比較,比較正確后方能進(jìn)行下一個(gè)數(shù)據(jù)的操作。 在mx29lvErase ()函數(shù)中主要是實(shí)現(xiàn)flash扇區(qū)的擦除。如今的flash一般都是按照扇區(qū)進(jìn)行擦除操作的。在擦除操作之前也應(yīng)該首先對(duì)扇區(qū)進(jìn)行解鎖,然后寫(xiě)擦除建立和扇區(qū)擦除命令。擦除成功后,flash中的內(nèi)容應(yīng)該是0xffff。所以為了確保成功,我們還是應(yīng)該在擦除后進(jìn)行比較,比較正確后方能進(jìn)入下一個(gè)扇區(qū)的擦除操作,否則返回擦除錯(cuò)誤標(biāo)志。 所以,對(duì)于MTD驅(qū)動(dòng)的調(diào)試,基本上就是調(diào)試寫(xiě)和擦除兩個(gè)函數(shù)。在調(diào)試過(guò)程中,我們可以在這兩個(gè)函數(shù)相應(yīng)位置加入打印語(yǔ)句來(lái)調(diào)試。為了能調(diào)試這兩個(gè)函數(shù),我們通過(guò)在shell上輸入命令tffsDevFormat來(lái)格式化flash,tffsDevFormat最終會(huì)調(diào)用mx29lvErase和 mx29lvWrite函數(shù),如果成功就會(huì)返回0,否則返回-1。當(dāng)然也可以調(diào)用tffsDevCreate函數(shù)來(lái)驗(yàn)證我們的寫(xiě)和擦除函數(shù)的正確性。圖2 說(shuō)明了tffsDevCreate調(diào)用過(guò)程。

在shell上利用tffsShow來(lái)驗(yàn)證mx29lvMtdIdentiy。 %26;#232; tffsShow 0: socket=RFA: type=0x2249, unitSize=0x10000, mediaSize=0x1f0000 value = 49 = 0x31 = "1" 說(shuō)明已正確識(shí)別到MX29LV160BT設(shè)備,設(shè)備號(hào)為0x2249。 三、 建立TFFS設(shè)備 1、掛接設(shè)備名 MTD驅(qū)動(dòng)調(diào)試成功后,我們就可以給flash設(shè)備掛接上dos設(shè)備名,如下操作: 格式化: %26;#232; tffsDevFormat value = 1 %26;#232; usrTffsConfig 0,0,”/tffs0” value = 0 然后通過(guò)devs來(lái)查看掛接的設(shè)備名。 %26;#232; 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/說(shuō)明掛接設(shè)備已經(jīng)成功,接下來(lái)就可以利用dosFs文件系統(tǒng)相關(guān)命令來(lái)操作flash了。如,ls、copy等。 2、從Flash中啟動(dòng)并下載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,并把它燒寫(xiě)到flash中(注意:該flash與上面建立TFFS文件系統(tǒng)的flash不一樣,它并沒(méi)有建立文件系統(tǒng))。然后重新啟動(dòng),即可看到如下啟動(dòng)畫(huà)面: 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. 到此,說(shuō)明引導(dǎo)成功。flash整個(gè)TFFS文件系統(tǒng)就已經(jīng)建立成功。 四、 結(jié)論 VxWorks操作系統(tǒng)中支持TFFS文件系統(tǒng),我們將VxWorks映像作為文件放到flash上,這就有利于開(kāi)發(fā)者和用戶(hù)更新應(yīng)用程序而不需要影響bootrom,直接更新VxWorks映像或者將應(yīng)用程序直接copy到flash中,然后裝載到RAM中運(yùn)行。 參考文獻(xiàn) 1 VxWorks 5.5 Programmer’s Guide.

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉