姜曉輝,郭久武,王 博,劉 承,崔賽楠
(1.北京特種機(jī)電技術(shù)研究所測(cè)評(píng)中心,北京100012;2.中國(guó)兵器工業(yè)計(jì)算機(jī)應(yīng)用技術(shù)研究所車電系統(tǒng)研發(fā)部,北京100089)
目前航電、車電、船電計(jì)算處理環(huán)境均向集群處理機(jī)方向發(fā)展,呈現(xiàn)信息集中處理、設(shè)備分布控制,軟件采用構(gòu)件集成等特點(diǎn),軟件發(fā)展表現(xiàn)為以數(shù)據(jù)為中心的系統(tǒng)互連互通,洛克希德馬丁等幾家國(guó)際軍工公司制定了軟件數(shù)據(jù)中心服務(wù)規(guī)范標(biāo)準(zhǔn)——數(shù)據(jù)分發(fā)服務(wù)[1-3]。該標(biāo)準(zhǔn)只定義了系統(tǒng)數(shù)據(jù)的存在形式和通信架構(gòu),對(duì)應(yīng)用軟件集成規(guī)范和形態(tài)并沒有明確規(guī)定。筆者針對(duì)嵌入式設(shè)備資源受限、軟件集成困難、通信環(huán)境復(fù)雜等問題,提出了嵌入式軟件構(gòu)件形態(tài)、構(gòu)件化軟件體系結(jié)構(gòu),改進(jìn)了在分布式集群處理機(jī)環(huán)境下設(shè)備之間通信數(shù)據(jù)的處理方式[4],并在嵌入式實(shí)時(shí)操作系統(tǒng)中得到實(shí)施驗(yàn)證。
嵌入式軟件構(gòu)件是具有獨(dú)立業(yè)務(wù)功能、可獨(dú)立部署,通過標(biāo)準(zhǔn)化的接口與其他軟件構(gòu)件進(jìn)行信息交互的軟件實(shí)體[5-7]。構(gòu)件所完成的獨(dú)立業(yè)務(wù)功能由構(gòu)件設(shè)計(jì)者按各自的需要設(shè)計(jì)。
為在資源受限的嵌入式環(huán)境下,實(shí)現(xiàn)構(gòu)件的資源管控與構(gòu)件的信息交互,筆者對(duì)軟件構(gòu)件的形態(tài)進(jìn)行了規(guī)范,設(shè)計(jì)了軟件構(gòu)件基類,為構(gòu)件提供了標(biāo)準(zhǔn)化的構(gòu)件集成接口。包括:構(gòu)件的初始化、啟動(dòng)、停止和卸載接口;提供統(tǒng)一的信息訂閱、發(fā)布接口;提供構(gòu)件配置接口,便于構(gòu)件的開發(fā)人員進(jìn)行定時(shí)器處理、創(chuàng)建任務(wù)等。
嵌入式軟件構(gòu)件形態(tài)如圖1所示。要將各軟件構(gòu)件裝配在一起,形成一個(gè)完整的應(yīng)用系統(tǒng),每個(gè)軟件構(gòu)件還需要一個(gè)描述性的文件。構(gòu)件描述文件描述了軟件構(gòu)件的裝配信息,包括構(gòu)件名稱、標(biāo)識(shí)符、版本、啟動(dòng)入口函數(shù)、屬性和優(yōu)先級(jí)等信息。通過讀取構(gòu)件描述文件,實(shí)現(xiàn)構(gòu)件的運(yùn)行時(shí)集成。
通過基類規(guī)范了嵌入式軟件構(gòu)件的標(biāo)準(zhǔn)接口,在軟件構(gòu)件集成時(shí)能有效對(duì)軟件構(gòu)件進(jìn)行管控,提高系統(tǒng)的可靠性與穩(wěn)定性。
圖1 嵌入式軟件構(gòu)件形態(tài)Fig.1 Embedded software component formation
電子信息系統(tǒng)內(nèi)部處理機(jī)環(huán)境十分復(fù)雜[8,9],包括通用的處理單元和各種專用處理單元,如數(shù)字信號(hào)圖像處理板、專用的數(shù)據(jù)交換板、數(shù)據(jù)采集設(shè)備、配電管理設(shè)備等;此外,通用的計(jì)算處理機(jī)設(shè)備的結(jié)構(gòu)形式也不同,幾個(gè)處理單元之間緊密耦合在一起,組成集成處理機(jī),集成處理機(jī)之間可通過數(shù)據(jù)交換單元連接在一起,組成松散的集群處理機(jī);通用處理單元和專用處理單元之間通過不同的總線連接在一起,如專用的DSP(Digital Signal Processor)處理板與通用處理單元可通過機(jī)內(nèi)總線(如:PCI(Peripheral Component Interconnect)、PCI-e、RapidIO、FC(Fiber Channel))進(jìn)行數(shù)據(jù)通信,不同集成處理機(jī)的通用處理單元之間可通過外部網(wǎng)絡(luò)總線進(jìn)行數(shù)據(jù)通信,通用處理單元可通過外部網(wǎng)絡(luò)總線(如:CAN(Controller Area Network)、FlexRay)與遠(yuǎn)端專用設(shè)備進(jìn)行數(shù)據(jù)通信[10,11]。分布式集群處理環(huán)境如圖2所示。
圖2 分布式集群處理機(jī)環(huán)境Fig.2 Distributed cluster processor environment
主要包括分布式集群處理機(jī)各通用處理單元之間的通用網(wǎng)絡(luò)通信處理和通用處理單元與遠(yuǎn)端專用設(shè)備信息交互的專用網(wǎng)絡(luò)通信處理。
通用網(wǎng)絡(luò)通信處理負(fù)責(zé)將每個(gè)通用處理單元部署運(yùn)行的軟件構(gòu)件所發(fā)布的信息通過交換網(wǎng)絡(luò)發(fā)布到其他通用處理單元,實(shí)現(xiàn)各通用處理單元間信息的共享。
對(duì)于構(gòu)件之間產(chǎn)生的周期發(fā)布信息,信息服務(wù)按照發(fā)布周期向其他通用處理單元進(jìn)行組播;對(duì)于觸發(fā)信息,當(dāng)信息更新時(shí)向其他通用處理單元進(jìn)行組播。分布式集群處理機(jī)環(huán)境下信息共享工作流程如圖3所示。
圖3 分布式集群處理機(jī)環(huán)境下通用信息共享工作流程Fig.3 General information sharing's working principle in distributed cluster-processor environment
對(duì)分布式集群處理機(jī)環(huán)境中設(shè)備按照軟件平臺(tái)網(wǎng)絡(luò)地址模型進(jìn)行地址編號(hào),并分配獨(dú)立的通信網(wǎng)絡(luò)地址,在系統(tǒng)中唯一存在。通過軟件平臺(tái)提供的分布式信息共享分發(fā),實(shí)現(xiàn)軟件構(gòu)件在不同的通用處理單元的信息交互,使有信息交互的軟件構(gòu)件部署運(yùn)行在不同的通用處理單元也能正常交互信息,實(shí)現(xiàn)了軟件構(gòu)件與自身部署運(yùn)行位置無關(guān),分布式集群處理機(jī)環(huán)境信息共享流程如圖4所示。通用處理單元間信息交互網(wǎng)絡(luò)數(shù)據(jù)交換指令格式如圖5所示。
圖4 分布式集群處理機(jī)環(huán)境信息共享流程Fig.4 Information sharing process indistributed cluster-processor environment
圖5 交換指令數(shù)據(jù)格式Fig.5 Exchange instruction data format
指令的字段具體含義如表1所示。
表1 網(wǎng)絡(luò)數(shù)據(jù)交換指令說明Tab.1 Instruction of network data exchange
為提高網(wǎng)絡(luò)通信效率,對(duì)通用處理單元進(jìn)行了信息域的劃分,并通過組播的方式一次性向分布式集群處理機(jī)環(huán)境下域內(nèi)的通用處理單元發(fā)布信息,組播及點(diǎn)對(duì)點(diǎn)信息通信均采用交換指令,節(jié)點(diǎn)接收到信息指令后,按指令解析處理,并更新到全局信息空間。
專用設(shè)備可通過標(biāo)準(zhǔn)的uPNP協(xié)議接入通用計(jì)算處理設(shè)備中[12,13],但實(shí)際工程應(yīng)用中存在大量的行業(yè)專用設(shè)備,沒有實(shí)現(xiàn)uPNP協(xié)議。專用網(wǎng)絡(luò)通信處理就是為專用設(shè)備定制的信息服務(wù),為接入這些專用設(shè)備,可為不同的專用設(shè)備定制對(duì)應(yīng)的專用信息服務(wù),通過適配方式將專用設(shè)備數(shù)據(jù)轉(zhuǎn)換為通用的信息數(shù)據(jù),適配轉(zhuǎn)換示意圖如圖6所示。
圖6 專用設(shè)備信息適配Fig.6 Specialized equipment information adapted
分布式集群處理機(jī)環(huán)境涉及硬件平臺(tái)、總線類型繁多,為方便上層應(yīng)用軟件開發(fā),在分布式集群處理機(jī)環(huán)境下采用平臺(tái)化的軟件架構(gòu),以構(gòu)件化的形式集成應(yīng)用功能。軟件平臺(tái)具備清晰的層次關(guān)系和接口關(guān)系,實(shí)現(xiàn)應(yīng)用與服務(wù)的分離,降低軟件之間的耦合程度,提高軟件的可靠性與可重用性。分布式集群處理機(jī)軟件體系結(jié)構(gòu)如圖7所示。
軟件平臺(tái)可方便地對(duì)各功能系統(tǒng)軟件構(gòu)件快速集成,各構(gòu)件間無耦合與依賴關(guān)系,能采用“構(gòu)件組裝”的方式,按不同功能需求組合出不同的應(yīng)用軟件;提供軟件構(gòu)件信息交互環(huán)境,軟件構(gòu)件開發(fā)只需專注于自身的信息與邏輯處理,與通信鏈路無關(guān),與軟件構(gòu)件部署運(yùn)行位置無關(guān);能有效監(jiān)控和管理軟件構(gòu)件對(duì)系統(tǒng)資源的使用情況,提高軟件穩(wěn)定性與可靠性。
圖7 分布式集群處理機(jī)軟件總體結(jié)構(gòu)Fig.7 Overall structure of software of distributed cluster processor
各軟件構(gòu)件通過系統(tǒng)配置藍(lán)圖文件進(jìn)行組裝,平臺(tái)軟件負(fù)責(zé)加載運(yùn)行該文件所配置的軟件構(gòu)件。軟件構(gòu)件的動(dòng)態(tài)集成如圖8所示。
軟件構(gòu)件間通信以信息為數(shù)據(jù)交換基礎(chǔ)。采用全局信息空間的概念,所有對(duì)該空間中的信息感興趣的軟件構(gòu)件都可方便地訂閱或發(fā)布相應(yīng)的信息[14,15]。使軟件構(gòu)件開發(fā)人員能致力于構(gòu)件內(nèi)部功能的實(shí)現(xiàn),無需關(guān)注底層通信的復(fù)雜性,而使構(gòu)件間信息交互與底層通信鏈路及構(gòu)件所運(yùn)行位置無關(guān)。構(gòu)件信息交互如圖9所示。
圖8 軟件構(gòu)件動(dòng)態(tài)集成示意圖Fig.8 Dynamic integration software component diagram
圖9 構(gòu)件信息交互Fig.9 Component information interaction
通過軟件平臺(tái)提供的軟件構(gòu)件訂閱/發(fā)布信息接口,實(shí)現(xiàn)軟件構(gòu)件間的松耦合關(guān)系,軟件構(gòu)件均可獨(dú)立部署在軟件平臺(tái)上,與其他軟件構(gòu)件無依賴關(guān)系。平臺(tái)軟件可保證多構(gòu)件能并發(fā)實(shí)時(shí)處理數(shù)據(jù),可提供5 ms的最小訂閱信息周期。
3.3.1 軟件構(gòu)件運(yùn)行管理
為實(shí)現(xiàn)軟件構(gòu)件的調(diào)度與構(gòu)件運(yùn)行時(shí)的資源管控,要求所有的軟件構(gòu)件必須提供初始化、啟動(dòng)、停止與卸載接口,軟件構(gòu)件集成環(huán)境通過讀取相應(yīng)的配置文件動(dòng)態(tài)加載軟件構(gòu)件后,依次調(diào)用加載的軟件構(gòu)件的初始化與啟動(dòng)接口,完成軟件構(gòu)件的啟動(dòng)。
構(gòu)件描述文件中還描述有構(gòu)件使用的內(nèi)存情況、信號(hào)量使用情況等資源描述信息。軟件構(gòu)件集成環(huán)境加載軟件構(gòu)件時(shí),同時(shí)記錄每個(gè)構(gòu)件的資源使用情況,并在運(yùn)行過程中,通過操作系統(tǒng)提供的接口監(jiān)控系統(tǒng)中每個(gè)任務(wù)使用的資源情況。將不同任務(wù)的資源使用情況匯總形成各個(gè)軟件構(gòu)件的資源使用情況匯總,當(dāng)構(gòu)件資源超過描述文件中規(guī)定值時(shí),軟件構(gòu)件集成環(huán)境調(diào)用構(gòu)件的停止接口,停止構(gòu)件的運(yùn)行,并釋放相應(yīng)的資源,再調(diào)用卸載接口,完成構(gòu)件的卸載。
3.4.1 單元級(jí)冗余備份
集群處理機(jī)軟件通過一套配置文件,實(shí)現(xiàn)了系統(tǒng)中軟件構(gòu)件動(dòng)態(tài)部署與系統(tǒng)的冗余備份設(shè)計(jì)。集群處理機(jī)各通用處理單元均存放系統(tǒng)所有軟件構(gòu)件的庫文件與相關(guān)描述文件,同時(shí)各通用處理單元各自有一個(gè)節(jié)點(diǎn)藍(lán)圖配置文件,用來描述通用處理單元所部署軟件構(gòu)件組成關(guān)系以及通用處理單元間的冗余備份關(guān)系。
分布式集群處理機(jī)環(huán)境下各通用處理單元之間通過交換網(wǎng)絡(luò)以定期廣播的方式進(jìn)行心跳檢測(cè),一段時(shí)間為未接收到目標(biāo)節(jié)點(diǎn)的心跳信息即認(rèn)為目標(biāo)節(jié)點(diǎn)失效,啟動(dòng)冗余備份策略。單元級(jí)冗余備份策略如圖10所示。
圖10 單元級(jí)冗余備份Fig.10 Unit-level redundant backup
通用處理單元2按照預(yù)先配置好的冗余備份策略對(duì)通用處理單元1進(jìn)行監(jiān)測(cè),通過任務(wù)網(wǎng)絡(luò)以1 s為周期向通用處理單元1發(fā)送心跳信息,詢問通用處理單元1系統(tǒng)運(yùn)行狀態(tài),通用處理單元1應(yīng)立即將心跳信息反饋給通用處理單元2,如通用處理單元2在3 s內(nèi)未接收到通用處理單元1反饋的狀態(tài)信息,則認(rèn)為通用處理單元1工作不正常,通用處理單元2按照配置藍(lán)圖加載并運(yùn)行通用處理單元1所加載運(yùn)行的功能構(gòu)件,代替通用處理單元1實(shí)現(xiàn)系統(tǒng)功能,完成系統(tǒng)的冗余重構(gòu)過程。
3.4.2 構(gòu)件級(jí)冗余備份
構(gòu)件級(jí)冗余備份是更細(xì)粒度的冗余備份,是在監(jiān)控節(jié)點(diǎn)在線的情況下,進(jìn)一步判斷監(jiān)控節(jié)點(diǎn)內(nèi)構(gòu)件的運(yùn)行狀態(tài)。當(dāng)監(jiān)控的構(gòu)件為異常狀態(tài)時(shí),加載并運(yùn)行該構(gòu)件,代替監(jiān)控節(jié)點(diǎn)的異常構(gòu)件完成構(gòu)件的業(yè)務(wù)功能。構(gòu)件級(jí)冗余備份策略如圖11所示。
圖11 構(gòu)件級(jí)冗余備份Fig.11 Component-level redundant backup
通過規(guī)范軟件構(gòu)件形態(tài)和開發(fā)規(guī)范能很好地解決聯(lián)合開發(fā)嵌入式軟件的集成問題,通過信息分享機(jī)制滿足了分布式處理機(jī)之間的信息共享問題。目前已經(jīng)應(yīng)用于嵌入式實(shí)時(shí)操作系統(tǒng)(VxWorks)中,驗(yàn)證了筆者提出的嵌入式軟件構(gòu)件形態(tài)、分布式集成處理機(jī)通信處理、嵌入式構(gòu)件化軟件平臺(tái),并應(yīng)用于實(shí)際的車輛綜合電子系統(tǒng)分布式集群處理環(huán)境中。整個(gè)系統(tǒng)包括6個(gè)通用計(jì)算處理設(shè)備和47個(gè)專用處理設(shè)備,共集成32個(gè)軟件構(gòu)件,經(jīng)驗(yàn)證,系統(tǒng)運(yùn)行良好。
由于目前所采用的嵌入式實(shí)時(shí)操作系統(tǒng)只提供了平板內(nèi)存管理機(jī)制,每個(gè)軟件構(gòu)件都能訪問全部地址空間,在該系統(tǒng)實(shí)現(xiàn)的軟件構(gòu)件模型是不安全的。隨著嵌入式實(shí)時(shí)操作系統(tǒng)的技術(shù)發(fā)展,提供了實(shí)時(shí)進(jìn)程(Real Time Process)的應(yīng)用編程接口,能對(duì)每個(gè)進(jìn)程訪問的地址空間進(jìn)行有效的隔離保護(hù)。作者將在現(xiàn)有研究成果的基礎(chǔ)上,結(jié)合嵌入式實(shí)時(shí)操作系統(tǒng)實(shí)時(shí)進(jìn)程的新特性逐步完善軟件構(gòu)件集成安全可靠性方面的工作。
[1]谷青范,康介詳,馮國(guó)良,等.動(dòng)態(tài)自適應(yīng)DDS實(shí)時(shí)中間件的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2012,39(7):36-38.GU Qingfan,KANG Jiexiang,F(xiàn)ENG Guoliang,et al.Reasearch on Implementation of Dynamic Adaptive Real-Time Middleware Based on DDS [J].Computer Science,2012,39(7):36-38.
[2]孫文俊,馮燕,張宏宇.基于DDS的實(shí)時(shí)信息交換平臺(tái)研究[J].指揮信息系統(tǒng)與技術(shù),2011,2(1):49-53.SUN Wenjun,F(xiàn)ENG Yan,ZHANG Hongyu.Research on Real-Time Data Exchange Platform Based on DDS [J].Command Information System and Technology,2011,2(1):49-53.
[3]盧傳富,錢興華.實(shí)時(shí)數(shù)據(jù)發(fā)布服務(wù)的研究[J].艦船電子工程,2006,26(1):32-38.LU Chuanfu,QIAN Xinghua.Research of Real-Time Data Delivery Service[J].Ship Electronic Engineering,2006,26(1):32-38.
[4]ANDREW S TANENBAUM,MAARTEN VAN STEEN.分布式系統(tǒng)原理與泛型[M].2版.北京:清華大學(xué)出版社,2008.ANDREW S TANENBAUM,MAARTEN VAN STEEN.Distributed Systems Principles and Paradigms[M].2 ed.Beijing:Tsinghua University Press,2008.
[5]曹敬瑜,柴瑋巖,王博,等.嵌入式分布計(jì)算環(huán)境下的高效軟件構(gòu)件化框架研究[J].兵工學(xué)報(bào),2013,35(4):451-458.CAO Jingyu,CHAI Weiyan,WANG Bo,et al.Reasearch on Efficient Software Component Framework for Embedded Distributed Computing Environment[J].Acta Armamentaril,2013,35(4):451-458.
[6]丁博,王懷民,史殿習(xí),等.一種支持軟件可信演化的構(gòu)件模型[J].軟件學(xué)報(bào),2011,22(1):322-332.DING Bo,WANG Huaimin,SHI Dianxi,et al.Component Model Supporting Trustworthiness-Oriented Software Evolution[J].Journal of Software,2011,22(1):322-332.
[7]王琦,曾廣平,楊傾生.基于構(gòu)件的服務(wù)模板研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(7):44-50.WANG Qi,ZENG Guangping,YANG Qingsheng.Study on Service Template Based on Component[J].Computer Engineering and Design,2013,34(7):44-50.
[8]胡黃水,秦貴和.基于實(shí)際無線環(huán)境的無線傳感器網(wǎng)絡(luò)拓?fù)淇刂扑惴ǎ跩].吉林大學(xué)學(xué)報(bào):工學(xué)版,2012,37(4):958-962.HU Huangshui,QIN Guihe.Real Wireless Environment Based to Pology Control Algorithm for Wireless Sensor Networks[J].Journal of Jilin University:Engineering and Technology Edition,2012,37(4):958-962.
[9]陳思國(guó),姜旭,王健,等.車載自組網(wǎng)與通用移動(dòng)通信系統(tǒng)混雜網(wǎng)絡(luò)技術(shù)[J].吉林大學(xué)學(xué)報(bào):工學(xué)版,2013,38(3):706-710.CHEN Siguo,JIANG Xu,WANG Jian,et al.Mashup of Vehicular Ad-Hoc Network and Universal Mobile Telecommunications System [J].Journal of Jilin University:Engineering and Technology Edition,2013,38(3):706-710.
[10]XU Bing,QIN Guihe.Control of MOST Network Equipment Based on Speech Interface [J].Computer Engineering and Design,2009,29(2):268-271.
[11]蘇偉,楊斌.數(shù)據(jù)分發(fā)服務(wù)在分布式嵌入式系統(tǒng)中的研究與設(shè)計(jì)[J].成都信息工程學(xué)院學(xué)報(bào),2011,26(1):72-76.SU Wei,YANG Bin.The Study and Design of Data Distribution Service in Distributed and Embedded Systems[J].Journal of Chengdu University of Information Technology,2011,26(1):72-76.
[12]王傳勝,李喬儒.基于JMS的消息服務(wù)的研究與開發(fā)[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(12):35-41.WANG Chuansheng,LI Qiaoru.Research and Application of Message Service Based on JMS [J].Computer Engineering and Design,2005,26(12):35-41.
[13]QIN Guihe,LI Baoling,SONG Yiqing,et al.Design of In-Vehicle MOST Network Audio Node [J].Computer Engineering and Applications,2007,26(2):94-96.
[14]馮慶,桑楠,熊光澤.嵌入式應(yīng)用中運(yùn)行支撐框架的構(gòu)件化技術(shù)研究[J].計(jì)算機(jī)科學(xué),2005,32(3):152-155.FENG Qing,SANG Nan,XIONG Guangze.Research on Component-Based Runtime-Supporting Framework of Embedded Systems[J].Computer Science,2005,32(3):152-155.
[15]李玲,付園,麻曉珍,等.云存儲(chǔ)系統(tǒng)中數(shù)據(jù)冗余策略優(yōu)化問題[J].吉林大學(xué)學(xué)報(bào):信息科學(xué)版,2013,31(1):1-7.LI Ling,F(xiàn)U Yuan,MA Xiaozhen,et al.Research of Data Redundancy Policy Optimization Problem in Cloud Storage System[J].Journal of Jilin University:Information Science Edition,2013,31(1):1-7.