《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于μC/OS操作系統(tǒng)的TF卡存儲(chǔ)系統(tǒng)
基于μC/OS操作系統(tǒng)的TF卡存儲(chǔ)系統(tǒng)
2015年微型機(jī)與應(yīng)用第6期
方 勛,蔡文郁,張 明,溫端強(qiáng)
(杭州電子科技大學(xué) 電子信息學(xué)院,浙江 杭州 310018)
摘要: 針對(duì)Cortex-M3內(nèi)核的STM32處理器平臺(tái),成功移植μC/OS操作系統(tǒng),并引入FatFs開源軟件,構(gòu)建了FAT32通用文件系統(tǒng)。以溫度采集與記錄系統(tǒng)為實(shí)例,通過對(duì)μC/OS操作系統(tǒng)、FAT文件系統(tǒng)、TF卡等相關(guān)技術(shù)的分析,實(shí)現(xiàn)了面向TF卡存儲(chǔ)媒介的大容量存儲(chǔ)系統(tǒng),將實(shí)時(shí)溫度按時(shí)間關(guān)系存儲(chǔ)至TF卡。
Abstract:
Key words :

  摘  要: 針對(duì)Cortex-M3內(nèi)核的STM32處理器平臺(tái),成功移植μC/OS操作系統(tǒng),并引入FatFs開源軟件,構(gòu)建了FAT32通用文件系統(tǒng)。以溫度采集與記錄系統(tǒng)為實(shí)例,通過對(duì)μC/OS操作系統(tǒng)、FAT文件系統(tǒng)、TF卡等相關(guān)技術(shù)的分析,實(shí)現(xiàn)了面向TF卡存儲(chǔ)媒介的大容量存儲(chǔ)系統(tǒng),將實(shí)時(shí)溫度按時(shí)間關(guān)系存儲(chǔ)至TF卡。

  關(guān)鍵詞μC/OS-II;TF卡;FatFs文件系統(tǒng)模塊

0 引言

  隨著嵌入式微處理器功能的不斷增強(qiáng),嵌入式系統(tǒng)廣泛應(yīng)用于音頻、視頻、故障記錄、數(shù)據(jù)記錄等大批量數(shù)據(jù)存儲(chǔ)的場(chǎng)合,傳統(tǒng)的由單片機(jī)構(gòu)成的系統(tǒng)簡單的對(duì)存儲(chǔ)媒介按地址、按字節(jié)的讀/寫已然不能滿足人們的實(shí)際需求?;赗TOS的存儲(chǔ)系統(tǒng)在宕機(jī)、斷電等異常發(fā)生時(shí),可以保證數(shù)據(jù)的完整性以及能夠快速地恢復(fù)正常工作。為了與現(xiàn)行PC平臺(tái)共享數(shù)據(jù),嵌入式系統(tǒng)迫切需要采用通用文件系統(tǒng)來實(shí)現(xiàn)大批量數(shù)據(jù)的管理[1]。因此,本文以基于μC/OS操作系統(tǒng)的TF卡存儲(chǔ)系統(tǒng)的設(shè)計(jì)為研究對(duì)象,具有很好的實(shí)際意義。

  本文基于μC/OS操作系統(tǒng)平臺(tái),設(shè)計(jì)并實(shí)現(xiàn)了以PT100鉑電阻為溫度傳感器、以STM32F107VCT6微處理器為核心的硬件平臺(tái),實(shí)現(xiàn)環(huán)境溫度采集和實(shí)時(shí)時(shí)鐘功能,并在PC上顯示實(shí)時(shí)溫度以及將溫度數(shù)據(jù)按時(shí)間關(guān)系存儲(chǔ)至TF卡文件中。系統(tǒng)實(shí)現(xiàn)框圖如圖1所示。

001.jpg

1 溫度傳感器

  本文采用溫度傳感器PT100測(cè)溫。PT100是鉑熱電阻,當(dāng)PT100在0℃時(shí)阻值為100 ?贅,它的阻值會(huì)隨著溫度的增加呈規(guī)律性的變化。在-50℃~+600℃范圍內(nèi),PT100具有其他任何溫度傳感器無法比擬的優(yōu)勢(shì)。PT100驅(qū)動(dòng)電路如圖2所示。

002.jpg

  在0≤t<65℃時(shí),PT100鉑熱電阻阻值與輸出電壓V的關(guān)系為V=k×R+b。在第一次使用PT100時(shí),需要校準(zhǔn)PT100。校準(zhǔn)過程如下:

 ?。?)在PT100插件處插上100 Ω電阻,獲取AD值記為Vm。

 ?。?)在PT100插件處插上125 Ω電阻,獲取AD值記為Vn。

 ?。?)根據(jù)數(shù)據(jù)(100,Vm)和(125,Vn)求取k、b系數(shù)。

 ?。?)軟件實(shí)現(xiàn)將k、b系數(shù)值存儲(chǔ)至EEPROM中。

  在使用PT100測(cè)試溫度時(shí),根據(jù)轉(zhuǎn)換的AD電壓值與k、b系數(shù)獲取PT100阻值R。然后利用式(1)求取溫度值:

  T=sqrt(4×Pt_B×(R/Pt_R0)+Pt_A×Pt_A-4×Pt_B)-Pt_A)/(2×Pt_B)(1)

  其中,Pt_A=0.003 908 3,Pt_B=-0.000 000 577 5,Pt_R0=100,單位為℃。

2 μC/OS-II操作系統(tǒng)

  μC/OS-II是以任務(wù)為核心的實(shí)時(shí)操作系統(tǒng),μC/OS-II V2.52可以管理64個(gè)任務(wù),任務(wù)管理包括:創(chuàng)建任務(wù)、掛起任務(wù)、刪除任務(wù)、喚醒任務(wù)、改變?nèi)蝿?wù)優(yōu)先級(jí)和獲取任務(wù)狀態(tài)。每個(gè)任務(wù)都有唯一的優(yōu)先級(jí),優(yōu)先級(jí)號(hào)越低,任務(wù)的優(yōu)先級(jí)越高,任務(wù)越重要。在任一給定的時(shí)刻,任務(wù)的狀態(tài)已知,且為以下5種狀態(tài)中的一種,各任務(wù)狀態(tài)切換如圖3所示。

003.jpg

 ?。?)睡眠狀態(tài):任務(wù)駐留在程序空間中,還沒有交給μC/OS操作系統(tǒng)內(nèi)核管理。

 ?。?)就緒狀態(tài):任務(wù)一旦建立,就處于就緒狀態(tài),準(zhǔn)備運(yùn)行。若新建的任務(wù)優(yōu)先級(jí)比正運(yùn)行的任務(wù)優(yōu)先級(jí)高,則內(nèi)核提供任務(wù)切換服務(wù),新任務(wù)運(yùn)行。

 ?。?)運(yùn)行狀態(tài):已經(jīng)建立的、就緒狀態(tài)中優(yōu)先級(jí)別最高的任務(wù)進(jìn)入運(yùn)行狀態(tài)。任何時(shí)刻只能有一個(gè)任務(wù)處于運(yùn)行狀態(tài)。

 ?。?)等待狀態(tài):正在運(yùn)行的任務(wù)通過調(diào)用OSTimeDly()和OSTimeDlyHMSM()函數(shù)實(shí)現(xiàn)延時(shí),等待延遲時(shí)間到;運(yùn)行中的任務(wù)可能需要等待某一事件的發(fā)生,從而進(jìn)入等待狀態(tài)。

  (5)中斷服務(wù)狀態(tài):運(yùn)行中的任務(wù)被中斷,從而進(jìn)入中斷服務(wù)狀態(tài)[2]。

  有時(shí),任務(wù)或中斷與任務(wù)之間需要傳遞信息,這種信息傳遞稱為任務(wù)間的通信。μC/OS-II支持3種通信方式:信號(hào)量、消息郵箱、消息隊(duì)列,它們統(tǒng)稱為事件。每個(gè)事件由獨(dú)立的事件控制塊ECB控制,ECB定義了事件類型,包含了當(dāng)前正在等待事件發(fā)生的任務(wù)號(hào)等信息。μC/OS-II還具有時(shí)間管理與內(nèi)存管理等功能。

3 TF卡與FatFs文件系統(tǒng)

  當(dāng)嵌入式產(chǎn)品需要擴(kuò)展系統(tǒng)容量用來存儲(chǔ)數(shù)據(jù)時(shí),目前常用的有U盤、Flash芯片、TF卡等,其中最適合單片機(jī)系統(tǒng)的莫過于TF卡了,它不僅支持最大容量32 GB,還支持SPI接口,且能在TF卡上實(shí)現(xiàn)文件系統(tǒng)[3]。

  FatFs Module是一種完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型嵌入式系統(tǒng)設(shè)計(jì)。FatFs的編寫遵循ANSIC,并且完全與磁盤I/O層分開,經(jīng)簡單的修改便可移植到多種嵌入式處理器上[4]。FatFs系統(tǒng)框圖如圖4所示。

004.jpg

  FatFs具有清晰的層次結(jié)構(gòu),應(yīng)用層提供規(guī)范的API接口函數(shù),用戶可直接調(diào)用這些函數(shù)實(shí)現(xiàn)讀文件(f_read)、寫文件(f_write)、打開文件(f_open)和一些文件夾操作等,所以即使不理解FatFs Module的內(nèi)部結(jié)構(gòu)以及復(fù)雜的FatFs協(xié)議,用戶也可以通過這些API完成對(duì)文件的所有操作。

  FatFs Module層為中間層,為FatFs核心內(nèi)容,主要實(shí)現(xiàn)了FAT協(xié)議。在移植過程中,不需要修改此部分內(nèi)容。

  底層是應(yīng)用層與磁盤介質(zhì)的接口,在移植過程中需要修改此部分,包括存儲(chǔ)媒介讀寫接口I/O驅(qū)動(dòng)以及文件操作的時(shí)間RTC等。最少只需要編寫3個(gè)底層驅(qū)動(dòng)函數(shù):

  (1)文件系統(tǒng)初始化函數(shù)

  DSTATUS disk_initialize(BYTE drv)

 ?。?)文件系統(tǒng)讀驅(qū)動(dòng)

  DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE count)

  (3)文件系統(tǒng)寫驅(qū)動(dòng)

  DRESULT disk_write(BYTE drv,const BYTE*buff,DWORD sector,BYTE count)

  用戶根據(jù)具體的硬件平臺(tái)填充相關(guān)函數(shù),即可完成移植。

4 調(diào)試與結(jié)果

  將SD卡中2014-10-28日15:0:0~15:10:0的數(shù)據(jù)繪制成折線圖,如圖5所示。

005.jpg

5 結(jié)論

  本文基于μC/OS-II操作系統(tǒng)平臺(tái)設(shè)計(jì)并實(shí)現(xiàn)了以PT100鉑電阻為溫度傳感器、以STM32F107VCT6微處理器為核心的硬件平臺(tái),實(shí)現(xiàn)了環(huán)境溫度采集和實(shí)時(shí)時(shí)鐘功能,并在PC上顯示實(shí)時(shí)溫度以及將溫度數(shù)據(jù)按時(shí)間關(guān)系存儲(chǔ)至TF卡文件中[5]。

  由于該系統(tǒng)缺少與用戶交互界面,因此系統(tǒng)缺乏一定的靈活性。今后的工作就是實(shí)現(xiàn)PC與MCU的雙向通信,選擇在STM32平臺(tái)上移植GUI,提供給用戶更多的選擇。當(dāng)然,通過交互界面,用戶可以一目了然地了解某一時(shí)段的環(huán)境溫度變化情況等。完善系統(tǒng)功能和提高采集數(shù)據(jù)精度仍是今后的主要工作。

參考文獻(xiàn)

  [1] 李世奇,董浩斌,李榮生.基于FatFs文件系統(tǒng)的SD卡存儲(chǔ)器設(shè)計(jì)[J].測(cè)控技術(shù),2011,30(12):79-81.

  [2] 于鵬飛.嵌入式存儲(chǔ)設(shè)備上文件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連交通大學(xué),2007.

  [3] LABROSSE J J.嵌入式實(shí)時(shí)操作系統(tǒng)?滋C/OS-II[M].邵貝貝,譯.北京:北京航空航天大學(xué)出版社,2003.

  [4] 張?jiān)?,惠曉威,肖迎?基于ARM的嵌入式文件系統(tǒng)研究與設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(3):299-231.

  [5] 楊建光.基于μC/OS-II的溫度控制系統(tǒng)的研制[D].天津:中國民航大學(xué),2007.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。