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

FATFS在嵌入式操作系統FreeRTOS中的移植與應用

2017-04-10 23:49:22高兆強王紹舉徐偉代書博李治根
現代電子技術 2017年6期

高兆強 王紹舉 徐偉 代書博 李治根

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

關鍵詞: 嵌入式操作系統; FATFS; FreeRTOS; 文件管理系統

中圖分類號: TN911?34; TP319 文獻標識碼: A 文章編號: 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

隨著信息技術的發展,當今社會的信息量越來越大,以往由單片機系統簡單地對存儲媒介按地址、按字節的讀/寫已經無法滿足人們實際應用的需要,利用文件系統對存儲媒介進行管理成了今后單片機系統的一個發展方向[1]。目前常用的文件系統主要有微軟的FAT12,FAT16,FAT32,NTFS,以及Linux 系統下的EXT2,EXT3 等。由于FAT高效、靈活的特點,在當前的消費類電子產品中,用得最多的還是FAT 文件系統,如U 盤,MP3,MP4,數碼相機等,因此本文介紹了一款易于移植和使用、占用硬件資源相對較小而功能又強大的FAT 開源文件系統——FATFS[2]。

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

1 FreeRTOS

FreeRTOS是一款非常優秀的嵌入式操作系統,非常適合對成本敏感的小型嵌入式設備,但是為了精簡,FreeRTOS內核并沒有提供文件管理、網絡以及GUI等功能,當需要這些功能的時候就需要移植第三方的軟件包[4]。其中文件管理系統在一些需要頻繁存儲、處理數據的嵌入式設備中尤其重要,因此本文將一款精簡但是功能強大的文件管理系統FATFS移植到FreeRTOS中[5]。

2 FATFS

FATFS是一款完全免費開源的FAT文件系統模塊,專門為小型的嵌入式系統而設計。它完全用標準的C語言編寫,所以具有良好的硬件平臺獨立性,可以非常方便地移植到8051,PIC,AVR,SH,Z80,ARM等系列單片機上且只需要做簡單的修改。它支持FAT12,FAT16,FAT32,支持多個存儲媒介,有獨立的緩沖區,可以對多個文件進行讀寫操作,并特別對8位單片機和16位單片機進行優化,增加其讀寫效率[6]。

FATFS的代碼量非常小,大小總共不到200 KB,應用時可以把字庫存放到外部存儲中,運行時占用內存不到1 KB,因此FATFS并不會對硬件增加太多的額外負擔。同時FATFS功能非常強大,它能支持多卷,多個ANSI/OEM或者Unicode,支持多種扇區大小,只讀、最小化的API和I/O緩沖區,并且支持RTOS,這使得FATFS非常適合移植到FreeRTOS的系統中去。

FATFS設計的讀寫方式非常巧妙,這使得它擁有非常高的讀寫效率,扇區局部的數據通過文件I/O緩沖區來傳輸;對于長數據的傳輸,中間的或多個扇區的數據直接傳輸到應用程序緩沖區;扇區對齊的整塊數據傳輸的情況下,不使用文件I/O緩沖區。在直接傳輸時disk_read函數一次會最大程度的讀取更多的扇區,但是多扇區傳輸不會跨越簇邊界,即使它們是相鄰的。因此使用扇區對齊的方式進行讀寫訪問可以避免緩沖區數據傳輸,并且讀寫效率將會大大提升[7]。

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

3.1 FATFS在FreeROTS上的移植

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

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

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,文件系統的配置裁剪等均在此頭文件中進行定義配置,具體配置如表1所示。

表1 ffconf.h需要配置的參數

(3) 函數編寫。打開diskio.c,進行底層驅動編寫,需要根據具體的磁盤編寫6 個接口函數,具體如表2所示,其中讀寫函數實現的方式如圖1所示。

表2 需要編寫的函數

3.2 重入問題

操作系統中一般是多進程的,對于不同的文件操作總是可以同時工作,這與重入無關,而對于同一個文件的重入訪問則要考慮重入,如果一個文件函數調用時其他訪問的文件被一個線程使用,則此訪問將阻塞,直到該文件解鎖。

在FreeRTOS中是利用互斥信號量來完成這個功能的,使能_FS_REENTRANT選項,此時,ff.c中的與平臺相關的鎖定函數必須為每個RTOS重新編寫,同時_SYNC_t選項要相應的寫為FreeRTOS對應的信號量結構體xSemaphoreHandle。同時需要加入這四個函數: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)。分別對應創建信號量,請求信號量,釋放信號量和刪除信號量。

函數f_mount掛載磁盤同時創建信號量sobj,函數f_open會請求信號量,然后打開/創建文件,然后釋放信號量[9]。這樣就保證同一個時間點只有一個任務可以打開同一個文件,這樣就保證重入功能的實現,具體如圖2所示。

4 文件傳輸應用

4.1 多任務情況下文件傳輸

創建三個任務,任務一和任務二的優先級為最高和次高,只是簡單的進行LED燈的閃爍,任務三優先級最低[10],進行文件的傳輸,具體情況如圖3所示。

在任務不斷調度的情況下,傳輸大小為50 MB的文件,耗時2 min 22 s,這時只用了64 KB的內存作為緩沖區,如果加大內存,速度則會更快。

4.2 多任務對同一文件操作

下面創建兩個相同優先級的任務,利用信號量[11?12],任務一和任務二分別對同一文件進行復制,來驗證在操作系統下的多任務對同一文件的操作。具體情況如圖4所示。

實驗結果如圖5所示。

這說明相同優先級的任務一和任務二都完成了對文件1.caj的復制工作,這表明在FreeRTOS中移植文件管理系統FATFS后,利用信號量多個任務可以同時對同一個文件進行讀寫操作。

5 結 語

本文針對FreeRTOS的特點,選擇FATFS作為文件管理系統,修改選項并且編寫與操作系統相關的函數,成功移植到操作系統FreeRTOS中,實現了多任務情況下文件存取功能,增加了FreeRTOS的易用性,通過實驗驗證,證明其可以很好地完成文件管理的功能。

參考文獻

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

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

[3] 何小慶.談談FreeRTOS極其授權方式[J].單片機與嵌入式系統應用,2015(10):3?4.

[4] 宋華魯,閆銀發,張世福,等.基于STM32和FreeRTOS的嵌入式太陽能干燥實時監測和控制系統設計[J].現代電子技術,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處理器開發應用[M].北京:北京航空航天大學出版社,2008:398?410.

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

[10] 李志明,檀永,徐石明.STM32嵌入式系統開収實戰指南[M].北京:機械工業出版社,2013.

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

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

主站蜘蛛池模板: 国产精品.com| 欧美日韩成人在线观看| 天天综合网亚洲网站| 精品国产免费观看一区| 欧美亚洲欧美区| 五月激情婷婷综合| 亚洲另类国产欧美一区二区| 国产无码精品在线播放| 国产日韩欧美成人| 免费一级α片在线观看| 欧美日韩北条麻妃一区二区| 无码精品国产VA在线观看DVD| 久久永久免费人妻精品| 亚洲国产欧美目韩成人综合| 国产成人精品高清不卡在线| 2021国产精品自产拍在线观看 | 国产av无码日韩av无码网站| 人妻丰满熟妇αv无码| 日韩成人高清无码| 女人爽到高潮免费视频大全| 久久久久免费精品国产| 在线欧美国产| 国产麻豆精品手机在线观看| 第一区免费在线观看| 亚洲人成成无码网WWW| 毛片在线看网站| 老司机午夜精品网站在线观看| 黄色一级视频欧美| 美女高潮全身流白浆福利区| 久久人搡人人玩人妻精品一| 久久久成年黄色视频| 欧美日本视频在线观看| 91在线播放免费不卡无毒| 国内精品视频在线| 欧美一级黄色影院| 91精品国产情侣高潮露脸| 尤物精品视频一区二区三区| 99re热精品视频中文字幕不卡| 久久精品电影| 伊人色在线视频| 国产精品丝袜在线| 精品人妻AV区| 国产女人综合久久精品视| 亚洲欧美另类专区| 国产91无码福利在线| 国产成人精品综合| 四虎在线高清无码| 欧美亚洲香蕉| 国产一区免费在线观看| 久久精品丝袜| 久久99精品国产麻豆宅宅| 精品国产污污免费网站| 欧美不卡在线视频| 秋霞午夜国产精品成人片| 日韩视频福利| 午夜久久影院| 国产高清在线丝袜精品一区| 国产成人精品2021欧美日韩| 中文字幕中文字字幕码一二区| 无码一区二区波多野结衣播放搜索| 国产丝袜一区二区三区视频免下载| 国产欧美专区在线观看| 亚洲中文无码av永久伊人| 国产日韩精品一区在线不卡| 中文字幕有乳无码| www亚洲精品| 国产视频自拍一区| 亚洲国产天堂久久综合226114| 国产区人妖精品人妖精品视频| 三级毛片在线播放| 国产高清在线观看91精品| 欧美日韩亚洲国产| 麻豆精品在线视频| 99无码熟妇丰满人妻啪啪| 中文字幕亚洲另类天堂| 欧美在线国产| 中文字幕在线免费看| 呦系列视频一区二区三区| 综合色在线| 国产麻豆福利av在线播放| 免费无码AV片在线观看中文| 久久国产亚洲欧美日韩精品|