《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 一種基于VxWorks的可重構(gòu)軟件框架設(shè)計(jì)
一種基于VxWorks的可重構(gòu)軟件框架設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第12期
廖崇琦,,文 臣,,鄧 文,肖金敏
電子信息控制重點(diǎn)實(shí)驗(yàn)室,,四川 成都610036
摘要: 介紹了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設(shè)計(jì)和實(shí)現(xiàn),。該軟件框架是一種運(yùn)行于操作系統(tǒng)和應(yīng)用組件之間的中間件,。它具有系統(tǒng)資源的管理及應(yīng)用組件加卸載的能力。通過該框架實(shí)現(xiàn)了嵌入式軟件可重構(gòu),。
中圖分類號(hào): TP311.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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ā)展的需求,。硬件平臺(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.

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