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

μC/FS嵌入式文件系統(tǒng)移植研究

2012-04-29 00:44:03司瑩瑩曹高芳
計(jì)算機(jī)時(shí)代 2012年5期

司瑩瑩 曹高芳

摘要: 介紹了μC/FS嵌入式文件系統(tǒng)的主要功能,著重說明了μC/FS的移植步驟,實(shí)現(xiàn)了μC/FS在SD上的移植。測(cè)試結(jié)果表明,基于SD卡的μC/FS文件系統(tǒng)移植在采集系統(tǒng)中的應(yīng)用滿足了設(shè)計(jì)要求,并具有良好的性能。

關(guān)鍵詞: 嵌入式文件系統(tǒng); μC/FS; 移植

中圖分類號(hào):TP319文獻(xiàn)標(biāo)志碼:A文章編號(hào):1006-8228(2012)05-03-03

Research and application of μC/FS embedded file system migration

Si Yingying, Cao Gaofang

(Binzhou Medical University,Yantai, Shandong 264003, China)

Abstract: The main function and feature of μC/FS embedded file system is described, highlights steps of μC/FS migration is illustrated. It is realized that μC/FS is migrated to SD card. The results of test show that the application of μC/FS file system migration based on SD card can meet the design of requirements and have good performance.

Key words: embedded file system; μC/FS; migration

0 引言

進(jìn)入后PC技術(shù)時(shí)代,嵌入式操作系統(tǒng)成為最受關(guān)注的技術(shù)之一。在嵌入式操作系統(tǒng)中,文件管理系統(tǒng)的地位顯得非常重要。目前通用的操作系統(tǒng)上有很多成熟的文件系統(tǒng),如DOS/Windows9X下的FAT16/32文件系統(tǒng)、WindowsNT/2K/XP下的NTFS文件系統(tǒng)和UNIX文件系統(tǒng)等,但這些通用文件系統(tǒng)并不適合直接應(yīng)用于嵌入式實(shí)時(shí)系統(tǒng)。主要原因有兩點(diǎn):一是通用文件系統(tǒng)采用緩存技術(shù)提高文件系統(tǒng)的速度特性,要耗費(fèi)大量的系統(tǒng)資源;二是嵌入式實(shí)時(shí)系統(tǒng)電源的突發(fā)性斷電會(huì)對(duì)存儲(chǔ)造成很大影響,通用文件系統(tǒng)對(duì)此欠考慮[1]。

嵌入式文件系統(tǒng)比較簡(jiǎn)單,主要提供文件存儲(chǔ)、檢索和更新等功能,一般不提供保護(hù)和加密等安全機(jī)制。它以系統(tǒng)調(diào)用和命令方式提供文件的各種操作,主要包括設(shè)置、修改對(duì)文件和目錄的存取權(quán)限,提供建立、修改、改變和刪除目錄等服務(wù),提供創(chuàng)建、打開、讀寫、關(guān)閉和撤銷文件等服務(wù)[2]。嵌入式文件系統(tǒng)能夠以較短的時(shí)間實(shí)時(shí)響應(yīng),對(duì)文件的操作允許多個(gè)任務(wù)同時(shí)打開文件并進(jìn)行讀操作,具有可裁剪、可配置、支持多種存儲(chǔ)設(shè)備和開放的體系架構(gòu)等性能。其中μC/FS嵌入式文件系統(tǒng)以其源碼開放、價(jià)格低廉、兼容性等特點(diǎn)日漸受到重視。

1 μC/FS文件系統(tǒng)

μC/FS是Micrium公司開發(fā)的一個(gè)嵌入式文件系統(tǒng),可以應(yīng)用于多種存儲(chǔ)介質(zhì),并為它們提供了基本硬件接口函數(shù)。μC/FS嵌入式文件系統(tǒng)是一個(gè)高性能的函數(shù)庫,能夠在速度、多功能性和內(nèi)存占用上進(jìn)行優(yōu)化。它的優(yōu)點(diǎn)是:采用模塊化結(jié)構(gòu),可讀性強(qiáng);支持標(biāo)準(zhǔn)的應(yīng)用程序接口,可移植性高;符合FAT標(biāo)準(zhǔn),支持FAT格式文件,可應(yīng)用的嵌入式操作系統(tǒng)范圍廣。μC/FS的源代碼用標(biāo)準(zhǔn)C語言編寫,幾乎可以應(yīng)用于所有處理器[3]。其主要功能如下。

⑴ 支持與MS-DOS/MS Windows兼容的FAT12、FAT16和FAT32文件系統(tǒng)。

⑵ 支持中文長文件名的FAT存儲(chǔ)介質(zhì)。

⑶ 支持多個(gè)設(shè)備驅(qū)動(dòng)程序,允許同一時(shí)間通過文件系統(tǒng)訪問不同類型的硬件。

⑷ 支持多種存儲(chǔ)介質(zhì),允許同一時(shí)間通過驅(qū)動(dòng)程序訪問不同存儲(chǔ)介質(zhì)。

⑸ 支持操作系統(tǒng),μC/FS可以移植到任意操作系統(tǒng),并在多線程條件下使用。

⑹ 支持標(biāo)準(zhǔn)C語言中的stdio.h中類似標(biāo)準(zhǔn)應(yīng)用程序接口(API),標(biāo)準(zhǔn)C語言I/O庫中的應(yīng)用程序可以移植到μC/FS中使用。

⑺ 支持簡(jiǎn)單的設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu),μC/FS驅(qū)動(dòng)程序只需要基本的讀寫塊函數(shù)。

⑻ 支持SmartMediaka和NAND閃存器件的驅(qū)動(dòng)程序,可用于訪問硬件(讀卡器);支持通用電子集成驅(qū)動(dòng)器(IDE)驅(qū)動(dòng)程序,用于真正IDE或內(nèi)存映射模式的CF卡;支持通用閃存芯片(EEPOM)驅(qū)動(dòng)程序,用于處理不同閃存扇區(qū)大小。

⑼ 支持集成多媒體和SD卡串行外設(shè)接口(SPI)模式。

⑽ 支持專用文件系統(tǒng)(EFS),支持中文長文件名。

μC/FS依據(jù)各層不同的功能劃分組織層次,使得μC/FS結(jié)構(gòu)清晰[4]。API層是μC/FS和用戶應(yīng)用程序的接口,包括一個(gè)與文件函數(shù)例如FS_fopen、FS_fwrite等有關(guān)的ANSIC庫。應(yīng)用程序通過調(diào)用API層所提供的函數(shù)可方便地訪問文件系統(tǒng)層。文件系統(tǒng)層把文件的操作請(qǐng)求傳遞給邏輯塊處理,系統(tǒng)通過這種文件傳遞調(diào)用邏輯塊為設(shè)備制定相應(yīng)的設(shè)備驅(qū)動(dòng)。邏輯塊操作的主要功能是使對(duì)設(shè)備驅(qū)動(dòng)的訪問同步,并為文件系統(tǒng)層提供一個(gè)便捷的接口。邏輯塊層調(diào)用一個(gè)設(shè)備驅(qū)動(dòng)來進(jìn)行塊操作。設(shè)備驅(qū)動(dòng)層是訪問硬件設(shè)備的底層程序,它包括基本的I/O函數(shù),以便訪問硬件設(shè)備和保存指向函數(shù)指針的向量表[5]。

2 μC/FS文件系統(tǒng)的移植步驟

μC/FS的默認(rèn)配置是一個(gè)內(nèi)存磁盤。進(jìn)行μC/FS文件系統(tǒng)移植首先要熟悉工程開發(fā)所需要的工具(如編譯器,工程管理,連接器等),并能夠添加文件、目錄到include搜索路徑;還要熟悉目標(biāo)工程使用的操作系統(tǒng)。將μC/FS移植到一個(gè)工程的進(jìn)程中需經(jīng)以下步驟。

⑴ 創(chuàng)建一個(gè)不包括μC/FS的工程。

⑵ 將μC/FS目錄下的文件添加到工程中,然后驗(yàn)證添加后的運(yùn)行情況。這時(shí)應(yīng)從工程文件下的程序代碼啟動(dòng)(但不包括main.c和start.c應(yīng)用程序)。應(yīng)用程序執(zhí)行過程如下:

(a) mian.c調(diào)用函數(shù)MainTask(),該函數(shù)的主要任務(wù)是完成初始化和添加μC/FS;

(b) 檢查卷標(biāo)是否需要低級(jí)格式化或高級(jí)格式化,并輸出卷標(biāo)名稱;

(c) 調(diào)用函數(shù)FS_GetFreeVolumeSpace()并輸出一個(gè)返回值—可用內(nèi)存磁盤的總空間;

(d) 創(chuàng)建并打開一個(gè)寫訪問設(shè)備的測(cè)試文件,向文件寫入4個(gè)字節(jié),并關(guān)閉文件句柄或程序輸出一個(gè)錯(cuò)誤信息;

(e) 再次調(diào)用函數(shù)FS_GetFreeVolumeSpace()并得到一個(gè)函數(shù)返回值—可用的RAM磁盤空間;

(f) 程序輸出一個(gè)退出消息并進(jìn)入循環(huán)等待。

⑶ 添加設(shè)備驅(qū)動(dòng)程序。在μC/ FS文件系統(tǒng)配置設(shè)備驅(qū)動(dòng)程序需要完成兩件事情:第一件是添加設(shè)備驅(qū)動(dòng)程序到工程文件。大多數(shù)驅(qū)動(dòng)程序運(yùn)行需要硬件的設(shè)備驅(qū)動(dòng)程序和特定的硬件,驅(qū)動(dòng)訪問硬件的底層I/O函數(shù)和全局表。全局表中存放了I/O函數(shù)的指針。需要硬件驅(qū)動(dòng)程序的有 NAND閃存、多媒體卡(MMC)、SD卡;不需要硬件驅(qū)動(dòng)程序的有NOR閃存、RAM。幾乎所有的驅(qū)動(dòng)程序使用之前都需要配置;配置函數(shù)主要任務(wù)是指定各自驅(qū)動(dòng)配置文件的內(nèi)存地址和內(nèi)存空間。第二件是添加硬件驅(qū)動(dòng)到工程文件。

⑷ 激活驅(qū)動(dòng)程序。添加驅(qū)動(dòng)程序和硬件驅(qū)動(dòng)函數(shù)到工程文件后,復(fù)制config.c文件到μC/FS工程的配置目錄下。配置文件在文件系統(tǒng)運(yùn)行時(shí)發(fā)揮配置作用,它包含一個(gè)能快速、簡(jiǎn)易啟動(dòng)驅(qū)動(dòng)程序。其中最重要的啟動(dòng)函數(shù)是FS_X_AddDevices(),它是激活和配置啟動(dòng)函數(shù),不需要硬件驅(qū)動(dòng),必須在使用之前配置。

⑸ 調(diào)整內(nèi)存空間。文件系統(tǒng)在很多地方由于管理的目的需要使用內(nèi)存,內(nèi)存空間取決于配置文件尤其是驅(qū)動(dòng)的使用情況,通常硬盤、CF卡或SD卡驅(qū)動(dòng)要比簡(jiǎn)單的驅(qū)動(dòng)管理需要更多內(nèi)存空間。每個(gè)驅(qū)動(dòng)程序都需要分配內(nèi)存空間。文件系統(tǒng)在初始化階段分配到內(nèi)存,在運(yùn)行過程中會(huì)一直占用分配到的空間。宏ALLOC_SIZE就是在文件系統(tǒng)中用來根據(jù)各自驅(qū)動(dòng)配置函數(shù)指定內(nèi)存空間的。

3 μC/FS文件系統(tǒng)在SD卡上的移植應(yīng)用

SD卡(Secure Digital Memory Card)即安全數(shù)碼卡,是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,被廣泛使用在便攜式裝置上,如數(shù)碼相機(jī)、個(gè)人數(shù)碼助理(PDA)和多媒體播放器等。SD卡擁有高記憶容量、快速數(shù)據(jù)傳輸率、極大的靈活性和很好的安全性[6]。SD卡的通信基于一個(gè)9引腳接口(時(shí)鐘、命令、4根數(shù)據(jù)線、3根電源和地線),可以在最高25MHz頻率和低電壓范圍工作,不需要額外的電源來保持其上的記憶信息。SD卡主機(jī)接口支持MMC標(biāo)準(zhǔn)[7]。

SD卡的協(xié)議結(jié)構(gòu)如圖1所示。

[

SD卡

安全

規(guī)范

][音頻規(guī)范][其他應(yīng)用規(guī)范] [文件系統(tǒng)規(guī)范][SD卡物理層規(guī)范]

圖1SD卡協(xié)議結(jié)構(gòu)圖

其中,音頻規(guī)范和其他應(yīng)用規(guī)范闡述音頻應(yīng)用的規(guī)范和實(shí)現(xiàn)要求;SD卡文件系統(tǒng)規(guī)范闡述保存在SD卡中的文件結(jié)構(gòu)格式要求;SD卡安全規(guī)范闡述版權(quán)保護(hù)機(jī)制以及所支持的應(yīng)用專用命令;SD卡物理層規(guī)范闡述SD卡使用的物理接口和命令協(xié)議[8]。

3.1 μC/FS在SD卡的移植

μC/FS文件系統(tǒng)支持SD卡,但不包含SD卡驅(qū)動(dòng),用戶須提供SD卡設(shè)備邏輯層以下的驅(qū)動(dòng)文件。μC/FS支持以SPI模式訪問SD卡,用戶必須提供基本的I/O功能以實(shí)現(xiàn)對(duì)卡的訪問。

μC/FS文件系統(tǒng)的移植需要對(duì)所支持的設(shè)備類型、操作系統(tǒng)、塊的大小等項(xiàng)加以配置,因此需要定義頭文件FS_Conf.h下的FS_OS值為1,并配置函數(shù)FS_X_OS_Init、FS_X_OS_Unlock、FS_X_OS_Lock。μC/FS移植的關(guān)鍵是添加SD驅(qū)動(dòng),添加設(shè)備驅(qū)動(dòng)調(diào)用FS_AddDevice(),其代碼如下:

FS_AddDevice(&FS_MMC_SPI_Driver);

const FS_device_type

FS_MMC_SPI_Driver

{"SD device",

FS_SD_DevGetStatus,

FS_SD_ReadBlock,

FS_SD_WriteBlock,

FS_SD_DevIoCtl

};

其中FS_device_type是一個(gè)設(shè)備類型,定義為結(jié)構(gòu)體:

{Static int _DevGetName (U8 Unit);

Static int _DevGetStatus (U8 Unit);

Static int _DevRead (U8 Unit, U32 Sector, void *pBuffer);

Static int _DevWrite (U8 Unit, U32 Sector, void *pBuffer);

Static int _DevIoCtl (U8 Unit, I32 Cmd, I32 Aux,void

*pBuffer);

} FS_device_type

結(jié)構(gòu)體成員由設(shè)備名、設(shè)備狀態(tài)返回函數(shù)、讀函數(shù)、寫函數(shù)、控制函數(shù)組成。上述代碼的功能是把設(shè)備驅(qū)動(dòng)函數(shù)添加到設(shè)備驅(qū)動(dòng)表里,設(shè)備驅(qū)動(dòng)表向文件系統(tǒng)上層注冊(cè)以備調(diào)用設(shè)備驅(qū)動(dòng)程序。經(jīng)過此步驟后文件系統(tǒng)可以通過其中的FS_SD_ReadBlock和FS_SD_WriteBlock調(diào)用SD卡驅(qū)動(dòng)程序的讀寫函數(shù)。

3.2 SD卡驅(qū)動(dòng)程序測(cè)試

在測(cè)試過程中發(fā)現(xiàn),SD卡芯片支持庫提供的對(duì)設(shè)備訪問和控制的函數(shù)只能一次讀寫512字節(jié)的數(shù)據(jù),這極大地降低了存儲(chǔ)數(shù)據(jù)的速度。為了提高寫SD卡的讀寫速度,我們更改了μC/FS中FS_fat_fwrite函數(shù),使得文件系統(tǒng)在寫大于512KB的數(shù)據(jù)時(shí),把數(shù)據(jù)全部寫入緩沖區(qū)后才調(diào)用設(shè)備驅(qū)動(dòng)程序的寫函數(shù)FS_SD_WriteBlock。

實(shí)際應(yīng)用中,信號(hào)源發(fā)送頻率為500Hz、峰值為5V連續(xù)正弦波,采集時(shí)間為100秒;存儲(chǔ)到SD卡中的采集數(shù)據(jù)經(jīng)過讀卡器顯示的數(shù)據(jù)文件為7937KB;四通道數(shù)據(jù)采集,每通道采樣率為10kHz,A/D為16位。因此數(shù)據(jù)文件大小約為4×10×16×100/8=8MB,與實(shí)際采集數(shù)據(jù)量基本一致,系統(tǒng)的存儲(chǔ)功能正常。

SD卡中數(shù)據(jù)文件通過Matlab讀出的波形數(shù)據(jù)如圖2所示。

圖2讀SD卡數(shù)據(jù)波形截圖

由圖中可以看出四通道信號(hào)的每個(gè)周期由20個(gè)采樣點(diǎn)組成,與每通道信號(hào)采樣率10kHz相符。實(shí)際選用的SD卡的寫速度是1.5MB/S,SD卡在測(cè)試中寫速度約為187KB/S。如果使用高速SD卡,系統(tǒng)的讀寫速度將會(huì)得到顯著提高。

4 結(jié)束語

μC/FS文件系統(tǒng)在SD卡的移植,適合在對(duì)讀寫速度要求不是很高但對(duì)存儲(chǔ)容量和便攜性要求較高的場(chǎng)合使用。μC/FS文件系統(tǒng)移植操作簡(jiǎn)單,可應(yīng)用于大多數(shù)常見存儲(chǔ)介質(zhì),如磁盤、閃存等。如果將μC/FS文件系統(tǒng)的移植推廣到其他存儲(chǔ)介質(zhì),僅需要更改文件系統(tǒng)初始化函數(shù)FS_Init()、文件系統(tǒng)配置函數(shù)FS_AddDevice()、文件系統(tǒng)訪問函數(shù)FS_Read()和FS_Write()即可。

參考文獻(xiàn):

[1] William Stallings,王涌等譯.操作系統(tǒng)-內(nèi)核與設(shè)計(jì)原理(第四版)[M].電子工業(yè)出版社,2004.

[2] 成巍.嵌入式文件系統(tǒng)的的設(shè)計(jì)與實(shí)現(xiàn)[D].碩士論文,2006.1:2~6

[3] Micrium Corporation.μC/FS Embedded File System (SoftwareVersion 3.10),2004:33~42

[4] 唐長清,鄭強(qiáng),占惠星.μC/FS文件系統(tǒng)在Nand Flash上的實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2010.3:4~6

[5] 郝偉,李敬兆.基于μC/FS的大容量存儲(chǔ)FAT32格式的實(shí)現(xiàn)與應(yīng)用

[J].開發(fā)研究與設(shè)計(jì)技術(shù),2006:113

[6] 段琪瑋,周洪利.基于MMC卡的嵌入式文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)踐與經(jīng)驗(yàn),2006.7:94~96

[7] 李宏佳,徐曉曉,魏權(quán)利.基于ARM和SD卡的嵌入式文件系統(tǒng)研究與設(shè)計(jì)[J].電子設(shè)計(jì)應(yīng)用,2007.7:101~103

[8] 李家良,慕德俊.基于SD卡的μC/FS文件系統(tǒng)移植研究[J].微處理機(jī),2010.12:79~81

主站蜘蛛池模板: 色综合网址| 亚洲综合第一页| 美女裸体18禁网站| 亚洲一区波多野结衣二区三区| 又大又硬又爽免费视频| 国产高清在线精品一区二区三区| 国产亚洲欧美日本一二三本道| 秋霞午夜国产精品成人片| 午夜欧美理论2019理论| 99精品这里只有精品高清视频| 久久99热这里只有精品免费看| 免费国产在线精品一区| 亚洲一区黄色| 亚洲美女久久| 老司机午夜精品网站在线观看 | 亚洲中文字幕23页在线| 国产理论一区| 国产又粗又猛又爽| 久久精品无码国产一区二区三区| 在线看AV天堂| 欧美一级高清免费a| 九九视频在线免费观看| 欧美第一页在线| 成人福利在线看| 欧美中文字幕一区二区三区| 国模极品一区二区三区| 欧美天堂久久| 亚洲久悠悠色悠在线播放| 欧美精品v欧洲精品| 欧美不卡在线视频| 亚洲无码视频图片| 色九九视频| 亚洲色无码专线精品观看| 中文毛片无遮挡播放免费| 亚洲成人高清在线观看| 国产一区自拍视频| 久久精品aⅴ无码中文字幕| 亚洲va在线∨a天堂va欧美va| 精品国产电影久久九九| 中文字幕永久视频| 亚洲成人在线免费| 中文国产成人精品久久| 国产SUV精品一区二区| 不卡午夜视频| 人妻丝袜无码视频| 综合久久五月天| 91视频精品| 欧美另类视频一区二区三区| 在线另类稀缺国产呦| 伊人激情久久综合中文字幕| 91亚瑟视频| 无码中文字幕精品推荐| 狠狠综合久久| 日韩视频精品在线| 狠狠色婷婷丁香综合久久韩国| 色网站免费在线观看| 中文字幕在线视频免费| 欧类av怡春院| 日本成人一区| 波多野结衣久久精品| 国产亚洲欧美另类一区二区| 国产精品美人久久久久久AV| 亚洲乱码视频| 日韩欧美中文| 亚洲成人福利网站| 欧美人与牲动交a欧美精品| 综合天天色| 在线日韩日本国产亚洲| 色AV色 综合网站| 国产一区二区三区在线精品专区 | 一本大道香蕉中文日本不卡高清二区| 欧洲高清无码在线| 国产毛片不卡| 国产精品一区二区不卡的视频| 久久男人资源站| 日本高清有码人妻| 麻豆国产原创视频在线播放| 久久一色本道亚洲| 欧美国产三级| 国产精品不卡片视频免费观看| 精品一区二区无码av| 久久精品亚洲热综合一区二区|