基于天脈1型嵌入式操作系統(tǒng)光纖航姿軟件開發(fā)
作者簡(jiǎn)介:張斌(1973—),男,碩士,高級(jí)工程師,現(xiàn)從事嵌入式系統(tǒng)航空軟件開發(fā)及機(jī)載慣性導(dǎo)航技術(shù)研究。
0 引言
斯諾登的棱鏡門和中興事件曝光后,如何在國(guó)防裝備中采用國(guó)產(chǎn)系統(tǒng)以提高裝備自主性、安全性,防范可能存在的漏洞和后門,已經(jīng)成為國(guó)防裝備戰(zhàn)線迫切需要解決的問(wèn)題。
天脈1 型嵌入式操作系統(tǒng)(簡(jiǎn)稱:天脈1,英文名:ACoreOS1.X)是航空工業(yè)西安航空計(jì)算所研發(fā)的針對(duì)航空、航天應(yīng)用需求而設(shè)計(jì)的具有完全自主知識(shí)版權(quán)的嵌入式國(guó)產(chǎn)操作系統(tǒng)[1];是在航空、航天等對(duì)系統(tǒng)實(shí)時(shí)性、安全性、可靠性有極高需求的領(lǐng)域中使用的嵌入式操作系統(tǒng)。目前,天脈1 嵌入式操作系統(tǒng)已在我國(guó)多型軍、民用航空裝備上得到廣泛應(yīng)用。本文介紹了基于天脈1 操作系統(tǒng)設(shè)計(jì)的光纖航姿系統(tǒng)的組成和原理,描述了光纖航姿軟件的任務(wù)劃分、任務(wù)調(diào)度。
1 天脈1操作系統(tǒng)簡(jiǎn)介
天脈1 采用標(biāo)準(zhǔn)C 語(yǔ)言與匯編語(yǔ)言混合開發(fā),按照GJB 和DO-178B 進(jìn)行研發(fā)和測(cè)試,是一款面向多任務(wù)應(yīng)用的強(qiáng)實(shí)時(shí)嵌入式系統(tǒng)平臺(tái),能夠協(xié)助編程者管理嵌入式系統(tǒng)硬件資源,顯著降低應(yīng)用軟件開發(fā)和維護(hù)難度。
天脈1 主要有如下功能:
● 采用微內(nèi)核設(shè)計(jì),組件可配置、裁剪;
● 支持PPC、x86、ARM 等主流處理器,支持龍芯、飛騰等國(guó)產(chǎn)處理器;
● 采用層次化微結(jié)構(gòu),微內(nèi)核和硬件相隔離開來(lái),方便硬件平臺(tái)的升級(jí);
● 存儲(chǔ)管理支持MMU 存儲(chǔ)保護(hù),關(guān)鍵數(shù)據(jù)區(qū)用戶可進(jìn)行防篡改保護(hù);
● 采用實(shí)時(shí)多任務(wù)調(diào)度,支持優(yōu)先級(jí)搶占和時(shí)間片輪轉(zhuǎn),任務(wù)切換以及中斷響應(yīng)可達(dá)到微秒級(jí);
● 提供消息隊(duì)列、環(huán)形緩沖等多種任務(wù)間通信機(jī)制,提供信號(hào)量、事件等任務(wù)同步機(jī)制;
● 支持對(duì)高速數(shù)據(jù)/ 指令緩存(CACHE)的管理;
● 支持周期任務(wù);
● 提供與VxWorks 兼容的API 接口。
天脈1 在應(yīng)用系統(tǒng)中處于硬件層和應(yīng)用層之間的中間位置,如圖1 所示,其主要任務(wù)是管理計(jì)算機(jī)板軟、硬件資源,并為應(yīng)用軟件的運(yùn)行提供服務(wù)。
對(duì)于CPU 硬件,天脈1 提供MSL 層軟件管理計(jì)算機(jī)板硬件設(shè)備;對(duì)于應(yīng)用軟件,操作系統(tǒng)負(fù)責(zé)應(yīng)用軟件的管理,主要實(shí)現(xiàn)應(yīng)用任務(wù)的調(diào)度、系統(tǒng)硬件資源的分配,為應(yīng)用軟件提供必要的運(yùn)行設(shè)備。天脈1 依據(jù)ASAAC 標(biāo)準(zhǔn)所定義三層軟件架構(gòu)進(jìn)行設(shè)計(jì)開發(fā)而成,其包含硬件模塊支持層(MSL),操作系統(tǒng)層(OSL)及應(yīng)用軟件層(APL)。三層結(jié)構(gòu)相互獨(dú)立,互相分隔,OSL 層和OSL 層組件可配置、裁剪,提供靈活的硬件及空間配置,開發(fā)人員可根據(jù)軟件及硬件特點(diǎn)進(jìn)行針對(duì)性開發(fā)設(shè)計(jì)[2]。
圖1 天脈1操作系統(tǒng)體統(tǒng)結(jié)構(gòu)
天脈1 相比其它操作系統(tǒng)具有以下幾個(gè)核心優(yōu)勢(shì)。
(1) 實(shí)時(shí)性強(qiáng)
天脈1 的任務(wù)切換和中斷響應(yīng)時(shí)間可達(dá)微秒級(jí);其采用了優(yōu)先級(jí)搶占、同優(yōu)先級(jí)時(shí)間片輪轉(zhuǎn)算法,確保任務(wù)的實(shí)時(shí)性;采用優(yōu)先級(jí)位圖法、最小化任務(wù)法切換開銷;通過(guò)匯編實(shí)現(xiàn)的中斷處理代碼以及中斷嵌套機(jī)制,實(shí)現(xiàn)對(duì)外部事件的實(shí)時(shí)響應(yīng)及處理要求。
(2) 可裁剪性
天脈1 開發(fā)環(huán)境采用中文的圖形界面,使用圖形化界面進(jìn)行環(huán)境配置和裁剪,最小可運(yùn)行環(huán)境配置不大于256 kb;提供的圖形、網(wǎng)絡(luò)協(xié)議棧、多種文件系統(tǒng)、USB、SATA 等常用組件裁剪、配置。
(3) 可靠性
天脈1 采用基于存儲(chǔ)管理單元(MMU) 的存儲(chǔ)保護(hù)機(jī)制,用戶可以對(duì)指定的區(qū)域的代碼/ 數(shù)據(jù)空間進(jìn)行讀/ 寫保護(hù),可以從內(nèi)核層面阻止地址空間的非法訪問(wèn);提供錯(cuò)誤接管機(jī)制,支持用戶對(duì)操作系統(tǒng)和應(yīng)用軟件的錯(cuò)誤加以接管;采用優(yōu)先級(jí)天花板和優(yōu)先級(jí)繼承策略處理任務(wù)優(yōu)先級(jí)翻轉(zhuǎn),確保高優(yōu)先級(jí)任務(wù)優(yōu)先執(zhí)行;提供硬件資源泄露預(yù)防措施和空間冗余策略,保證硬件資源的回收和配置數(shù)據(jù)的正確性。
(4) 可移植性
天脈1 向用戶提供VxWorks 兼容包,方便用戶將原先運(yùn)行在VxWorks 操作系統(tǒng)上的應(yīng)用軟件移植到天脈1 上,代碼修改比例一般不超過(guò)千分之四,提供C/C++ 語(yǔ)言支持,用戶可以根據(jù)項(xiàng)目構(gòu)架的設(shè)計(jì)自由選擇。
(5) 適應(yīng)性強(qiáng)
天脈1 支持PPC、x86、ARM 等主流處理器,支持龍芯、飛騰等國(guó)產(chǎn)處理器,提供典型的設(shè)備驅(qū)動(dòng)模塊可為/ 協(xié)助用戶定制專用驅(qū)動(dòng)模塊,并向用戶提供可擴(kuò)展接口,針對(duì)異常處理提供用戶自行擴(kuò)展;天脈1 中應(yīng)用程序、操作系統(tǒng)分別位于APL 層和OSL 層,模塊支持層(MSL)將兩者相連接,各層可獨(dú)立升級(jí)、維護(hù)。這樣使用戶可以專注于應(yīng)用軟件的開發(fā)。
2 光纖航姿的組成和原理
光纖航姿系統(tǒng)是基于光纖陀螺感測(cè)技術(shù)以及捷聯(lián)計(jì)算技術(shù)而設(shè)計(jì)的航向姿態(tài)系統(tǒng)。系統(tǒng)采用光纖陀螺、加速度計(jì)和捷聯(lián)磁傳感器作為敏感元件來(lái)感測(cè)飛機(jī)飛行過(guò)程中沿機(jī)體三個(gè)軸向上的運(yùn)動(dòng)角速率、線加速度信號(hào)及地磁信號(hào)分量,經(jīng)相應(yīng)電子線路量化、補(bǔ)償后傳輸給產(chǎn)品中的航姿解算計(jì)算機(jī),由航姿解算計(jì)算機(jī)解算得出飛機(jī)的航向、姿態(tài)等信號(hào)。同時(shí)系統(tǒng)通過(guò)總線接口接收機(jī)上北斗系統(tǒng)輸出緯度等數(shù)據(jù),并將捷聯(lián)解算得到的航向、姿態(tài)以及系統(tǒng)工作狀態(tài)字等數(shù)字信號(hào)通過(guò)RS422 接口發(fā)送至機(jī)上其它設(shè)備,系統(tǒng)組成結(jié)構(gòu)見圖2 所示。
捷聯(lián)計(jì)算的原理框圖如圖3 所示。
3 光纖航姿軟件應(yīng)用軟件設(shè)計(jì)
由光纖航姿的組成和原理可知,光纖陀螺輸出的角速率信號(hào)必須通過(guò)精確定時(shí)積分計(jì)算才能獲得正確航向和姿態(tài)數(shù)據(jù)。
光纖航姿軟件應(yīng)用軟件分成5 個(gè)模塊:初始化模塊、IMU 數(shù)據(jù)采集模塊、周期BIT 模塊、捷聯(lián)解算模塊和數(shù)據(jù)I/O 模塊[3]。
同時(shí)采用天脈系統(tǒng)特有的周期任務(wù)將IMU 數(shù)據(jù)采集任務(wù),捷聯(lián)解算任務(wù),數(shù)據(jù)輸入/ 輸出任務(wù)以及周期BIT 任務(wù)分別設(shè)計(jì)為4 個(gè)周期任務(wù),如表1。
所謂的周期任務(wù)是指每隔相等的時(shí)間間隔就必須就緒的任務(wù);天脈中的周期任務(wù)時(shí)間間隔具有硬時(shí)限,周期的值被認(rèn)為是恒定不變的,并且任務(wù)兩次就緒的時(shí)間只能等于周期。在周期任務(wù)中,操作的對(duì)象是“任務(wù)”。周期任務(wù)調(diào)度與普通調(diào)度的區(qū)別在于:普通的調(diào)度側(cè)重維護(hù)一個(gè)獨(dú)立的執(zhí)行體——任務(wù),使其作為一個(gè)獨(dú)立的邏輯單元,維護(hù)其走走停停執(zhí)行的正確性;而周期任務(wù)調(diào)度的側(cè)重點(diǎn)不僅是維護(hù)這樣一個(gè)邏輯單位,周期任務(wù)增加了一個(gè)更重要、更核心的屬性——周期,有了周期的要求后,系統(tǒng)的所有行為,比如狀態(tài)轉(zhuǎn)換、調(diào)度切換都是圍繞“周期”這個(gè)核心發(fā)生的[4]。
4 個(gè)任務(wù)在同步啟動(dòng)時(shí)刻(初始化完成后的0 時(shí)刻)都就緒,然后根據(jù)優(yōu)先級(jí)搶占的調(diào)度方式開始運(yùn)行(IMU數(shù)據(jù)采集周期任務(wù)、捷聯(lián)解算周期任務(wù)、數(shù)據(jù)I/O 周期任務(wù)、周期BIT 周期任務(wù)依次運(yùn)行)。
周期任務(wù)使用注意事項(xiàng):
● 任務(wù)的預(yù)期執(zhí)行時(shí)間必須小于任務(wù)周期;
● 任務(wù)之間不能存在同步和競(jìng)爭(zhēng)。
4 結(jié)語(yǔ)
本文對(duì)天脈1 的內(nèi)核特點(diǎn)、應(yīng)用開發(fā)環(huán)境和多任務(wù)調(diào)度方式進(jìn)行了分析,結(jié)合光纖航姿系統(tǒng)功能需求,對(duì)光纖航姿軟件的功能模塊進(jìn)行了劃分與設(shè)計(jì),采用天脈1 特有的周期任務(wù)對(duì)光纖航姿軟件的任務(wù)進(jìn)行了劃分和優(yōu)先級(jí)的設(shè)置。經(jīng)地面測(cè)試和飛行試驗(yàn)驗(yàn)證,基于天脈1 的光纖航姿軟件穩(wěn)定可靠、實(shí)時(shí)性強(qiáng),可滿足光纖航姿系統(tǒng)功能、性能、可靠性、安全性要求。采用本文介紹的方法、思路進(jìn)行導(dǎo)航類軟件設(shè)計(jì)、開發(fā),能夠明顯降低軟件設(shè)計(jì)難度、有效保證產(chǎn)品實(shí)時(shí)性和可靠性,對(duì)相似嵌入式軟件開發(fā)具有一定借鑒意義。
參考文獻(xiàn):
[1] 天脈技術(shù)白皮書[Z].
[2] ACoreOS機(jī)載嵌入式實(shí)時(shí)操作系統(tǒng)參考手冊(cè)[Z].
[3] 徐海榮,趙鳴,陳閩葉,等.嵌入式軟件系統(tǒng)的一種層次設(shè)計(jì)方法[J].現(xiàn)代電子技術(shù),2005(16):29-30,36.
[4] ACoreOS機(jī)載嵌入式實(shí)時(shí)操作系統(tǒng)程序員手冊(cè)[Z].
(本文來(lái)源于《電子產(chǎn)品世界》雜志2021年3月期)
評(píng)論