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