《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 一種基于VxWorks的可重構(gòu)軟件框架設(shè)計
一種基于VxWorks的可重構(gòu)軟件框架設(shè)計
來源:電子技術(shù)應(yīng)用2013年第12期
廖崇琦,文 臣,鄧 文,肖金敏
電子信息控制重點(diǎn)實(shí)驗(yàn)室,四川 成都610036
摘要: 介紹了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設(shè)計和實(shí)現(xiàn)。該軟件框架是一種運(yùn)行于操作系統(tǒng)和應(yīng)用組件之間的中間件。它具有系統(tǒng)資源的管理及應(yīng)用組件加卸載的能力。通過該框架實(shí)現(xiàn)了嵌入式軟件可重構(gòu)。
中圖分類號: TP311.1
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)12-0022-03
Design of a reconfigurable software framework based on VxWorks
Liao Chongqi,Wen Chen,Deng Wen,Xiao Jinmin
Science and Technology on Electronic Information Control Laboratory, Chengdu 610036,China
Abstract: This paper describes the design and implementation of VxWorks-based operating system software framework. The software framework is a middleware which is between operating system and application components. It has abilities of system resources management and application components loading and unloading. The embedded software reconfiguration is achieved using this framework.
Key words : embedded operating system;software frameworks;application component;reconfiguration

    在傳統(tǒng)的嵌入式系統(tǒng)中,嵌入式應(yīng)用軟件往往是與嵌入式處理器及嵌入式操作系統(tǒng)緊密綁定,其功能也是為某種特定的應(yīng)用而定制,缺乏靈活性和可擴(kuò)展性,軟硬件耦合緊密。隨著信息技術(shù)的發(fā)展,嵌入式處理器及嵌入式操作系統(tǒng)的能力越來越強(qiáng)大,嵌入式應(yīng)用軟件的功能也愈加復(fù)雜,以往定制開發(fā)的方法已逐漸難以滿足行業(yè)發(fā)展的需求。硬件平臺通用化、應(yīng)用軟件組件化開發(fā),以及通過動態(tài)重構(gòu)的方法實(shí)現(xiàn)應(yīng)用軟件的功能多樣化是嵌入式軟件技術(shù)發(fā)展的趨勢[1],這種方法既能實(shí)現(xiàn)良好的技術(shù)繼承,又能快速實(shí)現(xiàn)應(yīng)用軟件功能定制,體現(xiàn)軟件無線電的特征[2]。本文提出了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設(shè)計和實(shí)現(xiàn)方法,該框架通過實(shí)現(xiàn)資源自動管理(分配與回收)、應(yī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í)時調(diào)度能力,包括時間片輪轉(zhuǎn)調(diào)度和優(yōu)先級搶占調(diào)度。同時提供了諸如消息隊列、信號量、鎖等一系列任務(wù)間通信或同步機(jī)制,可以方便地實(shí)現(xiàn)多任務(wù)協(xié)同處理。
    (2)良好的可裁減性:支持系統(tǒng)高度可裁剪,可以針對特定應(yīng)用裁剪某些不使用的模塊,使系統(tǒng)達(dá)到資源占用最少,而性能達(dá)到最優(yōu)。
    (3)應(yīng)用程序動態(tài)加卸載、動態(tài)鏈接:支持應(yīng)用程序模塊分別編譯、在線加卸載,以及系統(tǒng)動態(tài)對多個加載的應(yīng)用程序模塊進(jìn)行鏈接,實(shí)現(xiàn)互相調(diào)用。本文設(shè)計的嵌入式軟件框架正是利用了此特性。
    (4)其他特點(diǎn):VxWorks嵌入式操作系統(tǒng)支持幾乎所有的主流嵌入式處理器類型,如PowerPC、ARM等。另外系統(tǒng)API除了提供特有的Wind接口外,也同時支持標(biāo)準(zhǔn)POSIX接口,使應(yīng)用軟件跨平臺移植變得非常容易。
2 嵌入式軟件框架設(shè)計與實(shí)現(xiàn)
2.1 設(shè)計目標(biāo)

    嵌入式軟件框架的設(shè)計目標(biāo)主要包括以下幾個方面:
    (1)動態(tài)加卸載:系統(tǒng)上電后,能進(jìn)行應(yīng)用組件的在線加載和卸載。
    (2)運(yùn)行控制:當(dāng)應(yīng)用組件被加載到內(nèi)存后,能控制其啟動運(yùn)行或停止運(yùn)行。
    (3)系統(tǒng)資源管理:在操作系統(tǒng)不重新啟動的情況下,可以對任意應(yīng)用組件進(jìn)行運(yùn)行期間的資源管理,保證系統(tǒng)運(yùn)行期間無論經(jīng)過多少次的重構(gòu),系統(tǒng)資源都不會泄漏。
    (4)多組件支持:在一個處理器上可以同時運(yùn)行多個應(yīng)用組件,而不互相干擾。
2.2 架構(gòu)設(shè)計
    基于上述設(shè)計目標(biāo),整個系統(tǒng)可以分為4個層次:處理器層、驅(qū)動及BSP層、操作系統(tǒng)層以及應(yīng)用層。其中應(yīng)用層由嵌入式軟件框架和各個應(yīng)用組件構(gòu)成,在不同時刻加載不同應(yīng)用組件時,應(yīng)用層功能將可以隨之發(fā)生變化而無需重新加電或復(fù)位操作系統(tǒng),從而實(shí)現(xiàn)了嵌入式軟件的功能可重構(gòu)。
    嵌入式軟件框架是作為一個中間層的形式運(yùn)行在操作系統(tǒng)與應(yīng)用組件之間。一方面它通過對應(yīng)用組件的動態(tài)加卸載、系統(tǒng)資源管理、多組件管理等功能實(shí)現(xiàn)了嵌入式軟件功能可重構(gòu);另一方面它為應(yīng)用組件屏蔽了底層細(xì)節(jié),使之與硬件及操作系統(tǒng)隔離,從而可以實(shí)現(xiàn)組件二進(jìn)制級復(fù)用,對于一些通用功能組件,完全無需重新修改和編譯,直接通過多組件動態(tài)重構(gòu)即可完成應(yīng)用軟件功能的重新定義,大大降低了開發(fā)成本,同時縮短了研發(fā)周期。
2.3 框架設(shè)計與實(shí)現(xiàn)
    基于設(shè)計目標(biāo),本軟件框架實(shí)現(xiàn)的硬件平臺為基于PowerPC8640D高性能處理器的信號處理板,操作系統(tǒng)為VxWorks6.6,開發(fā)環(huán)境為WorkBench3.0??蚣懿捎媚K化設(shè)計,主要包括系統(tǒng)接口模塊、系統(tǒng)資源管理模塊、重構(gòu)控制模塊。嵌入式軟件框架頂層結(jié)構(gòu)及接口框圖如圖1所示。

    重構(gòu)控制模塊通過重構(gòu)控制接口與外部的重構(gòu)管理軟件進(jìn)行通信,在外部重構(gòu)管理軟件的控制下實(shí)現(xiàn)對指定應(yīng)用組件的加載、運(yùn)行、停止、卸載等功能。在沒有重構(gòu)管理軟件的情況下,還可以以配置文件的方式通過配置文件接口實(shí)現(xiàn)重構(gòu)控制。應(yīng)用組件通過重構(gòu)API接口與軟件框架進(jìn)行交互,其中每個應(yīng)用組件必須實(shí)現(xiàn)兩個重構(gòu)控制接口Run()和Stop()以被軟件框架調(diào)用,其中Run()是框架啟動組件運(yùn)行的接口,Stop()是框架停止組件運(yùn)行的接口。而框架實(shí)現(xiàn)了應(yīng)用組件注冊和注銷兩個接口:RCFGS_Module_Register()和RCFGS_Module_LogOut(),其中RCFGS_Module_Register()是組件開始運(yùn)行時向框架注冊的接口函數(shù),該接口將返回一個該組件運(yùn)行期間唯一的ID號;而RCFGS_Module_LogOut()是組件停止運(yùn)行后向框架注銷的接口函數(shù),該函數(shù)的輸入?yún)?shù)就是組件ID號,框架正是通過該ID實(shí)現(xiàn)了組件運(yùn)行時的系統(tǒng)資源管理。一個應(yīng)用組件將按圖2所示流程完成重構(gòu)過程。

    系統(tǒng)資源管理模塊主要實(shí)現(xiàn)每個應(yīng)用組件資源管理表資源的分配與回收。系統(tǒng)剛上電時,系統(tǒng)資源管理模塊將對所有的組件注冊總表和組件資源管理表進(jìn)行清零和初始化工作。一旦應(yīng)用組件通過調(diào)用Run()接口被啟動時,將向框架注冊,成功后,系統(tǒng)資源管理模塊將根據(jù)組件ID向該組件分配其唯一使用的組件資源管理表,并在組件注冊總表中進(jìn)行記錄,以確保組件資源管理表不會被重復(fù)分配,進(jìn)而確保其唯一性。應(yīng)用組件運(yùn)行期間將系統(tǒng)申請的各種資源(如任務(wù)、消息隊列、信號量等)一一記錄在其組件資源管理表中,在需要將應(yīng)用組件卸載前,執(zhí)行調(diào)用組件的Stop()接口,應(yīng)用組件將向框架進(jìn)行注銷,注銷時系統(tǒng)資源管理模塊將組件資源管理表中記錄的應(yīng)用組件運(yùn)行期間申請的系統(tǒng)資源一一釋放,再將該組件資源管理表初始化,以備下一個應(yīng)用組件注冊時分配。通過此過程,實(shí)現(xiàn)了系統(tǒng)資源的自動管理,而不會導(dǎo)致資源泄漏。組件注冊總表和組件資源管理表的實(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是每個組件注冊成功后獲得的唯一的組件ID。
    在系統(tǒng)接口模塊中所有原操作系統(tǒng)API均可分為資源申請、資源使用、資源釋放三類,每類的處理流程相似。本文以消息隊列API為例進(jìn)行說明,其中msgQCreate[4-5]為資源申請類型,msgQSend[4-5]為資源使用類型,msgQ-Delete[4-5]為資源釋放類型。封裝為RCFGS_msgQCreate、RCFGS_msgQSend、RCFGS_msgQDelete后這三類API對應(yīng)的處理流程如圖4所示。

 

 

    本文分析了嵌入式軟件發(fā)展的趨勢,以嵌入式軟件可重構(gòu)需求為出發(fā)點(diǎn),介紹了一種基于應(yīng)用組件加卸載來實(shí)現(xiàn)嵌入式應(yīng)用功能可重構(gòu)架構(gòu)和方法。該架構(gòu)中以嵌入式軟件框架為核心,通過介紹嵌入式軟件框架的設(shè)計和實(shí)現(xiàn),闡明了進(jìn)行應(yīng)用組件重構(gòu)的過程和方法。目前該框架已基于PowerPC8640D硬件平臺和Vxworks6.6操作系統(tǒng)進(jìn)行了實(shí)現(xiàn),其各項(xiàng)設(shè)計功能均得到實(shí)現(xiàn),并可穩(wěn)定運(yùn)行。該框架的實(shí)現(xiàn)解決了傳統(tǒng)的嵌入式應(yīng)用定制開發(fā)中效率低、周期長、維護(hù)困難的問題,大大提高了開發(fā)和維護(hù)效率,同時大幅度提高了嵌入式應(yīng)用功能的靈活性。
參考文獻(xiàn)
[1] 石煒,鄧偉.基于VxWorks的星載控制計算機(jī)動態(tài)可重構(gòu)研究[J].電子設(shè)計工程,2009,21(6):30-33.
[2] 肖朝暉.計算機(jī)體系結(jié)構(gòu)的發(fā)展及技術(shù)問題探討[J].微型機(jī)與應(yīng)用,2009,32(12):1-3.
[3] 周俊杰,何攀峰.基于Vxworks的實(shí)時多任務(wù)軟件框架設(shè)計[J].國外電子測量技術(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.

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