文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)12-0022-03
在傳統(tǒng)的嵌入式系統(tǒng)中,,嵌入式應(yīng)用軟件往往是與嵌入式處理器及嵌入式操作系統(tǒng)緊密綁定,其功能也是為某種特定的應(yīng)用而定制,,缺乏靈活性和可擴(kuò)展性,,軟硬件耦合緊密。隨著信息技術(shù)的發(fā)展,,嵌入式處理器及嵌入式操作系統(tǒng)的能力越來越強(qiáng)大,,嵌入式應(yīng)用軟件的功能也愈加復(fù)雜,以往定制開發(fā)的方法已逐漸難以滿足行業(yè)發(fā)展的需求,。硬件平臺(tái)通用化,、應(yīng)用軟件組件化開發(fā),以及通過動(dòng)態(tài)重構(gòu)的方法實(shí)現(xiàn)應(yīng)用軟件的功能多樣化是嵌入式軟件技術(shù)發(fā)展的趨勢(shì)[1],,這種方法既能實(shí)現(xiàn)良好的技術(shù)繼承,,又能快速實(shí)現(xiàn)應(yīng)用軟件功能定制,體現(xiàn)軟件無線電的特征[2],。本文提出了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設(shè)計(jì)和實(shí)現(xiàn)方法,,該框架通過實(shí)現(xiàn)資源自動(dòng)管理(分配與回收)、應(yīng)用組件動(dòng)態(tài)加卸載等功能,,配合一定的軟件組件開發(fā)規(guī)范,,從而實(shí)現(xiàn)了嵌入式軟件基于組件的功能可重構(gòu)。
1 VxWorks嵌入式操作系統(tǒng)的特點(diǎn)
VxWorks嵌入式操作系統(tǒng)是由美國WindRiver公司開發(fā)的一款優(yōu)秀的商用操作系統(tǒng),,目前廣泛應(yīng)用在航空,、航天、軍工,、工業(yè)控制等領(lǐng)域,,是業(yè)界最流行的嵌入式操作系統(tǒng)之一[3],其特點(diǎn)如下:
(1)高性能的Wind內(nèi)核:Wind微內(nèi)核性能卓越,,具備多任務(wù)實(shí)時(shí)調(diào)度能力,,包括時(shí)間片輪轉(zhuǎn)調(diào)度和優(yōu)先級(jí)搶占調(diào)度。同時(shí)提供了諸如消息隊(duì)列,、信號(hào)量,、鎖等一系列任務(wù)間通信或同步機(jī)制,可以方便地實(shí)現(xiàn)多任務(wù)協(xié)同處理,。
(2)良好的可裁減性:支持系統(tǒng)高度可裁剪,,可以針對(duì)特定應(yīng)用裁剪某些不使用的模塊,使系統(tǒng)達(dá)到資源占用最少,,而性能達(dá)到最優(yōu),。
(3)應(yīng)用程序動(dòng)態(tài)加卸載,、動(dòng)態(tài)鏈接:支持應(yīng)用程序模塊分別編譯,、在線加卸載,,以及系統(tǒng)動(dòng)態(tài)對(duì)多個(gè)加載的應(yīng)用程序模塊進(jìn)行鏈接,實(shí)現(xiàn)互相調(diào)用,。本文設(shè)計(jì)的嵌入式軟件框架正是利用了此特性,。
(4)其他特點(diǎn):VxWorks嵌入式操作系統(tǒng)支持幾乎所有的主流嵌入式處理器類型,如PowerPC,、ARM等,。另外系統(tǒng)API除了提供特有的Wind接口外,也同時(shí)支持標(biāo)準(zhǔn)POSIX接口,,使應(yīng)用軟件跨平臺(tái)移植變得非常容易,。
2 嵌入式軟件框架設(shè)計(jì)與實(shí)現(xiàn)
2.1 設(shè)計(jì)目標(biāo)
嵌入式軟件框架的設(shè)計(jì)目標(biāo)主要包括以下幾個(gè)方面:
(1)動(dòng)態(tài)加卸載:系統(tǒng)上電后,能進(jìn)行應(yīng)用組件的在線加載和卸載,。
(2)運(yùn)行控制:當(dāng)應(yīng)用組件被加載到內(nèi)存后,,能控制其啟動(dòng)運(yùn)行或停止運(yùn)行。
(3)系統(tǒng)資源管理:在操作系統(tǒng)不重新啟動(dòng)的情況下,,可以對(duì)任意應(yīng)用組件進(jìn)行運(yùn)行期間的資源管理,,保證系統(tǒng)運(yùn)行期間無論經(jīng)過多少次的重構(gòu),系統(tǒng)資源都不會(huì)泄漏,。
(4)多組件支持:在一個(gè)處理器上可以同時(shí)運(yùn)行多個(gè)應(yīng)用組件,,而不互相干擾。
2.2 架構(gòu)設(shè)計(jì)
基于上述設(shè)計(jì)目標(biāo),,整個(gè)系統(tǒng)可以分為4個(gè)層次:處理器層,、驅(qū)動(dòng)及BSP層、操作系統(tǒng)層以及應(yīng)用層,。其中應(yīng)用層由嵌入式軟件框架和各個(gè)應(yīng)用組件構(gòu)成,,在不同時(shí)刻加載不同應(yīng)用組件時(shí),應(yīng)用層功能將可以隨之發(fā)生變化而無需重新加電或復(fù)位操作系統(tǒng),,從而實(shí)現(xiàn)了嵌入式軟件的功能可重構(gòu),。
嵌入式軟件框架是作為一個(gè)中間層的形式運(yùn)行在操作系統(tǒng)與應(yīng)用組件之間。一方面它通過對(duì)應(yīng)用組件的動(dòng)態(tài)加卸載,、系統(tǒng)資源管理,、多組件管理等功能實(shí)現(xiàn)了嵌入式軟件功能可重構(gòu);另一方面它為應(yīng)用組件屏蔽了底層細(xì)節(jié),,使之與硬件及操作系統(tǒng)隔離,,從而可以實(shí)現(xiàn)組件二進(jìn)制級(jí)復(fù)用,對(duì)于一些通用功能組件,,完全無需重新修改和編譯,,直接通過多組件動(dòng)態(tài)重構(gòu)即可完成應(yīng)用軟件功能的重新定義,,大大降低了開發(fā)成本,同時(shí)縮短了研發(fā)周期,。
2.3 框架設(shè)計(jì)與實(shí)現(xiàn)
基于設(shè)計(jì)目標(biāo),,本軟件框架實(shí)現(xiàn)的硬件平臺(tái)為基于PowerPC8640D高性能處理器的信號(hào)處理板,操作系統(tǒng)為VxWorks6.6,,開發(fā)環(huán)境為WorkBench3.0,。框架采用模塊化設(shè)計(jì),,主要包括系統(tǒng)接口模塊,、系統(tǒng)資源管理模塊、重構(gòu)控制模塊,。嵌入式軟件框架頂層結(jié)構(gòu)及接口框圖如圖1所示,。
重構(gòu)控制模塊通過重構(gòu)控制接口與外部的重構(gòu)管理軟件進(jìn)行通信,在外部重構(gòu)管理軟件的控制下實(shí)現(xiàn)對(duì)指定應(yīng)用組件的加載,、運(yùn)行,、停止、卸載等功能,。在沒有重構(gòu)管理軟件的情況下,,還可以以配置文件的方式通過配置文件接口實(shí)現(xiàn)重構(gòu)控制。應(yīng)用組件通過重構(gòu)API接口與軟件框架進(jìn)行交互,,其中每個(gè)應(yīng)用組件必須實(shí)現(xiàn)兩個(gè)重構(gòu)控制接口Run()和Stop()以被軟件框架調(diào)用,,其中Run()是框架啟動(dòng)組件運(yùn)行的接口,Stop()是框架停止組件運(yùn)行的接口,。而框架實(shí)現(xiàn)了應(yīng)用組件注冊(cè)和注銷兩個(gè)接口:RCFGS_Module_Register()和RCFGS_Module_LogOut(),,其中RCFGS_Module_Register()是組件開始運(yùn)行時(shí)向框架注冊(cè)的接口函數(shù),該接口將返回一個(gè)該組件運(yùn)行期間唯一的ID號(hào),;而RCFGS_Module_LogOut()是組件停止運(yùn)行后向框架注銷的接口函數(shù),,該函數(shù)的輸入?yún)?shù)就是組件ID號(hào),框架正是通過該ID實(shí)現(xiàn)了組件運(yùn)行時(shí)的系統(tǒng)資源管理,。一個(gè)應(yīng)用組件將按圖2所示流程完成重構(gòu)過程,。
系統(tǒng)資源管理模塊主要實(shí)現(xiàn)每個(gè)應(yīng)用組件資源管理表資源的分配與回收。系統(tǒng)剛上電時(shí),,系統(tǒng)資源管理模塊將對(duì)所有的組件注冊(cè)總表和組件資源管理表進(jìn)行清零和初始化工作,。一旦應(yīng)用組件通過調(diào)用Run()接口被啟動(dòng)時(shí),將向框架注冊(cè),,成功后,,系統(tǒng)資源管理模塊將根據(jù)組件ID向該組件分配其唯一使用的組件資源管理表,并在組件注冊(cè)總表中進(jìn)行記錄,以確保組件資源管理表不會(huì)被重復(fù)分配,,進(jìn)而確保其唯一性,。應(yīng)用組件運(yùn)行期間將系統(tǒng)申請(qǐng)的各種資源(如任務(wù)、消息隊(duì)列,、信號(hào)量等)一一記錄在其組件資源管理表中,,在需要將應(yīng)用組件卸載前,執(zhí)行調(diào)用組件的Stop()接口,,應(yīng)用組件將向框架進(jìn)行注銷,,注銷時(shí)系統(tǒng)資源管理模塊將組件資源管理表中記錄的應(yīng)用組件運(yùn)行期間申請(qǐng)的系統(tǒng)資源一一釋放,再將該組件資源管理表初始化,,以備下一個(gè)應(yīng)用組件注冊(cè)時(shí)分配。通過此過程,,實(shí)現(xiàn)了系統(tǒng)資源的自動(dòng)管理,,而不會(huì)導(dǎo)致資源泄漏。組件注冊(cè)總表和組件資源管理表的實(shí)現(xiàn)代碼片段如圖3所示,。
系統(tǒng)接口模塊是將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)的API進(jìn)行二次封裝,,封裝的操作系統(tǒng)函數(shù)庫包括ioLib、taskLib,、kernelLib,、msgQLib、rngLib,、semBLib,、semCLib、semLib,、semMLib,、semSmLib、sockLib,、sysLib,、tickLib、hashLib[1,2]等,,二次封裝的函數(shù)具備與原API相似的接口,,具備很強(qiáng)的規(guī)律性,為應(yīng)用組件快速開發(fā)或移植提供了便利,。其封裝規(guī)則如下:
原API:type FuncName(a,b…)
封裝后的API格式:type RCFGS_FuncName(i_id,a,b…),,其中,輸入變量i_id是每個(gè)組件注冊(cè)成功后獲得的唯一的組件ID,。
在系統(tǒng)接口模塊中所有原操作系統(tǒng)API均可分為資源申請(qǐng),、資源使用、資源釋放三類,每類的處理流程相似,。本文以消息隊(duì)列API為例進(jìn)行說明,,其中msgQCreate[4-5]為資源申請(qǐng)類型,msgQSend[4-5]為資源使用類型,,msgQ-Delete[4-5]為資源釋放類型,。封裝為RCFGS_msgQCreate、RCFGS_msgQSend,、RCFGS_msgQDelete后這三類API對(duì)應(yīng)的處理流程如圖4所示,。
本文分析了嵌入式軟件發(fā)展的趨勢(shì),以嵌入式軟件可重構(gòu)需求為出發(fā)點(diǎn),,介紹了一種基于應(yīng)用組件加卸載來實(shí)現(xiàn)嵌入式應(yīng)用功能可重構(gòu)架構(gòu)和方法,。該架構(gòu)中以嵌入式軟件框架為核心,通過介紹嵌入式軟件框架的設(shè)計(jì)和實(shí)現(xiàn),,闡明了進(jìn)行應(yīng)用組件重構(gòu)的過程和方法,。目前該框架已基于PowerPC8640D硬件平臺(tái)和Vxworks6.6操作系統(tǒng)進(jìn)行了實(shí)現(xiàn),其各項(xiàng)設(shè)計(jì)功能均得到實(shí)現(xiàn),,并可穩(wěn)定運(yùn)行,。該框架的實(shí)現(xiàn)解決了傳統(tǒng)的嵌入式應(yīng)用定制開發(fā)中效率低、周期長(zhǎng),、維護(hù)困難的問題,,大大提高了開發(fā)和維護(hù)效率,同時(shí)大幅度提高了嵌入式應(yīng)用功能的靈活性,。
參考文獻(xiàn)
[1] 石煒,,鄧偉.基于VxWorks的星載控制計(jì)算機(jī)動(dòng)態(tài)可重構(gòu)研究[J].電子設(shè)計(jì)工程,2009,,21(6):30-33.
[2] 肖朝暉.計(jì)算機(jī)體系結(jié)構(gòu)的發(fā)展及技術(shù)問題探討[J].微型機(jī)與應(yīng)用,,2009,32(12):1-3.
[3] 周俊杰,,何攀峰.基于Vxworks的實(shí)時(shí)多任務(wù)軟件框架設(shè)計(jì)[J].國外電子測(cè)量技術(shù),,2012,31(4):80-82.
[4] Wind River,,Inc..VxWorks programmer′s guide5.5[Z].Wind River Systems,,Inc.,2003.
[5] Wind River,,Inc..VxWorks application programmer′s guide 6.6[Z]. Wind River Systems,,Inc.,2007.