亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        用NOR Flash建立VxWorks TrueFFS文件系統(tǒng)

        2012-09-25 02:59:56邵富杰徐云寬
        關(guān)鍵詞:格式化驅(qū)動程序扇區(qū)

        邵富杰,徐云寬

        (北京跟蹤與通信技術(shù)研究所 100094)

        引 言

        VxWorks是美國Wind River公司于1983年開發(fā)的高模塊化、高性能的32位嵌入式實時多任務(wù)操作系統(tǒng),以其良好的可靠性和卓越的實時性而被廣泛應(yīng)用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中,如彈道制導(dǎo)、飛機導(dǎo)航等[1]。

        Flash作為一種非易失性的固態(tài)存儲設(shè)備,具有可靠性高、體積小、功耗低等特點,非常適合移動設(shè)備、手持設(shè)備和嵌入式設(shè)備使用。NOR Flash和NAND Flash是現(xiàn)在市場上兩種主要的非易失閃存技術(shù),SST39VF1601是一種存儲容量為2MB的NOR Flash,應(yīng)用程序可以直接在芯片內(nèi)部運行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在嵌入式系統(tǒng)中得到廣泛的應(yīng)用。

        1 VxWorks TrueFFS文件系統(tǒng)結(jié)構(gòu)

        TrueFFS文件系統(tǒng)是VxWorks集成開發(fā)環(huán)境Tornado提供的一個可選模塊,它為種類繁多的Flash存儲設(shè)備提供了統(tǒng)一的塊設(shè)備接口,并且具有可重入、線程安全的特點,支持大多數(shù)流行的CPU構(gòu)架。TrueFFS文件為用戶屏蔽了底層物理存儲設(shè)備的差別,應(yīng)用程序?qū)lash存儲設(shè)備的讀寫可以像對擁有MS-DOS文件系統(tǒng)的磁碟設(shè)備的操作一樣。TrueFFS文件系統(tǒng)由4個層次組成:核心層、翻譯層、MTD層和Socket層,TrueFFS文件系統(tǒng)結(jié)構(gòu)如圖1所示。

        圖1 TrueFFS文件系統(tǒng)結(jié)構(gòu)

        核心層:連接其他幾個功能層,同時也進行碎片回收及定時器和其他系統(tǒng)資源的維護。該層以二進制形式提供。

        翻譯層:主要實現(xiàn)TrueFFS與DOSFS之間的高級交互功能,也包含控制Flash映射到塊、碎片回收和數(shù)據(jù)完整性所需的智能化處理功能。該層以二進制形式提供。

        MTD層:實現(xiàn)對底層Flash的地址映射、讀、寫、擦除和ID識別等操作,并設(shè)置與Flash密切相關(guān)的一些參數(shù)。該層以二進制和源碼形式提供。

        Socket層:提供TrueFFS與板卡硬件之間的接口服務(wù),提供板卡規(guī)范的硬件訪問例程,并且負(fù)責(zé)電源管理、卡檢測、窗口管理和Socket注冊。該層以源碼形式提供[2]。

        2 SST39VF1601上建立TrueFFS文件系統(tǒng)

        在SST39VF1601上建立VxWorks TrueFFS文件系統(tǒng)需要完成以下3部分工作:

        ◆配置完整的DOS文件系統(tǒng)支持;

        ◆包含核心TrueFFS組件;

        ◆為翻譯層、MTD層和Socket層各提供一個可用的軟件模塊。

        DOS文件系統(tǒng)、核心TrueFFS組件和翻譯層可以通過配置集成開發(fā)環(huán)境Tornado安裝目錄target\config\bspname\下的config.h文件實現(xiàn),MTD層和Socket層需要編寫驅(qū)動程序?qū)崿F(xiàn)[2]。

        2.1 配置TrueFFS文件系統(tǒng)

        若沒有VxWorks兼容的 MS-DOS文件系統(tǒng),True-FFS文件系統(tǒng)的配置是沒有意義的,因此DOS文件系統(tǒng)及其相關(guān)組件都要被包含在TrueFFS文件系統(tǒng)中。另外,還有一些非必需的文件系統(tǒng)的其他組件,可以增加文件系統(tǒng)基本功能的支持(如ls、cd、copy等命令),也需要添加進來。在config.h文件中配置TrueFFS文件系統(tǒng)如下:

        定義INCLUDE_TFFS后,VxWorks系統(tǒng)啟動時的初始化代碼會調(diào)用tffsDrv()來創(chuàng)建和管理TrueFFS所需的結(jié)構(gòu)和全局變量,并為所有掛接了的Flash設(shè)備注冊Socket組件驅(qū)動。鏈接時,通過解析與tffsDrv()相關(guān)聯(lián)的符號可以將TrueFFS所必需的軟件模塊連接到Vx-Works映像中。

        2.2 MTD層實現(xiàn)

        MTD層軟件為TrueFFS文件系統(tǒng)提供了底層Flash的地址映射、讀、寫、擦除和ID識別等操作的函數(shù)。所有MTD層軟件必須包含3個函數(shù):寫數(shù)據(jù)函數(shù)、擦除扇區(qū)(塊)函數(shù)和ID識別函數(shù)。

        在BSP目錄下創(chuàng)建SST39VF1601的MTD層驅(qū)動程序文件SST39VF1601.c,并為該驅(qū)動程序文件編寫以下函數(shù):

        ①Flash ID識別函數(shù)sst39vf1601Identify()。該函數(shù)通過讀取Flash的ID號,判斷底層Flash設(shè)備是否適合本MTD層驅(qū)動,并為用于底層操作的Flash數(shù)據(jù)結(jié)構(gòu)vol注冊成員函數(shù)和成員變量。其中注冊的成員函數(shù)有地址映射函數(shù)、寫數(shù)據(jù)函數(shù)和扇區(qū)(塊)擦除函數(shù),注冊變量有Flash存儲器的類型type、Flash存儲器的大小、平分?jǐn)?shù)據(jù)總線的Flash芯片個數(shù)interleaving、構(gòu)建Flash文件系統(tǒng)的Flash芯片個數(shù)noOfChips、擦除塊的大小erasable-BlockSize等。

        ②Flash地址映射函數(shù)sst39vf1601Map(),用于實現(xiàn)系統(tǒng)地址到Flash地址的轉(zhuǎn)換。

        ③Flash扇區(qū)(塊)擦除函數(shù)sst39vf1601Erase(),用于擦除Flash的一個塊或扇區(qū),擦除大小應(yīng)與erasable-BlockSize一致,在sst39vf1601Identify()函數(shù)中定義erasableBlockSize為4KB,因此sst39vf1601Erase()一次可擦除4KB的扇區(qū)。

        ④Flash寫數(shù)據(jù)函數(shù)sst39vf1601Write(),向指定的Flash地址處寫一段數(shù)據(jù)。由于SST39VF1601位寬為16位,因此被寫入數(shù)據(jù)的地址必須半字對齊。

        ⑤編程結(jié)束檢測函數(shù)doneDetect(),檢測擦除、寫入操作是否結(jié)束,調(diào)用Flash擦除函數(shù)和寫入函數(shù)后必須調(diào)用該函數(shù),檢測當(dāng)前操作是否結(jié)束,是否可以再次進行讀、寫和擦除操作。

        MTD層驅(qū)動程序編寫完成后,還應(yīng)向Socket層注冊MTD層驅(qū)動程序,過程如下。

        ①配置tffsConfig.c文件。將Tornado安裝目錄target\src\drv\tffs下的tffsConfig.c文件拷貝至 BSP目錄下,在函數(shù)聲明中添加:

        ②添加MTD模塊至BSP。打開BSP目錄下的Makefile文件,設(shè)置添加:MACH_EXTRA=sst39vf1601.o ftpdLib.o…

        即把SST39VF1601的MTD層驅(qū)動程序添加到目標(biāo)代碼中,連同內(nèi)核模塊一起編譯。

        2.3 Socket層實現(xiàn)

        Socket層提供了TrueFFS與板卡硬件之間的接口服務(wù),由systffs.c文件實現(xiàn)。系統(tǒng)在Tornado安裝目錄target\config\comps\src下提供了一個原始systffs.c文件,可以將此文件拷貝到自己的BSP目錄下進行修改,來實現(xiàn)Socket層驅(qū)動。systffs.c文件的修改有以下幾個關(guān)鍵點:

        ◆sysTffsInit()函數(shù),完成TrueFFS文件系統(tǒng)的初始化,并調(diào)用注冊函數(shù)rfaRegister();

        ◆rfaRegister()函數(shù),負(fù)責(zé)注冊Socket結(jié)構(gòu)的各個成員函數(shù);

        ◆被rfaRegister()函數(shù)注冊的各個成員函數(shù);

        ◆設(shè)備硬件相關(guān)的宏定義。

        在系統(tǒng)提供的原始文件systffs.c中,定義了所有必需的函數(shù)。設(shè)計在一片NOR Flash SST39VF1601上建立TrueFFS文件系統(tǒng)的情況下,原始sysTffsInit()函數(shù)和各個被注冊函數(shù)可以完成TrueFFS文件系統(tǒng)的初始化、Socket層的管理,因此也不需要更改。該文件中需要重新定義與硬件相關(guān)的宏:

        需要注意的是,硬件設(shè)計中SST39VF1601的起始地址是從0x00000000開始的,之所以定義FLASH_BASE_ADRS為0x00080000,是因為SST39VF1601的前0.5MB用于存儲VxWorks的BootRom,在調(diào)用TrueFFS文件系統(tǒng)格式化函數(shù)tffsDevFormat()時不應(yīng)將該部分格式化。

        3 掛接VxWorks DOS文件系統(tǒng)

        包含TrueFFS文件系統(tǒng)的VxWorks映像在目標(biāo)機上運行時,必須在TrueFFS的Flash驅(qū)動上掛接Vx-Works DOS文件系統(tǒng)后,TrueFFS文件系統(tǒng)才真正能夠使用,VxWorks DOS文件系統(tǒng)掛接過程如圖2所示。

        VxWorks DOS文件系統(tǒng)的掛接過程如下。

        (1)格式化Flash設(shè)備

        在Flash設(shè)備上首次建立TrueFFS文件系統(tǒng)時,應(yīng)該調(diào)用TrueFFS文件系統(tǒng)格式化函數(shù)tffsDevFormat()格式化Flash設(shè)備,該函數(shù)原型如下:

        圖2 VxWorks DOS文件系統(tǒng)掛接過程

        tffsDriveNo為TrueFFS設(shè)備驅(qū)動號,此處只構(gòu)建一個TrueFFS設(shè)備,因此設(shè)置為0;arg為格式化參數(shù)結(jié)構(gòu)tffsDevFormatParams的地址,此處為0,表示使用target\h\tffs目錄下頭文件tffsDev.h中定義的TrueFFS標(biāo)準(zhǔn)格式化參數(shù)TFFS_STD_FORMAT_PARAMS,即從地址為Flash_BASE_ADRS處開始,格式化大小為FLASH_SIZE的空間,若NOR Flash支持則格式化為FAT格式;函數(shù)調(diào)用返回狀態(tài)STATUS,格式化成功為OK,否則為ERROR。

        (2)配置TrueFFS文件系統(tǒng)

        格式化Flash設(shè)備后,就可以調(diào)用usrTffsConfig()掛接VxWorks DOS文件系統(tǒng),該函數(shù)原型如下:STATUS usrTffsConfig (int drive,int removable,char *fileName);

        drive為TrueFFS設(shè)備驅(qū)動號,此處只構(gòu)建一個TrueFFS設(shè)備,因此設(shè)置為0;removable為Flash存儲介質(zhì)是否可移除標(biāo)記,0表示不可移除,1表示可以移除,此處為0;fileName為文件系統(tǒng)掛接點的名字,此處使用“/tffs0/”;函數(shù)調(diào)用返回狀態(tài) STATUS,格式化成功為OK,否則為ERROR。

        (3)測試TrueFFS文件系統(tǒng)

        配置TrueFFS文件系統(tǒng)后,可調(diào)用devs函數(shù),顯示系統(tǒng)中掛接的所有設(shè)備,若出現(xiàn)設(shè)備“/tffs0/”,則表示True-FFS文件系統(tǒng)掛接成功。此時調(diào)用VxWorks DOS命令chdir(“/tffs0/”),將當(dāng)前目錄切換到 TrueFFS文件系統(tǒng)掛接點/tffs0/,調(diào)用VxWorks DOS命令ls顯示當(dāng)前目錄下所有文件??捎肍TP客戶端登陸目標(biāo)機,可上傳、下載文件,如圖3所示。 28

        圖3 使用FTP上傳、下載文件

        結(jié) 語

        本文以VxWorks實時多任務(wù)操作系統(tǒng)為基礎(chǔ),詳細(xì)描述了在嵌入式系統(tǒng)中常用的NOR Flash存儲器上建立TrueFFS文件系統(tǒng)的方法。TrueFFS文件系統(tǒng)建立后,可以很方便地更新系統(tǒng)程序、存取設(shè)備數(shù)據(jù),有效地提高了嵌入式設(shè)備的可維護性和易用性。

        [1]李忠民,楊剛,顧亦然,等.ARM嵌入式VxWorks實踐教程[M].北京:北京航空航天大學(xué)出版社,2006:6-7.

        [2]Wind River.VxWorks Programmer's Guide 5.5,2002:295-297,300-301.

        猜你喜歡
        格式化驅(qū)動程序扇區(qū)
        分階段調(diào)整增加扇區(qū)通行能力策略
        南北橋(2022年2期)2022-05-31 04:28:07
        現(xiàn)代人守則:昏死之前請把手機格式化
        U盤故障排除經(jīng)驗談
        格式化
        詩林(2016年5期)2016-10-25 07:51:39
        基于貝葉斯估計的短時空域扇區(qū)交通流量預(yù)測
        重建分區(qū)表與FAT32_DBR研究與實現(xiàn)
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        黑人巨大亚洲一区二区久| 国语自产偷拍精品视频偷| 人人妻人人澡人人爽人人精品电影| 欧美日韩高清一本大道免费 | 最新亚洲人成无码网站| 日韩精品欧美激情国产一区| 黄片国产一区二区三区| 把女人弄爽特黄a大片| 亚洲欧美日韩一区二区三区在线| 亚洲AV无码专区国产H小说| 精品国产日产av在线| 久久亚洲av无码精品色午夜| 牲欲强的熟妇农村老妇女| 久久免费精品国产72精品剧情| 精品女人一区二区三区| 色婷婷一区二区三区四区成人网| 囯产精品一品二区三区| 国产成人一区二区三区高清| 一区二区午夜视频在线观看| 国产日韩精品欧美一区喷水| 丝袜足控一区二区三区| 果冻蜜桃传媒在线观看| 91九色最新国产在线观看| 性裸交a片一区二区三区| 日本午夜精品理论片A级APP发布| 日韩成精品视频在线观看| av天堂精品久久综合网| 97se亚洲精品一区| 在线观看精品国产福利片87| 日本高清一区二区在线播放| 午夜时刻免费入口| 国产免费破外女真实出血视频| 蜜桃网站在线免费观看视频| 日本不卡在线视频二区三区 | 国产麻豆精品一区二区三区v视界| 成人午夜视频在线观看高清| 亚洲精品国产精品乱码视色| 国产真人性做爰久久网站| 欧美xxxx新一区二区三区| 亚洲精品中文字幕91| 亚洲中文字幕无码av|