周 彥,姜 兵
(成都飛機設計研究所,四川 成都 610091)
飛機管理系統是下一代戰斗機最重要的飛行安全關鍵系統之一,它以飛控系統為核心,通過飛機管理計算機,對所有與飛行安全相關的機載系統進行綜合控制與管理。
目前,國外已有成熟的基于嵌入式實時操作系統的飛控系統軟件產品,如:Green Hills的INTEGRITY 178B操作系統在波音-787飛機中的應用、Wind River的VxWorks 653在X-47B無人機飛控系統中的應用、Lockheed Martin定制開發的VMX操作系統在JSF飛機中的應用等。
從國內的情況來看,目前戰斗機飛控機載軟件的操作系統大多是針對飛控計算機硬件環境定制開發的,很顯然能夠滿足飛控系統需求。但是,具有操作系統功能特性的各種軟件模塊沒有形成一個獨立的內核,與應用層軟件沒有明顯的層次劃分,這種設計特點決定了該類型操作系統不可能支持分區功能。
為了突破這一瓶頸,實現分區操作系統在飛行安全關鍵系統中的應用,我們前期開展了嵌入式實時操作系統在飛機管理系統的應用研究。在這項研究中,采用了國內自研的時空隔離嵌入式實時分區操作系統,并成功完成了基于該操作系統的飛機管理系統應用軟件的設計和原理驗證,為自研操作系統在飛行安全關鍵軟件研發領域的應用起到了重要的支撐作用。但是,在經過多次驗證后,原有的軟件架構設計中的不足逐步開始體現,主要包括以下幾個方面:a)軟件架構層次界限模糊;b)對于采用主/從CPU架構的計算機,主要消息收發嚴重依賴主CPU的接口分區,從而CPU的功能嚴重受影響;c)應用框架不明確,各個分區開發者自行定義分區結構,相同功能重復開發,測試驗證的時間和成本攀升。
本文從分析嵌入式實時操作系統在上一階段的研究情況入手,在大量前期工作的基礎上總結工程實踐經驗,借鑒國外先進軟件設計理念,提出了一種基于嵌入式微內核操作系統的空間隔離消息通信設計方法,并對其在飛管系統機載軟件中的應用驗證進行了分析說明。
基于安全分區的操作系統架構下的分區間消息通信方式有直接通信和間接通信兩種。
其中,直接通信,即是指在通信過程中雙方必須明確對通信的對方進行命名。符合ARINC653標準直接通信的常見應用應由端口、通道和消息組成。分區間通信是通過端口發送和接收消息完成的。分區通過端口的直接互聯實現了間接互聯。通道提供了端口之間的互聯機制,每一條通道指明了發送消息的端口名稱和所屬分區,及接收消息的端口和所屬分區。
間接通信,即是指通信的雙方不需要指出消息的來源和去向,即發送者不指出消息的接受方,而接受方也不指出消息的源,消息發送到郵箱,從郵箱中接收消息。每個郵箱有一個唯一的標識。間接通信方式中通信鏈接的特點是只有當分區共享一個公共郵箱時鏈接才建立;一個鏈接可以與多個分區相聯系;每對分區之間可以使用多個通信鏈接;
基于這一間接通信方式的典型應用即是消息訂閱分發技術,它提供數據的交換和集成,數據訂閱分發服務是一種在網絡環境下不同資源間實現信息動態交換的一種信息共享機制,包括發送和接收訂閱請求、分發訂閱的內容,對本系統內的環境和數據進行自動維護并為整個網絡提供分布式數據訂閱分發服務。
根據安全分區間接通信原理,考慮在飛機管理計算機中設置數據池作為消息訂閱和發布的郵箱,分區間不再使用共享內存,而采用跟總線消息一致的消息機制進行數據的交換。根據設計要求,在計算機中設定一片內存區域作為數據池,每個分區需要設立獨立的分區發布數據緩存和分區訂閱數據緩存區域。
目前的飛機管理計算機提供了DMA(Direct Memory Access)和CPU兩種數據搬移的方式,首先對這兩種通信通路的執行效率進行測試。
我們基于一個樣例CPU時序分區軟件,將其移植到新的消息收發機制中,對數據搬移時間和軟件運行時間進行了測試。作為測試樣本的CPU分區時序分布如圖1所示。

圖1 樣例CPU時序分布圖 圖2 內接口DMA/CPU傳輸效率對比
作為測試樣本的主CPU的軟件包括3個應用分區和3個I/O分區。測試選取了以DMA和CPU兩種傳輸方式,測試方式為被測分區軟件在控制管理模式下連續運行100000個小幀周期,獲取時間測試點的CPU時基寄存器值,計算兩個測試點的時基之差并折算為毫秒。2種傳輸方式的測試用例設計如表1所示。

表1 多標簽飛控數據集統計信息
2.1.1 DMA方式
總線數據和CCDL數據通過DMA交換數據,DMA配置為直接模式,主CPU實時任務運行時間的測試結果見表2。

表2 DMA方式執行時間測試
2.1.2CPU方式
總線數據和CCDL數據通過CPU交換數據,CPU拷貝為32位模式,主CPU實時任務運行時間的測試結果見表3。

表3 CPU方式執行時間測試
將兩種測試樣本的數據傳輸效率和運行效率進行比較,如圖2所示。CPU耗費的I/O時間平均達到了DMA耗費的I/O時間的1.78倍,其在I/O處理上的效率遠低于DMA。因此,對于外部接口,即在主CPU和總線接口單元緩存的通信及主CPU到從CPU的雙口通信應采用DMA進行數據的收發。
對于主CPU內部接口,可以采用DMA和CPU兩種數據搬移的方式,對Cache使能和Cache禁止的軟件執行效率進行了測試,測試方式參數設置同上。2種訪問方式的測試用例設計如表4。

表4 測試用例設置
分區間通信的僅在分區內的執行時間內進行,不占用3個I/O分區的時間,因此,分區內的數據測試僅測試三個應用分區的執行時間,其I/O時間為消息發布和訂閱時間,運行時間即是實時周期任務執行時間。將消息訂閱和發布的時間及程序運行時間進行單獨測試。
2.2.1 DMA方式
分區間消息通過DMA交換數據,DMA配置為直接模式,主CPU實時任務運行時間見表5。

表5 DMA方式分區接口/運行時間測試
2.2.2 CPU方式
分區間消息通過DMA交換數據,DMA配置為直接模式,主CPU實時任務運行時間見表6。

表6 CPU方式分區接口/運行時間測試
將兩種測試樣本的數據傳輸效率和運行效率進行比較,如圖2所示。
根據測試結果發現,不管是I/O時間還是執行時間,CPU傳輸均優于DMA傳輸。從而對于內部接口,即在主CPU內部的分區間數據通信應采用CPU進行數據的收發。
從執行效率考慮,外部接口設計應使用DMA數據傳輸,內部接口設計應使用CPU進行數據傳輸,但是對于外部接口和內部接口交匯的部分,即數據池的設計存在著物理矛盾。矛盾的本體在于:
(1)數據池需要為外接口設置為Cache禁止;
(2)數據池需要為內接口設置為Cache使能。
對分區數據流進行分析后,發現分區間的數據交換僅存在于主CPU內部,沒有將分區發布的內部接口包發送到總線的設計需求,因此結合空間分離和系統級別分離的原理,在空間隔離的消息通信設計中對數據池進行拆分,劃分為局部數據池和全局數據池兩級數據池訂閱和發布的數據中心。
(3)局部數據池及數據流。局部數據池用于分區間消息的通信,其通信模式及數據流設計參見圖3。

圖3 局部消息通信模型 圖4 全局消息通信模型
(4)全局數據池及數據流。其通信模式及數據流設計如圖4所示,主CPU和總線接口單元雙口及主CPU和從CPU雙口間的數據交換數據流如圖4。
根據空間隔離的消息通信設計方法,在某型戰斗機飛機管理系統應用軟件完成了空間隔離的數據訂閱和發布設計。并基于某型飛管計算機進行了原理驗證,該計算機的硬件構型見表7:

表7 目標機構型
系統在正常工作期間,總線數據或分區之間的數據通訊均通過數據池實現數據交換。操作系統系統服務程序則按照系統初始化期間應用在分區中間層內訂閱和發布消息的速率具體執行數據輸入輸出操作。操作系統負責維護這全局和局部兩個數據池,并隔離分區應用權限。
基于單板構型和目標機構型,對消息訂閱發布功能初始化、消息注冊、消息訂閱、消息周期發布和消息事件發布進行了功能驗證,同時完成了基于目標機的消息訂閱發布性能測試,結果見表8:

表8 驗證結果
驗證結果表明,基于嵌入式微內核操作系統的空間隔離消息通信設計方法可滿足某型戰斗機飛機管理系統軟件對消息通信的功能及性能要求。
在綜合分析了嵌入式實時操作系統在飛機管理系統應用設計中存在的缺陷基礎上,本文借鑒了國外先進設計經驗及安全分區的通信原理,設計了空間隔離的消息通信機制,并在飛機管理系統的軟件設計中進行了實際應用和原理驗證。
通過分析和原理驗證,該方法使用的消息通信可以實現完全的空間隔離,并且通過靈活的SCD配置,極大降低了操作系統和應用,主CPU的硬件間及主CPU和從CPU的數據間的耦合性。
截止目前,本文所研究的基于嵌入式微內核操作系統的空間隔離通信設計方法已完成多輪測試驗證和試驗試飛,測試結果表明改方法設計合理正確,數據流清晰,實現了分區之間的有效隔離。