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