石 煒 , 鄧 偉
(1.通信信息控制和安全技術(shù)重點實驗室 浙江 嘉興 314033;2.中國電子科技集團(tuán)公司第三十六研究所 浙江 嘉興 314033)
軟件無線電[1]這個概念已經(jīng)提出快二十年,不僅僅在通訊領(lǐng)域也在雷達(dá)、電子戰(zhàn)、導(dǎo)航、廣播電視、測控等相關(guān)領(lǐng)域得到長足發(fā)展。軟件無線電的基本思想是以開放性、可擴(kuò)展、結(jié)構(gòu)精簡的硬件為通用平臺,把盡可能多的無線電功能用重構(gòu)、可升級的構(gòu)件化軟件實現(xiàn),隨著天線智能化、前端寬開化、中頻寬帶化、硬件通用化、功能軟件化和軟件構(gòu)件化的發(fā)展,已經(jīng)能夠滿足未來天基信息系統(tǒng)衛(wèi)星功能可重構(gòu)設(shè)計的需求。
未來天基信息系統(tǒng)衛(wèi)星載荷主要包括智能寬帶天線、通用平臺、星載控制計算機(jī)幾部分,其中星載控制計算機(jī)根據(jù)地面控制設(shè)備的需求主要完成對系統(tǒng)中通用平臺等資源的控制、管理、確定各種功能的參數(shù)配置、重構(gòu)和對通用平臺的輸出數(shù)據(jù)的綜合處理,是整個天基信息系統(tǒng)衛(wèi)星載荷中的重要組成部分。為了滿足未來天基信息系統(tǒng)的“軟件無線電”概念設(shè)計,達(dá)到系統(tǒng)的可重構(gòu)要求,對星載控制計算機(jī)的設(shè)計也提出了可重構(gòu)要求。
星載控制計算機(jī)通常采用高可靠、高實時的嵌入式操作系統(tǒng),而VxWorks是一個功能強(qiáng)大的高實時嵌入式操作系統(tǒng),為星載控制計算機(jī)的設(shè)計實現(xiàn)提供了一個完美的軟件平臺。VxWorks的動態(tài)加載器為用戶設(shè)計高可靠、可重構(gòu)的星載控制計算機(jī)軟件提供了有力的技術(shù)手段。
為滿足高可靠、可重構(gòu)的星載控制計算機(jī)的設(shè)計需求,星載控制計算機(jī)的設(shè)計采用分層式模塊化設(shè)計,如圖1所示。
底層硬件、VxWorks操作系統(tǒng):為星載控制計算機(jī)的軟件運行提供一個高可靠、高性能、低功耗、小體積、強(qiáng)實時的軟硬件支持平臺。
擴(kuò)展模塊動態(tài)加載管理:負(fù)責(zé)星載控制計算機(jī)上層應(yīng)用軟件模塊和與星載控制計算機(jī)相連的其他星載載荷的可重構(gòu)模塊的加載、卸載、管理工作。其設(shè)計基于VxWorks的動態(tài)加載組件,但消除了VxWorks動態(tài)加載組件允許可重名加載、允許加載含有未定義符號的模塊、不考慮依賴關(guān)系的模塊卸載這3方面不足。
圖1 星載控制計算機(jī)軟件架構(gòu)Fig.1 On-board computer’s software architecture
上層應(yīng)用軟件:上層應(yīng)用軟件負(fù)責(zé)提供星載計算機(jī)受地面控制的能力、各類功能的實現(xiàn)和調(diào)度以及參數(shù)可配置、功能結(jié)果數(shù)據(jù)和狀態(tài)數(shù)據(jù)的上報等。為滿足高靈活、可重構(gòu)的設(shè)計采用優(yōu)化模塊化設(shè)計方法注重各模塊顆粒度選擇,在減少模塊之間的依賴層次的同時,最大化公用模塊的提取,增加各模塊的可移植性。
擴(kuò)展模塊動態(tài)加載管理設(shè)計是星載控制計算機(jī)實現(xiàn)可重構(gòu)設(shè)計,完成功能定制、動態(tài)升級、故障恢復(fù)的技術(shù)手段。
擴(kuò)展模塊動態(tài)加載管理的設(shè)計是基于VxWorks動態(tài)加載組件,VxWorks支持多種模塊格式文件主要為ELF[3]。VxWorks動態(tài)加載組件已經(jīng)提供了一個基本的動態(tài)加載、卸載能力但是其存在允許可重名加載、允許加載含有未定義符號的模塊、不考慮依賴關(guān)系的模塊卸載、不具備模塊重載能力等不足。因此需要對其加載機(jī)制進(jìn)行改進(jìn),設(shè)計一種擴(kuò)展模塊動態(tài)加載管理系統(tǒng)來完善動態(tài)加載機(jī)制,實現(xiàn)星載計算機(jī)的可重構(gòu)設(shè)計。
動態(tài)加載管理采用分層式設(shè)計[2]由用戶接口層、管理層、執(zhí)行層3個層次組成如圖2所示。
圖2 動態(tài)加載管理Fig.2 Dynamic loading management
用戶接口層為用戶提供了包括信息查詢、模塊操作(加載、卸載、重載、替換)、模塊的設(shè)置(自動加載屬性的設(shè)置)、用戶幫助之類的管理指令。其指令集合如表1所示。
表1 用戶接口層主要指令集合Tab.1 Main instructions of user interface
在管理層中主要負(fù)責(zé)模塊信息、模塊依賴信息、自動加載屬性的保存和維護(hù),模塊加載等功能的策略執(zhí)行以及信息查詢能力。
2.4.1 模塊信息、模塊依賴關(guān)系管理
模塊信息主要由加載參數(shù)、MODULE_ID、依賴關(guān)系鏈表、被依賴關(guān)系鏈表組成如圖3所示。
圖3 模塊信息管理和依賴關(guān)系Fig.3 Module information management and Depended RelationShip
加載參數(shù):包括模塊名、模塊文件、加載方式、模塊載荷ID等信息。
MODULE_ID:加載完成后的模塊信息內(nèi)容,其主要結(jié)構(gòu)定義如下:
模塊的依賴關(guān)系[4]:模塊之間的依賴關(guān)系分別通過依賴關(guān)系鏈表、被依賴關(guān)系鏈表來管理。完整的獲知各模塊的依賴信息,主要有2種方法:1)操作人員通過輸入提供。2)在動態(tài)加載的符號解析階段,自動提取出依賴信息。
2.4.2 各功能操作策略
為解決VxWorks動態(tài)加載組件的不足,對各功能操作策略進(jìn)行了改進(jìn)。
1)模塊加載
模塊加載如圖4所示,首先判斷是否在系統(tǒng)中已經(jīng)有與此模塊名稱重名的模塊,如果沒有重名的模塊則創(chuàng)建模塊信息,調(diào)用執(zhí)行層中的模塊加載函數(shù)完成模塊的加載。
圖4 模塊動態(tài)加載流程Fig.4 Module dynamic loading flow
2)模塊卸載
模塊卸載[5]如圖5所示。
圖5 模塊卸載流程Fig.5 Module dynamic unloading flow
3)模塊重載
模塊重載如圖6所示,它與模塊的加載存在著不同,首先要求被重載的模塊已加載到內(nèi)存當(dāng)中,在模塊重載的時候,需要指定模塊加載到的此模塊之前加載的內(nèi)存位置,不需要創(chuàng)建模塊信息和修改模塊依賴表和模塊被依賴表等信息。
圖6 模塊重載流程Fig.6 Module dynamic reloading flow
4)模塊替換
模塊的替換如圖7所示,它可以用于功能模塊的動態(tài)升級、故障修改、功能擴(kuò)展等情況。
圖7 模塊替換流程Fig.7 Module replacing flow
5)模塊自動加載
模塊自動加載用于系統(tǒng)在重新啟動復(fù)位后或系統(tǒng)新功能定制完成后,依據(jù)自動加載配置文件信息逐個加載功能模塊,完成系統(tǒng)的初始化和功能的定制。
執(zhí)行層主要負(fù)責(zé)動態(tài)加載的底層操作實現(xiàn),比如:加載、卸載和重載,如圖8所示。本設(shè)計中主要從VxWorks的加載組件中進(jìn)行信息的獲取和操作,由于星載控制計算機(jī)是整個衛(wèi)星載荷加載重構(gòu)的管理者,在加載、卸載和重載中也加入了對衛(wèi)星中其他載荷的加載、卸載、重載控制。
圖8 模塊操作執(zhí)行流程Fig.8 Module executing flow
該設(shè)計達(dá)到了未來天基信息系統(tǒng)中衛(wèi)星載荷星載控制計算機(jī)的功能重構(gòu)、動態(tài)升級、故障恢復(fù)、資源管理的要求,使未來天基信息系統(tǒng)衛(wèi)星載荷能夠通過軟件的方式上載各功能模塊、新算法、新軟件實現(xiàn)衛(wèi)星載荷的工作達(dá)到不同時域、不同空域、不同功能需求的目的。
[1]楊小牛,樓才義,徐建良.軟件無線電技術(shù)與應(yīng)用[M].北京:北京理工大學(xué)出版社,2010.
[2]于康.基于動態(tài)加載機(jī)制的星載計算機(jī)可靠性增強(qiáng)技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2009.
[3]何先波,唐寧九,呂方,等.ELF文件格式及應(yīng)用[J].計算機(jī)應(yīng)用研究,2001(11):150-156.HE Xian-bo,TANG Ning-jiu,LV Fang,et al.The format and applicationsofELF file[J].The Reseach ofComputer Application,2001(11):150-156.
[4]楊偉,羅蕾.嵌入式系統(tǒng)中的模塊動態(tài)加載技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,5(11):8-10.YANG Wei,LUO Lei.Module dynamic loading technology of embedded systems[J].Microcontrollers&Embedded Systems,2005,5(11):8-10.
[5]王鵬,張友根,李永剛.一種改進(jìn)的VxWorks模塊卸載方法研究[J].裝備指揮技術(shù)學(xué)院學(xué)報,2010,21(5):83-87.WANG Peng,ZHANG You-gen,LI Yong-gang.Research on the improved modules unloading method of VxWorks[J].JournaloftheAcademyofEquipmentCommand&Technology,2010,21(5):83-87.
[6]于康,寧洪,鄧勝蘭,等.基于VxWorks的模塊自動加載機(jī)制[J].計算機(jī)工程,2010,36(18):264-266.YU Kang,NING Hong,DENG Sheng-lan,etal.Module automatically loading mechanism based on VxWorks[J].Computer Engineering,2010,36(18):264-266.