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

        ?

        FATFS在嵌入式操作系統(tǒng)FreeRTOS中的移植與應(yīng)用

        2017-04-10 23:49:22高兆強(qiáng)王紹舉徐偉代書博李治根
        現(xiàn)代電子技術(shù) 2017年6期
        關(guān)鍵詞:嵌入式操作系統(tǒng)

        高兆強(qiáng) 王紹舉 徐偉 代書博 李治根

        摘 要: FreeRTOS作為一款免費(fèi)的實(shí)時(shí)操作系統(tǒng),系統(tǒng)內(nèi)核小、裁剪方便、移植性好,廣泛應(yīng)用于對(duì)成本敏感的小型嵌入式系統(tǒng)中,但是FreeRTOS本身不帶文件管理功能,不便于很多需要經(jīng)常進(jìn)行文件存儲(chǔ)與讀寫的應(yīng)用。為了提高該操作系統(tǒng)易用性,介紹一款免費(fèi)、小巧并且讀寫高效的文件管理系統(tǒng),即FATFS,詳細(xì)說明FATFS在FreeRTOS上的移植與注意事項(xiàng),重點(diǎn)說明了FATFS在FreeRTOS中如何解決重入的問題,最后在STM32F4平臺(tái)上對(duì)U盤進(jìn)行讀寫來驗(yàn)證其文件管理的效果。結(jié)果表明,其可以很好地完成文件管理的功能。

        關(guān)鍵詞: 嵌入式操作系統(tǒng); FATFS; FreeRTOS; 文件管理系統(tǒng)

        中圖分類號(hào): TN911?34; TP319 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)06?0065?03

        Abstract: As a free real?time operating system, FreeRTOS is widely used in cheap system due to its small system kernel, convenent trim and good portability. However, FreeRTOS itself does not have any file management function, so it is not inconvenient for some applications of often writing and reading files. To make it easy to use, a free?charge, small and efficient file management system, FATFS is introduced in this paper. The FATFS transplantation and matters needing attention on FreeRTOS are illustrated in detail. The method that how to solve the problem of FATFS′s re?entry in the FreeRTOS is described emphatically. A test to read and write something in a U?disk on the platform STM32F4 was conducted to verify its effect. The result shows that it can realize the function of file management.

        Keywords: embedded operating system; FATFS; FreeRTOS; file management system

        隨著信息技術(shù)的發(fā)展,當(dāng)今社會(huì)的信息量越來越大,以往由單片機(jī)系統(tǒng)簡(jiǎn)單地對(duì)存儲(chǔ)媒介按地址、按字節(jié)的讀/寫已經(jīng)無法滿足人們實(shí)際應(yīng)用的需要,利用文件系統(tǒng)對(duì)存儲(chǔ)媒介進(jìn)行管理成了今后單片機(jī)系統(tǒng)的一個(gè)發(fā)展方向[1]。目前常用的文件系統(tǒng)主要有微軟的FAT12,F(xiàn)AT16,F(xiàn)AT32,NTFS,以及Linux 系統(tǒng)下的EXT2,EXT3 等。由于FAT高效、靈活的特點(diǎn),在當(dāng)前的消費(fèi)類電子產(chǎn)品中,用得最多的還是FAT 文件系統(tǒng),如U 盤,MP3,MP4,數(shù)碼相機(jī)等,因此本文介紹了一款易于移植和使用、占用硬件資源相對(duì)較小而功能又強(qiáng)大的FAT 開源文件系統(tǒng)——FATFS[2]。

        嵌入式操作系統(tǒng)FreeRTOS的內(nèi)核不帶文件系統(tǒng),雖然提供了帶文件系統(tǒng)的例子,但是需要授權(quán)[3],這勢(shì)必會(huì)增加嵌入式開發(fā)的成本;因此本文在FreeRTOS中引進(jìn)了免費(fèi)、開源的文件管理系統(tǒng)FATFS,使得FreeRTOS的使用更加方便快捷。同時(shí)由于FATFS是一款高效、免費(fèi)、資源占用率低的文件管理系統(tǒng),使得在只占用很少資源的情況下增加開發(fā)FreeRTOS嵌入式產(chǎn)品的效率,并且沒有增加成本。

        1 FreeRTOS

        FreeRTOS是一款非常優(yōu)秀的嵌入式操作系統(tǒng),非常適合對(duì)成本敏感的小型嵌入式設(shè)備,但是為了精簡(jiǎn),F(xiàn)reeRTOS內(nèi)核并沒有提供文件管理、網(wǎng)絡(luò)以及GUI等功能,當(dāng)需要這些功能的時(shí)候就需要移植第三方的軟件包[4]。其中文件管理系統(tǒng)在一些需要頻繁存儲(chǔ)、處理數(shù)據(jù)的嵌入式設(shè)備中尤其重要,因此本文將一款精簡(jiǎn)但是功能強(qiáng)大的文件管理系統(tǒng)FATFS移植到FreeRTOS中[5]。

        2 FATFS

        FATFS是一款完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)。它完全用標(biāo)準(zhǔn)的C語言編寫,所以具有良好的硬件平臺(tái)獨(dú)立性,可以非常方便地移植到8051,PIC,AVR,SH,Z80,ARM等系列單片機(jī)上且只需要做簡(jiǎn)單的修改。它支持FAT12,F(xiàn)AT16,F(xiàn)AT32,支持多個(gè)存儲(chǔ)媒介,有獨(dú)立的緩沖區(qū),可以對(duì)多個(gè)文件進(jìn)行讀寫操作,并特別對(duì)8位單片機(jī)和16位單片機(jī)進(jìn)行優(yōu)化,增加其讀寫效率[6]。

        FATFS的代碼量非常小,大小總共不到200 KB,應(yīng)用時(shí)可以把字庫存放到外部存儲(chǔ)中,運(yùn)行時(shí)占用內(nèi)存不到1 KB,因此FATFS并不會(huì)對(duì)硬件增加太多的額外負(fù)擔(dān)。同時(shí)FATFS功能非常強(qiáng)大,它能支持多卷,多個(gè)ANSI/OEM或者Unicode,支持多種扇區(qū)大小,只讀、最小化的API和I/O緩沖區(qū),并且支持RTOS,這使得FATFS非常適合移植到FreeRTOS的系統(tǒng)中去。

        FATFS設(shè)計(jì)的讀寫方式非常巧妙,這使得它擁有非常高的讀寫效率,扇區(qū)局部的數(shù)據(jù)通過文件I/O緩沖區(qū)來傳輸;對(duì)于長(zhǎng)數(shù)據(jù)的傳輸,中間的或多個(gè)扇區(qū)的數(shù)據(jù)直接傳輸?shù)綉?yīng)用程序緩沖區(qū);扇區(qū)對(duì)齊的整塊數(shù)據(jù)傳輸?shù)那闆r下,不使用文件I/O緩沖區(qū)。在直接傳輸時(shí)disk_read函數(shù)一次會(huì)最大程度的讀取更多的扇區(qū),但是多扇區(qū)傳輸不會(huì)跨越簇邊界,即使它們是相鄰的。因此使用扇區(qū)對(duì)齊的方式進(jìn)行讀寫訪問可以避免緩沖區(qū)數(shù)據(jù)傳輸,并且讀寫效率將會(huì)大大提升[7]。

        3 FATFS在FreeROTS上的移植與重入問題

        3.1 FATFS在FreeROTS上的移植

        這里使用的FATFS是非常完善的R0.10b版本,移植FATFS主要分為三步:

        (1) 數(shù)據(jù)類型。在integer.h 里面定義數(shù)據(jù)的類型。這里需要了解使用的編譯器的數(shù)據(jù)類型,并根據(jù)編譯器定義好數(shù)據(jù)類型。使用的編譯器是MDK[8?9],需要轉(zhuǎn)換的類型有:

        typedef unsigned char BYTE;

        typedef short SHORT;

        typedef unsigned short WORD;

        typedef unsigned short WCHAR;

        typedef int INT;

        typedef unsigned int UINT;

        typedef long LONG;

        typedef unsigned long DWORD;

        (2) 配置。打開 ffconf.h,文件系統(tǒng)的配置裁剪等均在此頭文件中進(jìn)行定義配置,具體配置如表1所示。

        表1 ffconf.h需要配置的參數(shù)

        (3) 函數(shù)編寫。打開diskio.c,進(jìn)行底層驅(qū)動(dòng)編寫,需要根據(jù)具體的磁盤編寫6 個(gè)接口函數(shù),具體如表2所示,其中讀寫函數(shù)實(shí)現(xiàn)的方式如圖1所示。

        表2 需要編寫的函數(shù)

        3.2 重入問題

        操作系統(tǒng)中一般是多進(jìn)程的,對(duì)于不同的文件操作總是可以同時(shí)工作,這與重入無關(guān),而對(duì)于同一個(gè)文件的重入訪問則要考慮重入,如果一個(gè)文件函數(shù)調(diào)用時(shí)其他訪問的文件被一個(gè)線程使用,則此訪問將阻塞,直到該文件解鎖。

        在FreeRTOS中是利用互斥信號(hào)量來完成這個(gè)功能的,使能_FS_REENTRANT選項(xiàng),此時(shí),ff.c中的與平臺(tái)相關(guān)的鎖定函數(shù)必須為每個(gè)RTOS重新編寫,同時(shí)_SYNC_t選項(xiàng)要相應(yīng)的寫為FreeRTOS對(duì)應(yīng)的信號(hào)量結(jié)構(gòu)體xSemaphoreHandle。同時(shí)需要加入這四個(gè)函數(shù):int ff_cre_syncobj(BYTE vol,_SYNC_t*sobj);int ff_req_grant(_SYNC_t sobj);void ff_rel_grant(_SYNC_t sobj);int ff_del_syncobj(_SYNC_t sobj)。分別對(duì)應(yīng)創(chuàng)建信號(hào)量,請(qǐng)求信號(hào)量,釋放信號(hào)量和刪除信號(hào)量。

        函數(shù)f_mount掛載磁盤同時(shí)創(chuàng)建信號(hào)量sobj,函數(shù)f_open會(huì)請(qǐng)求信號(hào)量,然后打開/創(chuàng)建文件,然后釋放信號(hào)量[9]。這樣就保證同一個(gè)時(shí)間點(diǎn)只有一個(gè)任務(wù)可以打開同一個(gè)文件,這樣就保證重入功能的實(shí)現(xiàn),具體如圖2所示。

        4 文件傳輸應(yīng)用

        4.1 多任務(wù)情況下文件傳輸

        創(chuàng)建三個(gè)任務(wù),任務(wù)一和任務(wù)二的優(yōu)先級(jí)為最高和次高,只是簡(jiǎn)單的進(jìn)行LED燈的閃爍,任務(wù)三優(yōu)先級(jí)最低[10],進(jìn)行文件的傳輸,具體情況如圖3所示。

        在任務(wù)不斷調(diào)度的情況下,傳輸大小為50 MB的文件,耗時(shí)2 min 22 s,這時(shí)只用了64 KB的內(nèi)存作為緩沖區(qū),如果加大內(nèi)存,速度則會(huì)更快。

        4.2 多任務(wù)對(duì)同一文件操作

        下面創(chuàng)建兩個(gè)相同優(yōu)先級(jí)的任務(wù),利用信號(hào)量[11?12],任務(wù)一和任務(wù)二分別對(duì)同一文件進(jìn)行復(fù)制,來驗(yàn)證在操作系統(tǒng)下的多任務(wù)對(duì)同一文件的操作。具體情況如圖4所示。

        實(shí)驗(yàn)結(jié)果如圖5所示。

        這說明相同優(yōu)先級(jí)的任務(wù)一和任務(wù)二都完成了對(duì)文件1.caj的復(fù)制工作,這表明在FreeRTOS中移植文件管理系統(tǒng)FATFS后,利用信號(hào)量多個(gè)任務(wù)可以同時(shí)對(duì)同一個(gè)文件進(jìn)行讀寫操作。

        5 結(jié) 語

        本文針對(duì)FreeRTOS的特點(diǎn),選擇FATFS作為文件管理系統(tǒng),修改選項(xiàng)并且編寫與操作系統(tǒng)相關(guān)的函數(shù),成功移植到操作系統(tǒng)FreeRTOS中,實(shí)現(xiàn)了多任務(wù)情況下文件存取功能,增加了FreeRTOS的易用性,通過實(shí)驗(yàn)驗(yàn)證,證明其可以很好地完成文件管理的功能。

        參考文獻(xiàn)

        [1] 洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統(tǒng)FATFS Moule[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(5):29?31.

        [2] 張濤,左謹(jǐn)平,馬華玲.FATFS在32位微控制器STM32上的移植[J].電子技術(shù),2010(3):25?27.

        [3] 何小慶.談?wù)凢reeRTOS極其授權(quán)方式[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(10):3?4.

        [4] 宋華魯,閆銀發(fā),張世福,等.基于STM32和FreeRTOS的嵌入式太陽能干燥實(shí)時(shí)監(jiān)測(cè)和控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013,36(23):103?106.

        [5] Real Time Engineers Ltd. FreeRTOS [EB/OL]. [2015?12?11] . http://www.freertos.org.

        [6] Anon. FatFs?Generic FAT file system module [EB/OL]. [2015?10?20]. elm?chan.org/fsw/ff/00indes_e.htl.

        [7] Anon. FatFs module application note [EB/OL]. [2015?10?30]. elm?chan.org/fsw/ff/en/appnote.htl .

        [8] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008:398?410.

        [9] 李寧.ARM開發(fā)工具Real View MDK使用入門[M].北京:北京航空航天大學(xué)出版社,2008:266?280.

        [10] 李志明,檀永,徐石明.STM32嵌入式系統(tǒng)開収實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.

        [11] 張龍彪,張果,王劍平,等.嵌入式操作系統(tǒng)FreeRTOS的原理與移植實(shí)現(xiàn)[J].信息技術(shù),2012(11):31?34.

        [12] 任慰,何頂新,趙金.一種新型嵌入式實(shí)時(shí)操作系統(tǒng)的移植研究[J].計(jì)算機(jī)工程,2013(5):284?287.

        猜你喜歡
        嵌入式操作系統(tǒng)
        基于多核環(huán)境的嵌入式操作系統(tǒng)內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)
        典型實(shí)時(shí)嵌入式操作系統(tǒng)應(yīng)用分析
        計(jì)算機(jī)嵌入式操作系統(tǒng)分析
        基于工程教育認(rèn)證的嵌入式操作系統(tǒng)教學(xué)探究
        基于ARM 920T S3C2440AL—40的EOS移植研究
        雙離合器自動(dòng)變速器控制系統(tǒng)的軟件開發(fā)
        關(guān)于高校嵌入式操作系統(tǒng)課程教學(xué)的探索與思考
        基于嵌入式操作系統(tǒng)的工業(yè)采集板設(shè)計(jì)
        基于高職學(xué)生特點(diǎn)的《嵌入式操作系統(tǒng)》課程教學(xué)改革
        應(yīng)用服務(wù)型人才培養(yǎng)體系下的嵌入式操作系統(tǒng)教學(xué)改革探索
        国产av熟女一区二区三区密桃| 欧洲熟妇色xxxx欧美老妇多毛网站| 特级毛片a级毛片在线播放www| 99在线国产视频| 日本高清一区二区三区在线| 亚洲AV成人综合五月天在线观看| 天堂av一区二区在线| 亚洲中文字幕日韩综合| 深夜福利啪啪片| 熟妇的荡欲色综合亚洲| 精品久久久久久蜜臂a∨| 精品人妻中文字幕一区二区三区| 精品人妻少妇丰满久久久免| 欧美性猛交aaaa片黑人| 中文字幕乱码熟女人妻水蜜桃 | 国产一品二品三品精品在线| 少妇人妻在线无码天堂视频网| 欧美日韩精品一区二区在线观看| 99精品视频69v精品视频免费| 久久青青草原亚洲av| 亚洲免费国产中文字幕久久久| 国产精品一卡二卡三卡| 亚洲av久久无码精品九九 | 毛多水多www偷窥小便 | 中文字幕美人妻亅u乚一596| 国产精品女丝袜白丝袜| 国产一区二区三区尤物| 性色av一二三天美传媒| 麻豆精品久久久久久久99蜜桃| 欧洲日韩视频二区在线| 视频在线播放观看免费| 亚洲精品中文字幕一区二区| 国产成人无码av一区二区| 亚洲国产麻豆综合一区| 人妻在线中文字幕视频| 国产亚洲av成人噜噜噜他| 久久综合亚洲色hezyo国产| 精品无码国产污污污免费网站| 绿帽人妻被插出白浆免费观看| 亚洲av在线观看播放| 日日摸天天摸97狠狠婷婷|