文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)10-0015-03
作為第三代嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核,μC/OS-III主要是為適應(yīng)32位處理器的發(fā)展和業(yè)界近幾年對(duì)系統(tǒng)的新要求,在μC/OS-II的基礎(chǔ)上開發(fā)的一個(gè)不限總?cè)蝿?wù)數(shù)、不限同優(yōu)先級(jí)任務(wù)數(shù)的實(shí)時(shí)內(nèi)核。μC/OS-III不僅延續(xù)了μC/OS-II所具有的可裁剪性、可固化性、可搶占性和高可靠性,而且具有資源管理、同步和任務(wù)間的通信能力,具有獨(dú)特的實(shí)時(shí)內(nèi)核配置機(jī)制、運(yùn)行時(shí)的性能檢測(cè)能力,具有新的快速中斷源響應(yīng)機(jī)制[1],以及通過引入新的時(shí)鐘節(jié)拍機(jī)制確保了系統(tǒng)的實(shí)時(shí)性不受任務(wù)數(shù)目的影響[2]。而這些獨(dú)特的特性也是在16位處理器上進(jìn)行應(yīng)用開發(fā)時(shí)特別需要的。美國(guó)Micrium公司已先后推出了超過45種架構(gòu)的μC/OS-II源代碼版本,并從2011年起,陸續(xù)推出μC/OS-III源代碼的純內(nèi)核版和基于多個(gè)32位處理器架構(gòu)的μC/OS-III源代碼正式發(fā)布版本(一下簡(jiǎn)稱正式版),μC/OS-III內(nèi)核代碼也充分考慮到了對(duì)16位處理器的兼容性,但對(duì)具體的16位處理器的支持較少,即使有,也要求片內(nèi)資源為高配置的型號(hào)。另一方面,美國(guó)德州儀器(TI)公司的MSP430系列16位微控制器(MCU)具有業(yè)內(nèi)領(lǐng)先的混合信號(hào)處理能力,也是目前行業(yè)內(nèi)功耗最低的MCU之一,其中的MSP430F5529是一款具有集成USB的新型MCU,有著豐富的片內(nèi)外設(shè)。本文擬將μC/OS-III在MSP430F5529上進(jìn)行移植,并通過典型的應(yīng)用設(shè)計(jì)對(duì)移植的有效性與實(shí)用性進(jìn)行驗(yàn)證。
1 應(yīng)用系統(tǒng)的硬件設(shè)計(jì)
1.1 總體設(shè)計(jì)目標(biāo)
通過設(shè)計(jì)一款低成本多功能防盜窗控制器,驗(yàn)證μC/OS-III在MSP430F5529上也具有適用性。由于MSP-430F5529是一款只有8 KB內(nèi)存(SRAM)的中檔16位微控制器,而μC/OS-III對(duì)內(nèi)存的消耗很大,所以其移植的成功并不能保證應(yīng)用功能可以順利運(yùn)行。因此,本應(yīng)用系統(tǒng)按照防盜窗控制器的實(shí)際功能需要,選擇一組典型功能進(jìn)行了具體設(shè)計(jì)。
1.2 硬件結(jié)構(gòu)與模塊功能
本應(yīng)用系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。其中的按鍵有2個(gè),用于工作模式切換、運(yùn)行參數(shù)調(diào)整等;振動(dòng)式傳感器選用基于香港萬(wàn)保剛公司的振動(dòng)開關(guān)SW-18015P構(gòu)建的模塊,用于感知強(qiáng)力擊打、撬動(dòng)式入侵等;觸摸式位置感應(yīng)器選用的是多個(gè)電容式觸摸開關(guān),以便在測(cè)試系統(tǒng)中以低成本方式模擬或代替?zhèn)鹘y(tǒng)的紅外感應(yīng)式、位移式多種傳感器;發(fā)光二極管共有8支,兼顧狀態(tài)顯示、入侵位置直觀顯示、報(bào)警顯示等功能;液晶屏用于各類提示信息、報(bào)警信息、狀態(tài)信息的顯示和類似電子鐘等附加功能的顯示。虛線框部分包括語(yǔ)音、消息、傳動(dòng)機(jī)構(gòu)等的處理,用于后期擴(kuò)展、完善。
2 μC/OS-III的體系結(jié)構(gòu)與移植
2.1 基于移植者視角的μC/OS-III體系結(jié)構(gòu)
為適應(yīng)各種不同硬件平臺(tái)的需要,μC/OS-III系統(tǒng)在體系結(jié)構(gòu)的設(shè)計(jì)上,采用了模塊化的方式,將需要移植和不需要移植的程序進(jìn)行了有效劃分。同時(shí),對(duì)實(shí)際應(yīng)用系統(tǒng)各種外圍電路的底層支持也是操作系統(tǒng)應(yīng)完成的工作。在實(shí)際分析代碼關(guān)系、模塊關(guān)系和應(yīng)用任務(wù)與系統(tǒng)模塊依賴關(guān)系的基礎(chǔ)上,可總結(jié)出能反應(yīng)系統(tǒng)移植工作重點(diǎn)的μC/OS-III體系結(jié)構(gòu),如圖2所示,其中的粗實(shí)線部分為移植工作的重點(diǎn)模塊。
圖2中以四層結(jié)構(gòu)全面反應(yīng)了一個(gè)基于μC/OS-III開發(fā)的應(yīng)用系統(tǒng)的總體結(jié)構(gòu)。圖中硬件層的3個(gè)實(shí)線框是移植能否成功的前提,即目標(biāo)處理器必須具有定時(shí)器和能周期性產(chǎn)生中斷的機(jī)制,MSP430F5529已經(jīng)具備。點(diǎn)劃線框中的應(yīng)用系統(tǒng)外設(shè)是指本應(yīng)用系統(tǒng)的各種片外輸入、輸出與控制硬件電路模塊,每增加一個(gè)不同類別的模塊,也就增加了移植的工作量。
虛線框部分的應(yīng)用層,其設(shè)計(jì)與實(shí)現(xiàn)工作不屬于移植工作,但實(shí)際應(yīng)用系統(tǒng)的功能是由應(yīng)用層具體實(shí)現(xiàn),系統(tǒng)移植后的性能也由應(yīng)用層進(jìn)行實(shí)際驗(yàn)證。2個(gè)配置頭文件在應(yīng)用層、內(nèi)核層、硬件相關(guān)層都有涉及。其中,OS_CFG_APP.H中的內(nèi)容主要是與具體應(yīng)用有關(guān)的常量,包括任務(wù)堆棧大小、任務(wù)的優(yōu)先級(jí)等;OS_CFG.H中的內(nèi)容主要是與內(nèi)核有關(guān)的常量,如CPU時(shí)間戳使能的設(shè)置等。兩者中常量的設(shè)置可在滿足任務(wù)調(diào)度需要并符合實(shí)際硬件特性的前提下靈活進(jìn)行。
2.2 與CPU相關(guān)的源程序移植
與CPU相關(guān)的源程序分成兩部分,一部分是μC/OS-III內(nèi)核源文件與CPU相關(guān)的部分,集中放在OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C 3個(gè)文件中;另一部分是應(yīng)用層源程序與CPU及編譯器相關(guān)的部分,主要放在CPU_CORE.H、CPU_CORE.C、CPU_DEF.H、CPU.H和CPU_A.ASM 5個(gè)文件中。
由于μCOS-II的廣泛使用,Micrium公司在其網(wǎng)站中上傳了大量基于不同架構(gòu)處理器的μCOS-II正式版源碼,雖然μC/OS-III在內(nèi)核方面與μCOS-II有較大差異,但與CPU相關(guān)部分差別不大,這就為那些得不到Micrium公司直接支持的處理器平臺(tái)提供了一條減輕移植工作量的有效途徑。μC/OS-III的設(shè)計(jì)者在參考文獻(xiàn)[1]中就明確建議先進(jìn)行μCOS-II的移植,再進(jìn)行μC/OS-III的移植會(huì)比較順暢。下面就基于MSP430F5438的μCOS-II正式版中與CPU相關(guān)的源文件,說明各文件的主要內(nèi)容,以及進(jìn)行μC/OS-III向MSP430F5529移植的主要工作。
(1)OS_CPU.H:依照參考文獻(xiàn)[1]中的提示,將μCOS-II原有數(shù)據(jù)類型定義和進(jìn)、出臨界區(qū)宏定義移動(dòng)到CPU.H中,保留上下文切換的函數(shù)原型聲明等。
(2)OS_CPU_A.ASM(后綴可能不同,下同):將匯編子程序分別改名為OSCPUSaveSR和OSCPURestoreSR,程序其他部分不變。
?。?)OS_CPU_C.C:依照參考文獻(xiàn)[1]中的提示,將鉤子函數(shù)改名或去掉,如將OSInitHookBegin改為OSInitHook;數(shù)據(jù)類型按CPU.H中的定義改。
(4)CPU_CORE.H:為CPU_CORE.C提供函數(shù)原型的聲明等,不變。
(5)CPU_CORE.C:初始化CPU時(shí)間戳定時(shí)器及相關(guān)操作等,不變。
(6)CPU_DEF.H:集中定義了一組依賴于CPU的常量,如堆棧生長(zhǎng)方向、CPU字的大小及存儲(chǔ)模式等,是為了適應(yīng)不同的處理器和編譯器[3],不變。
(7)CPU.H:依照參考文獻(xiàn)[1]中的提示,將數(shù)據(jù)類型定義和進(jìn)、出臨界區(qū)宏定義移到此文件,并在每個(gè)數(shù)據(jù)類型前加上“CPU_”,如CPU_INT8U等。
(8)CPU_A.ASM:主要是子程序CPU_SR_Save和CPU_SR_Restore的定義,不變。
2.3 μC/OS-III板級(jí)支持包的移植
板級(jí)支持包的移植與硬件環(huán)境有關(guān),即使是相同的處理器,只要硬件不同,就需要移植。具體可分為三塊:硬件抽象層、外設(shè)支持庫(kù)和板級(jí)支持包上層。外設(shè)支持庫(kù)直接從處理器廠家(即TI公司)網(wǎng)站下載獲得即可,是文件夾名為F5xx_F6xx_Core_Lib的一組源文件[4],提供如電源管理、時(shí)鐘處理等基本函數(shù)庫(kù)。
硬件抽象層是對(duì)處理器之外所有硬件進(jìn)行驅(qū)動(dòng)的底層軟件,是應(yīng)用層軟件對(duì)硬件的操作能否實(shí)現(xiàn)的關(guān)鍵,一般需要依據(jù)具體的硬件按照模塊的方式逐一進(jìn)行編程,如本設(shè)計(jì)中的振動(dòng)傳感器電路模塊,在硬件抽象層編寫了針對(duì)性的硬件驅(qū)動(dòng)程序HAL_SHAKESWITCH.C,分別定義了初始化、中斷使能、中斷去使能、中斷處理4個(gè)函數(shù),最后在應(yīng)用任務(wù)中實(shí)現(xiàn)了相應(yīng)的實(shí)時(shí)報(bào)警功能。
板級(jí)支持包上層主要指BSP.C和BSP.H兩個(gè)文件。BSP.H主要是配合BSP.C進(jìn)行函數(shù)原型的聲明。BSP.C則主要是定義一組函數(shù),以供應(yīng)用層程序使用,如初始化硬件的BSP_Init()函數(shù)及相關(guān)聯(lián)的輸入輸出類函數(shù)、中斷使能設(shè)置的BSP_IntEnAll()函數(shù)等。實(shí)際編寫B(tài)SP.C時(shí),借用了μCOS-II正式版中的對(duì)應(yīng)文件,結(jié)合硬件抽象層和外設(shè)支持庫(kù),依據(jù)外圍硬件和應(yīng)用需要進(jìn)行了擴(kuò)展。
3 應(yīng)用層程序的設(shè)計(jì)與實(shí)現(xiàn)
3.1 面向任務(wù)方法劃分系統(tǒng)功能
基于μC/OS-III的應(yīng)用層程序應(yīng)設(shè)計(jì)成面向任務(wù)的程序結(jié)構(gòu),而傳統(tǒng)的基于無(wú)操作系統(tǒng)嵌入式系統(tǒng)的程序采用的是前后臺(tái)式的程序結(jié)構(gòu)。前者更能保障系統(tǒng)的實(shí)時(shí)性,且在功能較多時(shí),程序設(shè)計(jì)與實(shí)現(xiàn)的過程比后者更加高效,但前者的內(nèi)存開銷大,任務(wù)不宜過多。本應(yīng)用系統(tǒng)的功能與任務(wù)的關(guān)系如表1所示。
3.2 系統(tǒng)測(cè)試及說明
為驗(yàn)證μC/OS-III在MSP430F5529上移植的可行性,并研究實(shí)際應(yīng)用時(shí)的限制與定位,本應(yīng)用系統(tǒng)的測(cè)試分為單任務(wù)測(cè)試、系統(tǒng)測(cè)試和系統(tǒng)受限測(cè)試3個(gè)階段。
(1)單任務(wù)測(cè)試:按照表1中各任務(wù)的功能安排,編寫并逐個(gè)調(diào)試、實(shí)現(xiàn)單個(gè)或部分任務(wù)的功能,初步驗(yàn)證了移植的可行性。
(2)系統(tǒng)測(cè)試:測(cè)試多任務(wù)應(yīng)用系統(tǒng)的功能實(shí)現(xiàn)與任務(wù)間的配合、協(xié)調(diào),主要有4方面功能:①平時(shí)可提供時(shí)鐘或溫濕度顯示類功能;②若有暴力式入侵,會(huì)感知并及時(shí)提供不同方式的告警;③若有攀爬式入侵,能感知位置并及時(shí)提供包含位置信息的多方式告警;④實(shí)時(shí)顯示系統(tǒng)當(dāng)前狀態(tài)信息等。為便于測(cè)試觀察,系統(tǒng)顯示安排如下:液晶顯示分8行,用于顯示當(dāng)前工作模式(用于區(qū)分日常服務(wù)模式和自動(dòng)告警模式)、攀爬式入侵的提示與狀態(tài)、暴力式入侵的提示與狀態(tài)、系統(tǒng)運(yùn)行的狀態(tài)信息等;8只LED燈同步提供了狀態(tài)與入侵位置信息。實(shí)際測(cè)試過程表明,以上四個(gè)方面的功能在實(shí)驗(yàn)環(huán)境下的同一應(yīng)用軟件中可穩(wěn)定實(shí)現(xiàn),并能借助液晶屏、LED燈等實(shí)時(shí)觀察到,系統(tǒng)被入侵時(shí)的輸出處理正確。
(3)系統(tǒng)受限測(cè)試:測(cè)試系統(tǒng)的潛在限制:①系統(tǒng)在實(shí)現(xiàn)上述功能時(shí),任務(wù)不能太多,8個(gè)以內(nèi)為宜,原因是受8 KB內(nèi)存限制;②每個(gè)任務(wù)的堆棧空間不宜太大,并要逐個(gè)分別計(jì)算,以夠用為限,對(duì)開銷過大的任務(wù)要進(jìn)行適度優(yōu)化,原因同①;③液晶屏適宜選用單色的小顯示屏,如102×64或128×64的單色屏,不宜用真彩色的大屏,原因是受MSP430F5529的內(nèi)存及刷新處理能力限制。
測(cè)試結(jié)果表明,將實(shí)時(shí)操作系統(tǒng)μC/OS-III移植到只有8 KB內(nèi)存的中檔16位微控制器MSP430F5529是可行的??紤]到MSP430F5529片內(nèi)還有2 KB專用于USB的SRAM也有可被借用的潛力[5],MSP430微控制器F5系列中還有16 KB、32 KB和66 KB內(nèi)存的型號(hào),再考慮到MSP4300微控制器所具有的低功耗、低成本特點(diǎn),以及μC/OS-III在實(shí)時(shí)性和編程高效性方面的優(yōu)勢(shì),若以μC/OS-III+ MSP430的組合作為設(shè)計(jì)平臺(tái),可突破上述限制,從而進(jìn)一步形成高、低端系列化多功能防盜窗控制器產(chǎn)品,也可為其他產(chǎn)品的設(shè)計(jì)提供參考。
參考文獻(xiàn)
[1] LABROSSE J J.μC/OS-III:The real-time kernel[M]. Micriμm Press,2011.
[2] 宮輝,龔光華,黃土琛,等.μC/OS-III中的高效 時(shí)鐘節(jié)拍管理機(jī)制[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,
2012(12):79-81.
[3] Micriμm,Inc..μC/CPU user′s manual[Z].2010.
[4] Texas Instruments Inc..MSP-EXP430F5529 experimenter board user′s guide[Z].2011.
[5] Texas Instruments Inc.Datasheet:MSP430F551x/MSP430F552x mixed signal microcontroller[EB/OL].(2009-05-01). http://www.ti.com/lit/ds/symlink/msp430f5529.pdf.