石 煒 , 鄧 偉
(1.通信信息控制和安全技術重點實驗室 浙江 嘉興 314033;2.中國電子科技集團公司第三十六研究所 浙江 嘉興 314033)
軟件無線電[1]這個概念已經提出快二十年,不僅僅在通訊領域也在雷達、電子戰、導航、廣播電視、測控等相關領域得到長足發展。軟件無線電的基本思想是以開放性、可擴展、結構精簡的硬件為通用平臺,把盡可能多的無線電功能用重構、可升級的構件化軟件實現,隨著天線智能化、前端寬開化、中頻寬帶化、硬件通用化、功能軟件化和軟件構件化的發展,已經能夠滿足未來天基信息系統衛星功能可重構設計的需求。
未來天基信息系統衛星載荷主要包括智能寬帶天線、通用平臺、星載控制計算機幾部分,其中星載控制計算機根據地面控制設備的需求主要完成對系統中通用平臺等資源的控制、管理、確定各種功能的參數配置、重構和對通用平臺的輸出數據的綜合處理,是整個天基信息系統衛星載荷中的重要組成部分。為了滿足未來天基信息系統的“軟件無線電”概念設計,達到系統的可重構要求,對星載控制計算機的設計也提出了可重構要求。
星載控制計算機通常采用高可靠、高實時的嵌入式操作系統,而VxWorks是一個功能強大的高實時嵌入式操作系統,為星載控制計算機的設計實現提供了一個完美的軟件平臺。VxWorks的動態加載器為用戶設計高可靠、可重構的星載控制計算機軟件提供了有力的技術手段。
為滿足高可靠、可重構的星載控制計算機的設計需求,星載控制計算機的設計采用分層式模塊化設計,如圖1所示。
底層硬件、VxWorks操作系統:為星載控制計算機的軟件運行提供一個高可靠、高性能、低功耗、小體積、強實時的軟硬件支持平臺。
擴展模塊動態加載管理:負責星載控制計算機上層應用軟件模塊和與星載控制計算機相連的其他星載載荷的可重構模塊的加載、卸載、管理工作。其設計基于VxWorks的動態加載組件,但消除了VxWorks動態加載組件允許可重名加載、允許加載含有未定義符號的模塊、不考慮依賴關系的模塊卸載這3方面不足。

圖1 星載控制計算機軟件架構Fig.1 On-board computer’s software architecture
上層應用軟件:上層應用軟件負責提供星載計算機受地面控制的能力、各類功能的實現和調度以及參數可配置、功能結果數據和狀態數據的上報等。為滿足高靈活、可重構的設計采用優化模塊化設計方法注重各模塊顆粒度選擇,在減少模塊之間的依賴層次的同時,最大化公用模塊的提取,增加各模塊的可移植性。
擴展模塊動態加載管理設計是星載控制計算機實現可重構設計,完成功能定制、動態升級、故障恢復的技術手段。
擴展模塊動態加載管理的設計是基于VxWorks動態加載組件,VxWorks支持多種模塊格式文件主要為ELF[3]。VxWorks動態加載組件已經提供了一個基本的動態加載、卸載能力但是其存在允許可重名加載、允許加載含有未定義符號的模塊、不考慮依賴關系的模塊卸載、不具備模塊重載能力等不足。因此需要對其加載機制進行改進,設計一種擴展模塊動態加載管理系統來完善動態加載機制,實現星載計算機的可重構設計。
動態加載管理采用分層式設計[2]由用戶接口層、管理層、執行層3個層次組成如圖2所示。

圖2 動態加載管理Fig.2 Dynamic loading management
用戶接口層為用戶提供了包括信息查詢、模塊操作(加載、卸載、重載、替換)、模塊的設置(自動加載屬性的設置)、用戶幫助之類的管理指令。其指令集合如表1所示。

表1 用戶接口層主要指令集合Tab.1 Main instructions of user interface
在管理層中主要負責模塊信息、模塊依賴信息、自動加載屬性的保存和維護,模塊加載等功能的策略執行以及信息查詢能力。
2.4.1 模塊信息、模塊依賴關系管理
模塊信息主要由加載參數、MODULE_ID、依賴關系鏈表、被依賴關系鏈表組成如圖3所示。

圖3 模塊信息管理和依賴關系Fig.3 Module information management and Depended RelationShip
加載參數:包括模塊名、模塊文件、加載方式、模塊載荷ID等信息。
MODULE_ID:加載完成后的模塊信息內容,其主要結構定義如下:


模塊的依賴關系[4]:模塊之間的依賴關系分別通過依賴關系鏈表、被依賴關系鏈表來管理。完整的獲知各模塊的依賴信息,主要有2種方法:1)操作人員通過輸入提供。2)在動態加載的符號解析階段,自動提取出依賴信息。
2.4.2 各功能操作策略
為解決VxWorks動態加載組件的不足,對各功能操作策略進行了改進。
1)模塊加載
模塊加載如圖4所示,首先判斷是否在系統中已經有與此模塊名稱重名的模塊,如果沒有重名的模塊則創建模塊信息,調用執行層中的模塊加載函數完成模塊的加載。

圖4 模塊動態加載流程Fig.4 Module dynamic loading flow
2)模塊卸載
模塊卸載[5]如圖5所示。

圖5 模塊卸載流程Fig.5 Module dynamic unloading flow
3)模塊重載
模塊重載如圖6所示,它與模塊的加載存在著不同,首先要求被重載的模塊已加載到內存當中,在模塊重載的時候,需要指定模塊加載到的此模塊之前加載的內存位置,不需要創建模塊信息和修改模塊依賴表和模塊被依賴表等信息。

圖6 模塊重載流程Fig.6 Module dynamic reloading flow
4)模塊替換
模塊的替換如圖7所示,它可以用于功能模塊的動態升級、故障修改、功能擴展等情況。

圖7 模塊替換流程Fig.7 Module replacing flow
5)模塊自動加載
模塊自動加載用于系統在重新啟動復位后或系統新功能定制完成后,依據自動加載配置文件信息逐個加載功能模塊,完成系統的初始化和功能的定制。
執行層主要負責動態加載的底層操作實現,比如:加載、卸載和重載,如圖8所示。本設計中主要從VxWorks的加載組件中進行信息的獲取和操作,由于星載控制計算機是整個衛星載荷加載重構的管理者,在加載、卸載和重載中也加入了對衛星中其他載荷的加載、卸載、重載控制。

圖8 模塊操作執行流程Fig.8 Module executing flow
該設計達到了未來天基信息系統中衛星載荷星載控制計算機的功能重構、動態升級、故障恢復、資源管理的要求,使未來天基信息系統衛星載荷能夠通過軟件的方式上載各功能模塊、新算法、新軟件實現衛星載荷的工作達到不同時域、不同空域、不同功能需求的目的。
[1]楊小牛,樓才義,徐建良.軟件無線電技術與應用[M].北京:北京理工大學出版社,2010.
[2]于康.基于動態加載機制的星載計算機可靠性增強技術研究[D].長沙:國防科學技術大學,2009.
[3]何先波,唐寧九,呂方,等.ELF文件格式及應用[J].計算機應用研究,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]楊偉,羅蕾.嵌入式系統中的模塊動態加載技術[J].單片機與嵌入式系統應用,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]王鵬,張友根,李永剛.一種改進的VxWorks模塊卸載方法研究[J].裝備指揮技術學院學報,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].計算機工程,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.