999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用NOR Flash建立VxWorks TrueFFS文件系統

2012-09-25 02:59:56邵富杰徐云寬
單片機與嵌入式系統應用 2012年4期
關鍵詞:嵌入式設備

邵富杰,徐云寬

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

引 言

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

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

1 VxWorks TrueFFS文件系統結構

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

圖1 TrueFFS文件系統結構

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

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

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

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

2 SST39VF1601上建立TrueFFS文件系統

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

◆配置完整的DOS文件系統支持;

◆包含核心TrueFFS組件;

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

DOS文件系統、核心TrueFFS組件和翻譯層可以通過配置集成開發環境Tornado安裝目錄target\config\bspname\下的config.h文件實現,MTD層和Socket層需要編寫驅動程序實現[2]。

2.1 配置TrueFFS文件系統

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

定義INCLUDE_TFFS后,VxWorks系統啟動時的初始化代碼會調用tffsDrv()來創建和管理TrueFFS所需的結構和全局變量,并為所有掛接了的Flash設備注冊Socket組件驅動。鏈接時,通過解析與tffsDrv()相關聯的符號可以將TrueFFS所必需的軟件模塊連接到Vx-Works映像中。

2.2 MTD層實現

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

在BSP目錄下創建SST39VF1601的MTD層驅動程序文件SST39VF1601.c,并為該驅動程序文件編寫以下函數:

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

②Flash地址映射函數sst39vf1601Map(),用于實現系統地址到Flash地址的轉換。

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

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

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

MTD層驅動程序編寫完成后,還應向Socket層注冊MTD層驅動程序,過程如下。

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

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

即把SST39VF1601的MTD層驅動程序添加到目標代碼中,連同內核模塊一起編譯。

2.3 Socket層實現

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

◆sysTffsInit()函數,完成TrueFFS文件系統的初始化,并調用注冊函數rfaRegister();

◆rfaRegister()函數,負責注冊Socket結構的各個成員函數;

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

◆設備硬件相關的宏定義。

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

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

3 掛接VxWorks DOS文件系統

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

VxWorks DOS文件系統的掛接過程如下。

(1)格式化Flash設備

在Flash設備上首次建立TrueFFS文件系統時,應該調用TrueFFS文件系統格式化函數tffsDevFormat()格式化Flash設備,該函數原型如下:

圖2 VxWorks DOS文件系統掛接過程

tffsDriveNo為TrueFFS設備驅動號,此處只構建一個TrueFFS設備,因此設置為0;arg為格式化參數結構tffsDevFormatParams的地址,此處為0,表示使用target\h\tffs目錄下頭文件tffsDev.h中定義的TrueFFS標準格式化參數TFFS_STD_FORMAT_PARAMS,即從地址為Flash_BASE_ADRS處開始,格式化大小為FLASH_SIZE的空間,若NOR Flash支持則格式化為FAT格式;函數調用返回狀態STATUS,格式化成功為OK,否則為ERROR。

(2)配置TrueFFS文件系統

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

drive為TrueFFS設備驅動號,此處只構建一個TrueFFS設備,因此設置為0;removable為Flash存儲介質是否可移除標記,0表示不可移除,1表示可以移除,此處為0;fileName為文件系統掛接點的名字,此處使用“/tffs0/”;函數調用返回狀態 STATUS,格式化成功為OK,否則為ERROR。

(3)測試TrueFFS文件系統

配置TrueFFS文件系統后,可調用devs函數,顯示系統中掛接的所有設備,若出現設備“/tffs0/”,則表示True-FFS文件系統掛接成功。此時調用VxWorks DOS命令chdir(“/tffs0/”),將當前目錄切換到 TrueFFS文件系統掛接點/tffs0/,調用VxWorks DOS命令ls顯示當前目錄下所有文件。可用FTP客戶端登陸目標機,可上傳、下載文件,如圖3所示。 28

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

結 語

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

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

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

猜你喜歡
嵌入式設備
諧響應分析在設備減振中的應用
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
基于VB6.0+Access2010開發的設備管理信息系統
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發平臺
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
如何在設備采購中節省成本
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 亚洲成人精品久久| 8090成人午夜精品| 日韩免费毛片| 中文字幕 欧美日韩| 亚洲无线一二三四区男男| www.日韩三级| 中文字幕无码制服中字| 欧亚日韩Av| 亚洲综合九九| 毛片卡一卡二| 二级特黄绝大片免费视频大片| 国产成人一区| 国产一区二区色淫影院| 欧美一区国产| 国产人碰人摸人爱免费视频| 在线看片中文字幕| 国产毛片不卡| 97久久超碰极品视觉盛宴| 国产精品第| 超碰精品无码一区二区| 一级毛片免费不卡在线| 久青草免费在线视频| 国产91九色在线播放| 国产小视频网站| 国产美女免费| 98超碰在线观看| 久久午夜夜伦鲁鲁片无码免费| 无码日韩视频| 制服丝袜亚洲| 国产精品男人的天堂| 国产免费久久精品99re丫丫一| 国产精品香蕉| 亚洲国产精品成人久久综合影院| 中文字幕人妻无码系列第三区| 国产欧美日本在线观看| A级毛片高清免费视频就| 99er精品视频| 秋霞午夜国产精品成人片| 毛片在线播放网址| 五月天婷婷网亚洲综合在线| 婷婷午夜天| 丝袜美女被出水视频一区| 无码免费视频| 九色视频在线免费观看| 99视频全部免费| 久久香蕉欧美精品| 精品人妻一区无码视频| 中文纯内无码H| 中字无码精油按摩中出视频| 美女国产在线| 久久久波多野结衣av一区二区| 国产69精品久久久久孕妇大杂乱| 蜜臀AV在线播放| 蝌蚪国产精品视频第一页| 国产91视频观看| 欧美激情网址| 国产一区二区三区精品欧美日韩| 亚洲人成人无码www| 日本中文字幕久久网站| 午夜激情婷婷| 精品国产网| 亚洲成aⅴ人片在线影院八| 亚洲人成网站18禁动漫无码| 久久综合色视频| 四虎成人精品在永久免费| 99视频在线观看免费| 小说 亚洲 无码 精品| 亚洲精品动漫| 五月婷婷中文字幕| 精品第一国产综合精品Aⅴ| 欧洲亚洲一区| 在线色国产| 在线观看无码av五月花| 国产人成乱码视频免费观看| a级免费视频| 亚洲精品视频网| 18黑白丝水手服自慰喷水网站| 丁香婷婷激情网| 精品视频在线一区| 亚洲综合第一区| 国内精品小视频在线| 中国国产高清免费AV片|