《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 一種基于VxWorks的可重構軟件框架設計
一種基于VxWorks的可重構軟件框架設計
來源:電子技術應用2013年第12期
廖崇琦,文 臣,鄧 文,肖金敏
電子信息控制重點實驗室,四川 成都610036
摘要: 介紹了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設計和實現(xiàn)。該軟件框架是一種運行于操作系統(tǒng)和應用組件之間的中間件。它具有系統(tǒng)資源的管理及應用組件加卸載的能力。通過該框架實現(xiàn)了嵌入式軟件可重構。
中圖分類號: TP311.1
文獻標識碼: 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)中,嵌入式應用軟件往往是與嵌入式處理器及嵌入式操作系統(tǒng)緊密綁定,其功能也是為某種特定的應用而定制,缺乏靈活性和可擴展性,軟硬件耦合緊密。隨著信息技術的發(fā)展,嵌入式處理器及嵌入式操作系統(tǒng)的能力越來越強大,嵌入式應用軟件的功能也愈加復雜,以往定制開發(fā)的方法已逐漸難以滿足行業(yè)發(fā)展的需求。硬件平臺通用化、應用軟件組件化開發(fā),以及通過動態(tài)重構的方法實現(xiàn)應用軟件的功能多樣化是嵌入式軟件技術發(fā)展的趨勢[1],這種方法既能實現(xiàn)良好的技術繼承,又能快速實現(xiàn)應用軟件功能定制,體現(xiàn)軟件無線電的特征[2]。本文提出了一種基于VxWorks嵌入式操作系統(tǒng)的軟件框架設計和實現(xiàn)方法,該框架通過實現(xiàn)資源自動管理(分配與回收)、應用組件動態(tài)加卸載等功能,配合一定的軟件組件開發(fā)規(guī)范,從而實現(xiàn)了嵌入式軟件基于組件的功能可重構。

1 VxWorks嵌入式操作系統(tǒng)的特點
    VxWorks嵌入式操作系統(tǒng)是由美國WindRiver公司開發(fā)的一款優(yōu)秀的商用操作系統(tǒng),目前廣泛應用在航空、航天、軍工、工業(yè)控制等領域,是業(yè)界最流行的嵌入式操作系統(tǒng)之一[3],其特點如下:
    (1)高性能的Wind內核:Wind微內核性能卓越,具備多任務實時調度能力,包括時間片輪轉調度和優(yōu)先級搶占調度。同時提供了諸如消息隊列、信號量、鎖等一系列任務間通信或同步機制,可以方便地實現(xiàn)多任務協(xié)同處理。
    (2)良好的可裁減性:支持系統(tǒng)高度可裁剪,可以針對特定應用裁剪某些不使用的模塊,使系統(tǒng)達到資源占用最少,而性能達到最優(yōu)。
    (3)應用程序動態(tài)加卸載、動態(tài)鏈接:支持應用程序模塊分別編譯、在線加卸載,以及系統(tǒng)動態(tài)對多個加載的應用程序模塊進行鏈接,實現(xiàn)互相調用。本文設計的嵌入式軟件框架正是利用了此特性。
    (4)其他特點:VxWorks嵌入式操作系統(tǒng)支持幾乎所有的主流嵌入式處理器類型,如PowerPC、ARM等。另外系統(tǒng)API除了提供特有的Wind接口外,也同時支持標準POSIX接口,使應用軟件跨平臺移植變得非常容易。
2 嵌入式軟件框架設計與實現(xiàn)
2.1 設計目標

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

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

    系統(tǒng)資源管理模塊主要實現(xiàn)每個應用組件資源管理表資源的分配與回收。系統(tǒng)剛上電時,系統(tǒng)資源管理模塊將對所有的組件注冊總表和組件資源管理表進行清零和初始化工作。一旦應用組件通過調用Run()接口被啟動時,將向框架注冊,成功后,系統(tǒng)資源管理模塊將根據(jù)組件ID向該組件分配其唯一使用的組件資源管理表,并在組件注冊總表中進行記錄,以確保組件資源管理表不會被重復分配,進而確保其唯一性。應用組件運行期間將系統(tǒng)申請的各種資源(如任務、消息隊列、信號量等)一一記錄在其組件資源管理表中,在需要將應用組件卸載前,執(zhí)行調用組件的Stop()接口,應用組件將向框架進行注銷,注銷時系統(tǒng)資源管理模塊將組件資源管理表中記錄的應用組件運行期間申請的系統(tǒng)資源一一釋放,再將該組件資源管理表初始化,以備下一個應用組件注冊時分配。通過此過程,實現(xiàn)了系統(tǒng)資源的自動管理,而不會導致資源泄漏。組件注冊總表和組件資源管理表的實現(xiàn)代碼片段如圖3所示。

    系統(tǒng)接口模塊是將涉及系統(tǒng)資源分配與回收的操作系統(tǒng)的API進行二次封裝,封裝的操作系統(tǒng)函數(shù)庫包括ioLib、taskLib、kernelLib、msgQLib、rngLib、semBLib、semCLib、semLib、semMLib、semSmLib、sockLib、sysLib、tickLib、hashLib[1,2]等,二次封裝的函數(shù)具備與原API相似的接口,具備很強的規(guī)律性,為應用組件快速開發(fā)或移植提供了便利。其封裝規(guī)則如下:
    原API:type  FuncName(a,b…)
    封裝后的API格式:type  RCFGS_FuncName(i_id,a,b…),其中,輸入變量i_id是每個組件注冊成功后獲得的唯一的組件ID。
    在系統(tǒng)接口模塊中所有原操作系統(tǒng)API均可分為資源申請、資源使用、資源釋放三類,每類的處理流程相似。本文以消息隊列API為例進行說明,其中msgQCreate[4-5]為資源申請類型,msgQSend[4-5]為資源使用類型,msgQ-Delete[4-5]為資源釋放類型。封裝為RCFGS_msgQCreate、RCFGS_msgQSend、RCFGS_msgQDelete后這三類API對應的處理流程如圖4所示。

 

 

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

此內容為AET網(wǎng)站原創(chuàng),未經授權禁止轉載。