宋征宇
北京航天自動(dòng)控制研究所,北京100854
嵌入式操作系統(tǒng)是否適合運(yùn)載火箭飛行控制的應(yīng)用,一直存在不同意見(jiàn)。一種觀點(diǎn)認(rèn)為,現(xiàn)有的“中斷+循環(huán)”的運(yùn)行方式能夠滿足任務(wù)需求,而采用操作系統(tǒng)會(huì)增加軟件的復(fù)雜性,軟件應(yīng)越簡(jiǎn)單越好。而隨著技術(shù)發(fā)展,飛行軟件發(fā)揮的作用在增加,因?yàn)槟芎?jiǎn)化硬件設(shè)計(jì),并增加系統(tǒng)的靈活性,因此在傳統(tǒng)控制功能外增加了諸如故障診斷與重構(gòu)、總線通訊、數(shù)據(jù)管理等功能,同時(shí)數(shù)字化導(dǎo)致智能設(shè)備增多,多任務(wù)的特點(diǎn)愈發(fā)明顯,操作系統(tǒng)的研究開(kāi)始受到重視。
操作系統(tǒng)在國(guó)外航天器中已經(jīng)得到了應(yīng)用,如美國(guó)[1-3]火星探測(cè)、彗星撞擊以及運(yùn)載火箭等均有采用,類(lèi)型包括了VxWorks,ThreadX 以及早期的RTEMS 等。國(guó)內(nèi)航天系統(tǒng)也開(kāi)展了操作系統(tǒng)的研究[4],但還未形成廣泛的應(yīng)用,尤其在運(yùn)載火箭領(lǐng)域。在航空系統(tǒng),相關(guān)研究所與美國(guó)Wind River 公司在上海聯(lián)合建立了“嵌入式實(shí)時(shí)操作系統(tǒng)應(yīng)用開(kāi)發(fā)實(shí)驗(yàn)室”,用于推廣操作系統(tǒng)的應(yīng)用[5]。本文將結(jié)合我國(guó)運(yùn)載火箭的實(shí)際情況,對(duì)是否需要操作系統(tǒng)、如何使用操作系統(tǒng)等問(wèn)題進(jìn)行探討。
早期的飛行控制軟件,主要從事制導(dǎo)計(jì)算,屬“計(jì)算型”的軟件。隨著數(shù)字控制方案的普及,機(jī)電式程序配電器等設(shè)備逐漸被電子式時(shí)序控制器替代,飛控軟件增加了分離、調(diào)姿等控制功能,軟件發(fā)展為“計(jì)算+控制”型,但控制功能相對(duì)簡(jiǎn)單,主要是固定時(shí)間間隔的指令控制,上述情況下由于功能以及速度等的要求,均未采用操作系統(tǒng)。隨著載人航天工程的發(fā)展,各種冗余設(shè)計(jì)技術(shù)廣泛采用,軟件在故障檢測(cè)與管理中發(fā)揮了重要作用,這部分代碼量開(kāi)始增加。回顧過(guò)去展望未來(lái),軟件的發(fā)展面臨著以下情況:
1)硬件接口種類(lèi)增多,且有智能化的趨勢(shì)
接口智能化,意味著主處理器與接口電路之間不再適用單條I/O 指令的控制,存在著通訊、應(yīng)答以及時(shí)序要求,響應(yīng)時(shí)間也不再是確定不變的,取決于智能接口當(dāng)時(shí)的狀態(tài)。
2)有優(yōu)先級(jí)要求的中斷和任務(wù)增多
各個(gè)智能設(shè)備按自身的節(jié)拍來(lái)工作及通訊,整個(gè)系統(tǒng)本質(zhì)上是異步的。為了保證對(duì)各設(shè)備控制的實(shí)時(shí)性,中斷會(huì)逐漸增多。同時(shí),信號(hào)的重要程度有優(yōu)先級(jí)之分,原有多數(shù)任務(wù)順序執(zhí)行的基礎(chǔ)已不再存在。
3)軟件配置項(xiàng)之間的交互增多
數(shù)字化帶來(lái)軟件配置項(xiàng)大增,要保證軟件間信息交互的完整性、同步性和實(shí)時(shí)性,避免資源的沖突和死鎖等。
4)故障診斷的工作量增多
軟件在冗余系統(tǒng)中發(fā)揮重要的故障診斷工作,但增加了軟件的復(fù)雜性,降低了軟件固有可靠性。
上述4個(gè)方面均導(dǎo)致軟件復(fù)雜度和代碼量增加,并又帶來(lái)了以下2個(gè)方面的特點(diǎn):
1)傳統(tǒng)飛行控制代碼量所占比例70%以下
I/O 管理、冗余管理、總線通訊等非傳統(tǒng)的飛行控制代碼量達(dá)到或突破總量的30%。
2)傳統(tǒng)飛行控制代碼的測(cè)試用例數(shù)量所占比例50%以下
以某軟件為例,采用“中斷+循環(huán)”模式,只統(tǒng)計(jì)圈復(fù)雜度超過(guò)10 和扇出數(shù)大于7 的模塊,因?yàn)檫@些模塊基本決定了測(cè)試用例的分布,如表1 所示。
表1 某軟件靜態(tài)分析結(jié)果及測(cè)試用例統(tǒng)計(jì)
表1 中前3 項(xiàng)在圈復(fù)雜度所占總數(shù)達(dá)到了38.17%,扇出數(shù)所占總數(shù)達(dá)到了83%,這意味著將有大量的測(cè)試用例花費(fèi)在這些功能上;而另一方面,計(jì)算模塊路徑單一,例如,18個(gè)通用制導(dǎo)計(jì)算模塊以及22個(gè)姿控計(jì)算模塊中的20個(gè),圈復(fù)雜度均低于10。從實(shí)際測(cè)試用例數(shù)量上看,與控制功能密切相關(guān)的測(cè)試用例只占53.22%。
以上分析雖是一個(gè)具體的案例,但具有代表性。進(jìn)一步考慮未來(lái)應(yīng)用,諸如上面級(jí)長(zhǎng)時(shí)間在軌飛行等,故障恢復(fù)、并行處理等需求會(huì)逐漸增加,非傳統(tǒng)控制功能的代碼量和測(cè)試用例所占比例還會(huì)增多。鑒于此,本文將上述6個(gè)特征作為采用操作系統(tǒng)的基本前提條件。
隨著硬件產(chǎn)品性能的提高,操作系統(tǒng)的大小及對(duì)運(yùn)算速度的影響等因素不再顯得那么突出,評(píng)價(jià)其優(yōu)劣的主要出發(fā)點(diǎn)還是對(duì)軟件可靠性的影響。從這方面其優(yōu)點(diǎn)有以下幾方面:
1)能夠顯著降低軟件質(zhì)量問(wèn)題
根據(jù)控制系統(tǒng)2006 ~2011年的不完全統(tǒng)計(jì),軟件典型質(zhì)量問(wèn)題分布如下表所示。硬件初始化、I/O的管理、中斷管理、共享資源的管理等均是較為適合操作系統(tǒng)完成的工作,如果操作系統(tǒng)是成熟的,將會(huì)顯著降低上表中“初始化”、“中斷使用錯(cuò)誤”、“接口不匹配”、“并發(fā)與競(jìng)爭(zhēng)類(lèi)錯(cuò)誤”等問(wèn)題的發(fā)生,這類(lèi)問(wèn)題占目前總質(zhì)量問(wèn)題的49.1%。
表2 軟件典型質(zhì)量問(wèn)題分類(lèi)及分布
上述問(wèn)題的主要起因,是由于不同項(xiàng)目組重復(fù)開(kāi)發(fā),設(shè)計(jì)經(jīng)驗(yàn)與教訓(xùn)沒(méi)有得到充分利用,既浪費(fèi)資源,也帶來(lái)眾多質(zhì)量風(fēng)險(xiǎn)以及測(cè)試驗(yàn)證工作。如果用操作系統(tǒng)來(lái)統(tǒng)籌上述功能,將能減少這些錯(cuò)誤的發(fā)生,同時(shí)更多型號(hào)的應(yīng)用能夠進(jìn)一步提高操作系統(tǒng)的成熟度。
2)提高軟件的重用度
操作系統(tǒng)自身的功能不用重新開(kāi)發(fā)(當(dāng)然可能會(huì)隨著硬件的變化進(jìn)行增補(bǔ)),這體現(xiàn)了重用的一方面;另一方面,操作系統(tǒng)還能使應(yīng)用軟件實(shí)現(xiàn)對(duì)底層硬件的不相關(guān)性,促使飛行軟件設(shè)計(jì)人員將各種算法的編程與其他功能很好地剝離出來(lái),降低不同功能之間的耦合性,有利于重用。此外這也可以減少“平臺(tái)相關(guān)錯(cuò)誤”,與前述統(tǒng)計(jì)合計(jì),操作系統(tǒng)可以解決的問(wèn)題已超過(guò)了問(wèn)題總數(shù)的50%。
3)分散技術(shù)風(fēng)險(xiǎn)
傳統(tǒng)飛行軟件的功能和風(fēng)險(xiǎn)將由應(yīng)用軟件和操作系統(tǒng)共同承擔(dān);隨著操作系統(tǒng)設(shè)計(jì)的專(zhuān)業(yè)化、廣泛的推廣應(yīng)用以及成熟度的不斷提升,這部分的風(fēng)險(xiǎn)也在降低,從而分散和降低了技術(shù)風(fēng)險(xiǎn)。
上述分析的出發(fā)點(diǎn)均是在操作系統(tǒng)已較為成熟的基礎(chǔ)上,否則其自身仍然存在表2 所體現(xiàn)的各類(lèi)問(wèn)題,例如,操作系統(tǒng)底層硬件驅(qū)動(dòng)的初始化問(wèn)題、接口不匹配問(wèn)題,中斷處理考慮不周等。此外,由于我國(guó)在自主設(shè)計(jì)操作系統(tǒng)方面的技術(shù)積累仍較薄弱,其劣勢(shì)還體現(xiàn)在以下方面:
1)操作系統(tǒng)的成熟度還不高,影響了其自身的質(zhì)量和推廣;
2)操作系統(tǒng)與應(yīng)用軟件的界面不夠清晰,增加了編程的復(fù)雜度;
3)操作系統(tǒng)還不能以通用化的產(chǎn)品來(lái)滿足各類(lèi)應(yīng)用,這增加了定制的工作量及技術(shù)風(fēng)險(xiǎn)。
在介紹操作系統(tǒng)功能前,先對(duì)其應(yīng)用對(duì)象進(jìn)行簡(jiǎn)要介紹。圖1(a)是較為典型的三冗余箭載計(jì)算機(jī)的功能框圖,飛行軟件通過(guò)1553B 總線完成慣組信息的錄取與關(guān)機(jī)指令、姿態(tài)控制指令的發(fā)送。軟件的運(yùn)行過(guò)程如圖1(b)所示,主功能為20ms 周期任務(wù),錄取慣組信息、進(jìn)行同步處理、開(kāi)始控制運(yùn)算,并將控制指令通過(guò)總線發(fā)送到執(zhí)行設(shè)備。當(dāng)接近有效載荷分離時(shí)刻,為提高關(guān)機(jī)控制的精度,啟動(dòng)1ms中斷,在1ms 任務(wù)中實(shí)現(xiàn)關(guān)機(jī)控制。
綜合國(guó)內(nèi)關(guān)于航天器操作系統(tǒng)的研究[6-8],可以梳理出操作系統(tǒng)最基本的功能,分以下幾方面:
1)初始化功能,含初始化后的自檢功能
初始化工作確保各接口電路處于安全的初態(tài),自檢結(jié)果要傳輸?shù)綔y(cè)發(fā)控系統(tǒng)的監(jiān)控終端。
2)I/O 管理,包括內(nèi)部與外部各種接口
向飛行軟件提供統(tǒng)一的、與設(shè)備無(wú)關(guān)的用戶接口,實(shí)現(xiàn)對(duì)底層硬件設(shè)備的安裝、創(chuàng)建設(shè)備驅(qū)動(dòng),以及設(shè)備使用過(guò)程中的打開(kāi)、關(guān)閉、讀、寫(xiě)、控制(擴(kuò)展)等操作。以本項(xiàng)目為例,包括1553B,ICU,MSU(RS-485,RS -422),BMU,DRU 等設(shè)備以及擴(kuò)展的三機(jī)同步信息交換等。
圖1 飛行軟件運(yùn)行環(huán)境及流程示例
3)故障與設(shè)備狀態(tài)管理
對(duì)箭上各類(lèi)設(shè)備的狀態(tài)進(jìn)行管理,向飛控軟件提供故障檢測(cè)、設(shè)備狀態(tài)維護(hù)、查詢等功能,涵蓋CPU,I/O 設(shè)備以及系統(tǒng)自定義功能3個(gè)層面。對(duì)絕大部分智能通訊接口而言,是否通訊正??赏ㄟ^(guò)其控制字或狀態(tài)字來(lái)判別,這類(lèi)故障的診斷可以不用應(yīng)用軟件參與(當(dāng)然,對(duì)于慣組數(shù)據(jù)的合理性判斷,仍只能由應(yīng)用軟件來(lái)完成)。上述功能將在下面作重點(diǎn)介紹。
4)中斷管理
5)任務(wù)管理
6)其他必需的輔助功能,指一般操作系統(tǒng)均必備的基本功能,包括上述5 項(xiàng)功能中可能用到的支撐技術(shù),如任務(wù)和二值信號(hào)量管理功能、計(jì)時(shí)管理、內(nèi)存管理功能等。
隨著對(duì)可靠性要求的提高,冗余設(shè)計(jì)的復(fù)雜性也在增大,故障檢測(cè)、隔離與重組(FDIR)的代碼量不斷增大。這部分工作可以由操作系統(tǒng)和應(yīng)用軟件共同完成,其中,利用操作系統(tǒng)完成故障檢測(cè)與隔離,由應(yīng)用軟件實(shí)現(xiàn)故障后的重組,既統(tǒng)一且明確了操作系統(tǒng)與應(yīng)用軟件的界面,也可以緩解飛行軟件的復(fù)雜度。故障的檢測(cè)往往采用硬件設(shè)備提供的各種狀態(tài)檢查功能,或冗余部件的相互對(duì)比,從而實(shí)現(xiàn)故障定位(隔離),這部分功能可以集成在底層硬件驅(qū)動(dòng)函數(shù)中。而故障的重組因故障類(lèi)型而異,在很大程度上屬于系統(tǒng)設(shè)計(jì)范疇,這部分功能設(shè)計(jì)在應(yīng)用軟件的接口處理函數(shù)中。
3.3.1 通用設(shè)備狀態(tài)管理
通用設(shè)備狀態(tài)管理模塊為飛控軟件提供統(tǒng)一的設(shè)備管理架構(gòu),如圖2 所示,其工作包括:
1)注冊(cè)設(shè)備狀態(tài)觀測(cè)字;
2)定義設(shè)備狀態(tài)觀測(cè)字的閾值;
3)定義閾值超限時(shí)的處理函數(shù)接口,操作系統(tǒng)可以提供缺省的處理函數(shù),用戶也可以重新定義,尤其涉及系統(tǒng)層面的故障重組時(shí);
4)定義處理函數(shù)的觸發(fā)模式,如果是輪詢觸發(fā)模式,則作為一個(gè)低優(yōu)先級(jí)的任務(wù),周期性地輪詢?cè)撚^測(cè)字,并在滿足條件時(shí)觸發(fā)處理函數(shù);如果是立即觸發(fā)模式,且在該觀測(cè)字達(dá)到設(shè)定的閾值時(shí)立即調(diào)度處理函數(shù)。
采用上述機(jī)制,基本滿足了各種故障(異常)的處理要求。
圖2 通用設(shè)備管理原理圖
3.3.2 CPU 異常檢測(cè)與處理
CPU 異常是嚴(yán)重的錯(cuò)誤,由于火箭飛行時(shí)間短、實(shí)時(shí)性強(qiáng),且沒(méi)有遙控功能,一般在CPU 異常后難以采取諸如復(fù)位等故障恢復(fù)措施,只能靠硬件的冗余來(lái)達(dá)到容錯(cuò)的目的,因此,飛行中CPU 的異常是要盡量防止的,其異常檢測(cè)與處理更多的是為后續(xù)避免此類(lèi)問(wèn)題和查找原因提供足夠的信息,其處理流程一般如下:
1)首先使系統(tǒng)進(jìn)入安全模式,例如測(cè)試模式,避免異常的擴(kuò)散或復(fù)位;
2)在預(yù)定義的地址中記錄異常發(fā)生時(shí)的指令寄存器、故障狀態(tài)寄存器、故障地址寄存器、復(fù)位和錯(cuò)誤狀態(tài)寄存器、測(cè)試控制寄存器、系統(tǒng)軟件的執(zhí)行路徑、健康狀況等信息;
3)為不立即復(fù)位的異常進(jìn)行計(jì)數(shù),提供異常狀態(tài)字,并提供查詢函數(shù)接口;
4)通過(guò)郵箱向外發(fā)出第2)和3)項(xiàng)的信息;
5)如果用戶注冊(cè)異常處理函數(shù)則調(diào)用執(zhí)行,否則退出。
CPU 的異常因處理器而異,一般包括復(fù)位、取指出錯(cuò)、非法指令、不使能FPU 時(shí)使用浮點(diǎn)指令、協(xié)處理器未使能異常、內(nèi)存地址不對(duì)齊訪問(wèn)、FPU 異常、可校正的EDAC 錯(cuò)誤異常、數(shù)據(jù)訪問(wèn)異常等。不管用戶是否新注冊(cè)處理函數(shù),上述步驟1)~4)均要執(zhí)行。
3.3.3 I/O 的異常檢測(cè)與處理
按照3.3.1 節(jié)的介紹完成注冊(cè)和處理函數(shù)的設(shè)計(jì),在I/O 的操作中更新?tīng)顟B(tài)觀測(cè)字,主要依據(jù)各I/O 驅(qū)動(dòng)的狀態(tài)字或控制字來(lái)進(jìn)行診斷;當(dāng)設(shè)備狀態(tài)管理模塊判斷觀測(cè)字超閾值時(shí),激活處理函數(shù)。處理函數(shù)可以由操作系統(tǒng)提供缺省處理方式,也可以用戶定義,這也主要通過(guò)重新設(shè)置I/O 驅(qū)動(dòng)的控制字或狀態(tài)字來(lái)實(shí)現(xiàn),由此可見(jiàn),故障與設(shè)備管理與I/O 管理要配合使用。
例如,當(dāng)1553B 故障時(shí),可以在A 通道重發(fā);重發(fā)若不成功,則切換到B 通道再重發(fā)。如果重發(fā)次數(shù)達(dá)到閾值,通過(guò)處理接口函數(shù)直接設(shè)置在B 通道發(fā)送;如果B 通道再次發(fā)生故障且達(dá)到閾值,則可以通過(guò)處理函數(shù)設(shè)置錯(cuò)誤標(biāo)志并直接返回。但后續(xù)也可以根據(jù)需要重新激活相關(guān)設(shè)備。
3.3.4 系統(tǒng)級(jí)的異常檢測(cè)與管理
在所有故障中,CPU 的故障是處理器事先定義的,其故障處理以中斷形式觸發(fā);I/O 的故障可通過(guò)接口電路的各種寄存器或狀態(tài)字來(lái)查詢,其故障處理通過(guò)I/O 管理來(lái)實(shí)現(xiàn)。上述2 類(lèi)異常處理操作系統(tǒng)可以不需要應(yīng)用軟件參與獨(dú)自完成。但還有一些異常無(wú)法直觀地通過(guò)硬件自身來(lái)診斷,屬于系統(tǒng)冗余管理的范疇,也可以結(jié)合操作系統(tǒng)來(lái)實(shí)現(xiàn),本文以時(shí)鐘故障檢測(cè)與處理來(lái)舉例說(shuō)明。
時(shí)鐘故障導(dǎo)致計(jì)時(shí)基準(zhǔn)產(chǎn)生很大偏差,導(dǎo)航計(jì)算以及時(shí)序控制均會(huì)出錯(cuò)。僅靠本機(jī)的計(jì)時(shí)器是無(wú)法判別故障的,但可以利用各種總線通訊信息中所帶的時(shí)標(biāo)信號(hào)進(jìn)行對(duì)比,例如,當(dāng)前后2 次總線通訊自帶時(shí)標(biāo)的時(shí)間差與此段間隔內(nèi)計(jì)時(shí)器的計(jì)數(shù)值不一致時(shí),說(shuō)明存在故障;用1553B,485,422 等多種總線消息中的時(shí)標(biāo)進(jìn)行多數(shù)表決可定位故障,并更新觀測(cè)字。而定位出時(shí)鐘故障后具體如何處理,可以由系統(tǒng)設(shè)計(jì)人員編寫(xiě)特定的處理函數(shù)并在設(shè)備狀態(tài)管理中注冊(cè)。
與“中斷+循環(huán)”不同,對(duì)操作系統(tǒng)使用方式不同,產(chǎn)生的應(yīng)用效果也不同[9-12]。本文首先針對(duì)3.1節(jié)介紹的應(yīng)用對(duì)象,提出了飛行控制軟件的基本架構(gòu),盡管只用到了操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度,但在解決不同優(yōu)先級(jí)任務(wù)的資源沖突方面已體現(xiàn)出了優(yōu)勢(shì),本文以示例進(jìn)行說(shuō)明。
操作系統(tǒng)在飛行控制軟件中的主要應(yīng)用,是將傳統(tǒng)的中斷服務(wù)程序轉(zhuǎn)化為多任務(wù)管理[13-15]。本文也給出了一種利用操作系統(tǒng)劃分多任務(wù)的飛行軟件功能框圖,如下圖表示。
圖3 基于嵌入式操作系統(tǒng)的飛行軟件功能示意圖
圖中深色方框內(nèi)的任務(wù)屬于應(yīng)用軟件的范疇,淺色方框表示的是外部中斷,其他功能均屬于操作系統(tǒng)的范疇。其中任務(wù)的優(yōu)先級(jí)可以有不同的設(shè)置,任務(wù)本身還可以根據(jù)需要進(jìn)一步細(xì)分。
通過(guò)中斷激發(fā)一個(gè)“任務(wù)”,該任務(wù)可以看作是傳統(tǒng)的中斷服務(wù)程序。將傳統(tǒng)中斷服務(wù)程序中的功能劃分為多個(gè)優(yōu)先級(jí)的任務(wù),例如“控制任務(wù)”優(yōu)于“遙測(cè)任務(wù)”,可以解決20ms 周期計(jì)算余量不足的問(wèn)題。即若在某一個(gè)周期20ms 遙測(cè)任務(wù)超時(shí),下一中斷產(chǎn)生后20ms 控制任務(wù)會(huì)搶占運(yùn)行,關(guān)鍵任務(wù)不會(huì)受到任何影響。20ms控制任務(wù)運(yùn)行結(jié)束,任務(wù)切換回20ms 遙測(cè)任務(wù)繼續(xù)執(zhí)行。
“任務(wù)”由“中斷”激發(fā),這些都在操作系統(tǒng)內(nèi)核的調(diào)度下完成。軟件對(duì)硬件接口的控制,均通過(guò)操作系統(tǒng)調(diào)用驅(qū)動(dòng)實(shí)現(xiàn)。操作系統(tǒng)在進(jìn)行具體I/O 操作時(shí),會(huì)同步完成對(duì)個(gè)接口功能的檢測(cè),如故障則將更新該設(shè)備的錯(cuò)誤計(jì)數(shù)器。當(dāng)達(dá)到閾值且該故障模式被設(shè)置為“立即觸發(fā)”時(shí),立即激發(fā)用戶在初始化時(shí)注冊(cè)的故障處理程序,這也將被作為一個(gè)“任務(wù)”來(lái)調(diào)度;用戶也可以將該故障模式設(shè)置為“輪詢”,則由操作系統(tǒng)的一個(gè)低優(yōu)先級(jí)任務(wù)輪詢到超過(guò)閾值時(shí)觸發(fā),或者由應(yīng)用軟件通過(guò)查詢故障計(jì)數(shù)器并自行決定如何處理。
操作系統(tǒng)的使用是較為復(fù)雜的設(shè)計(jì),不同的設(shè)計(jì)方案使得操作系統(tǒng)和應(yīng)用軟件發(fā)揮的功能不盡相同,限于篇幅,本文以共享資源的管理介紹如何發(fā)揮操作系統(tǒng)的作用,其他內(nèi)容不一一涉及。
4.2.1 因共享資源而帶來(lái)的不同步
在存在多個(gè)中斷的系統(tǒng)中,每個(gè)中斷可能對(duì)同一硬件進(jìn)行操作,存在共享資源的管理問(wèn)題。當(dāng)?shù)蛢?yōu)先級(jí)的中斷占用資源時(shí),即使高優(yōu)先級(jí)的中斷被觸發(fā),也無(wú)法強(qiáng)制接管該資源,并會(huì)影響到多機(jī)冗余系統(tǒng)的同步性。以圖4 為例,1ms 中斷優(yōu)先級(jí)高于20ms 中斷。在20ms 中斷中需要通過(guò)1553B 總線采樣慣組數(shù)據(jù),并進(jìn)行三機(jī)的同步處理;而在1ms 中斷中,當(dāng)需要關(guān)機(jī)時(shí),通過(guò)1553B 總線將關(guān)機(jī)信號(hào)發(fā)送到綜合控制器實(shí)時(shí)關(guān)機(jī)控制。在這過(guò)程中,2個(gè)中斷程序均會(huì)對(duì)1553B 總線進(jìn)行控制。
圖4 共享資源管理示意圖
三機(jī)按各自時(shí)鐘工作,僅20ms 中斷是三機(jī)同步產(chǎn)生,但此時(shí)每個(gè)CPU 當(dāng)前正在執(zhí)行的指令(PC值)存在若干個(gè)指令周期誤差,加上三機(jī)的1ms 中斷源未進(jìn)行同步處理,因此1ms 中斷發(fā)生的時(shí)間點(diǎn)相對(duì)于當(dāng)前指令之間會(huì)存在微秒級(jí)的偏差。
在圖4(a)中,假設(shè)CPU3、CPU2 運(yùn)行速度較快,完成了20ms 任務(wù)中的1553B 總線錄取工作,此時(shí)1ms 中斷到來(lái),進(jìn)入1ms 中斷處理,并通過(guò)1553B 總線發(fā)送關(guān)機(jī)指令;1ms 任務(wù)結(jié)束后,返回20ms 中斷繼續(xù)處理,并發(fā)出同步控制指令。而對(duì)CPU1 而言,當(dāng)1ms 到來(lái)時(shí),20ms 任務(wù)中的1553B 操作還未結(jié)束,盡管1ms 優(yōu)先級(jí)高,但總線資源被20ms 任務(wù)占用,于是切換至20ms 任務(wù),待1553B 總線資源釋放后,再重新切換回1ms 任務(wù),完成總線控制;待1ms任務(wù)結(jié)束后,再返回20ms 任務(wù),并執(zhí)行后續(xù)的同步控制。從圖中可以看出,由于CPU1 多增加了兩次任務(wù)的切換,導(dǎo)致CPU1 發(fā)出同步控制時(shí)已嚴(yán)重滯后于CPU2 和CPU3,在某些場(chǎng)合,這種不同步是不允許的。
4.2.2 多任務(wù)管理
前文沒(méi)有區(qū)分中斷與任務(wù)的概念,中斷只負(fù)責(zé)計(jì)時(shí)并喚醒任務(wù),而任務(wù)實(shí)際上是傳統(tǒng)的中斷服務(wù)程序,將中斷與中斷服務(wù)程序(即任務(wù))區(qū)分開(kāi)是避免中斷長(zhǎng)期占用資源,增強(qiáng)響應(yīng)的實(shí)時(shí)性。因此,將圖3 中“任務(wù)”繼續(xù)細(xì)分,例如將20ms 控制任務(wù)分解為總線錄取與同步任務(wù)TSK_20_BUS_SYN 以及導(dǎo)航、制導(dǎo)與控制任務(wù)TSK_20_CTL。1ms 中斷ISR_1喚醒1ms 任務(wù)TSK_1_BUS,20ms 中斷ISR_20喚醒TSK_20_BUS_SYN 和TSK_20_CTL,優(yōu)先級(jí)從高到低依次為:
ISR_1;
ISR_20;
TSK_20_BUS_SYN;
TSK_1_BUS;
TSK_20_CTL。
以圖4(b)為例,盡管1ms 中斷在TSK_20_BUS_SYN 的不同時(shí)刻到來(lái),但因?yàn)?ms 中斷喚醒的任務(wù)TSK_1_BUS 優(yōu)先級(jí)低于TSK_20_BUS_SYN,該任務(wù)不會(huì)被打斷,進(jìn)入同步區(qū)間時(shí)基本沒(méi)有偏差;在完成TSK_20_BUS_SYN 任務(wù)后,切換至TSK_1_BUS任務(wù),此時(shí)總線資源已經(jīng)被釋放,不存在沖突;TSK_1_BUS 任務(wù)完成后,進(jìn)入TSK_20_CTL 任務(wù)。圖3(a)中CPU1 多增加的2 次任務(wù)切換得以避免,三機(jī)基本上仍能保持同步。
上述任務(wù)分級(jí)的另一個(gè)好處是,總線被占用的時(shí)間最長(zhǎng)為T(mén)SK_20_BUS_SYN 任務(wù)的時(shí)間,遠(yuǎn)低于傳統(tǒng)編程中20ms 中斷服務(wù)程序的時(shí)間,這提高了關(guān)機(jī)的時(shí)間精度。
回答是否需要操作系統(tǒng),應(yīng)用發(fā)展的眼光來(lái)看,例如,如果軟件還停留在簡(jiǎn)單計(jì)算型的應(yīng)用,確實(shí)不需要操作系統(tǒng);從簡(jiǎn)單計(jì)算型發(fā)展到“計(jì)算+控制”型,軟件的功能增加了,采用中斷也能處理。而未來(lái)的應(yīng)用,已顯現(xiàn)出計(jì)算密集型、控制多樣性和信息集成化的特點(diǎn),此時(shí)就必須有專(zhuān)業(yè)的操作系統(tǒng)支持。計(jì)算密集型會(huì)帶來(lái)并行計(jì)算的要求,控制多樣性使得多任務(wù)的需求愈發(fā)迫切,而信息集成化則賦予了控制系統(tǒng)更多的職責(zé),可能用“信息系統(tǒng)”來(lái)描述原有概念上的“控制系統(tǒng)”更為適合。在這種背景下,應(yīng)適時(shí)地開(kāi)展操作系統(tǒng)的應(yīng)用研究,基礎(chǔ)性的工作要提前打牢。
本文提出了可以考慮采用操作系統(tǒng)的6個(gè)條件,以某飛行控制為對(duì)象,對(duì)操作系統(tǒng)在故障與設(shè)備狀態(tài)管理、共享資源管理中的作用進(jìn)行了較為深入的分析??梢钥闯觯词共捎猛瑯拥牟僮飨到y(tǒng),不同的使用方式也會(huì)產(chǎn)生不同的使用效果,那些較為合理的設(shè)計(jì),能夠簡(jiǎn)化應(yīng)用軟件的復(fù)雜性,使得應(yīng)用軟件更能專(zhuān)注于飛控的核心功能。而隨著操作系統(tǒng)成熟度的不斷提高,整個(gè)軟件系統(tǒng)的可靠性也隨著增加,操作系統(tǒng)的作用將能得到真正的體現(xiàn)。
[1]EDN China. 風(fēng)河為NASA 運(yùn)載火箭提供操作系統(tǒng)[EB/OL]. http://www. ednchina. com/ART_76375_29_20026_NT_363ff7f9.HTM,2009,12,23.
[2]EDN China. 美國(guó)撞擊彗星計(jì)劃揭密ThreadX 實(shí)時(shí)操作系統(tǒng)擔(dān)當(dāng)重任[EB/OL]. http://www.ednchina.com/ART_8985_29_20023_NT_b8f86eea.HTM,2005,8,9.
[3]EDN Chian. NASA 好奇號(hào)火星車(chē)安度”恐怖7 分鐘”,Wind River VxWorks 再建奇功[EB/OL].http://www.ednchina.com /ART_8800507449_29_20026_NT_91cc6927.HTM,2012,8,7.
[4]程勝,蔡銘.航天高可靠嵌入式實(shí)時(shí)操作系統(tǒng)原理與技術(shù)[M].中國(guó)宇航出版社,2012,8.
[5]EDN China (EDN China 電子技術(shù)設(shè)計(jì)網(wǎng)站).風(fēng)河與中國(guó)航空無(wú)線電電子研究所成立聯(lián)合實(shí)驗(yàn)室[EB/OL]. http://www. ednchina.com/ART_53867_20_0_NT_facc8737.HTM,2008,12,30.
[6]喬磊,彭飛,趙瑋,孫越,楊樺,劉波.航天器嵌入式操作系統(tǒng)研究與設(shè)計(jì)[J].空間控制技術(shù)與應(yīng)用,2011,37(5):31-35,41.(QIAO Lei,PENG Fei,ZHAO Wei,SUN Yue,YANG Hua,LIU Bo. Aerospace Control and Application,Embeded Operating System Research and Design for Sapcecraft[J]. Aerospace Control and Application,2011,37(5):31-35,41.)
[7]楊牧,王昊,張鈺,鄭偉,鄭陽(yáng)明,金仲和.抗輻射加固的皮衛(wèi)星用實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)[J]. 浙江大學(xué)學(xué)報(bào)(工 學(xué) 版),2011,45(6),1021-1026. (YANG Nu,WANG Hao,ZHANG Yu,et al. Design of Radiationhardened Real-time Operating System for Picosatellites[J].Journal of ZHEJIANG University(Engineering Science),2011,45(6),1021-1026.)
[8]李林,王向暉,陶利民,張猛.航天器用實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2012,20(4):1026-1028,1032. (LI Lin,WANG Xianghui,TAO Li,ZHANG Meng. Type of Reali-Time Systems Designing Which Applied in Aeroships[J].Computer Measurement& Control,2012,20(4):1026-1028,1032.)
[9]劉錫祥,徐曉蘇,馮丹瓊,劉建娟. VxWorks 環(huán)境下捷聯(lián)慣導(dǎo)系統(tǒng)的軟件設(shè)計(jì)[J],中國(guó)慣性技術(shù)學(xué)報(bào),2006,14(2),1-4.(Design of Software Structure of SINS on VxWorks[J].Journal of Chinese Inertial Technology,2006,14(2),1-4.)
[10]李化云.嵌入式實(shí)時(shí)操作系統(tǒng)在航天器軟件中的應(yīng)用研究[J].微計(jì)算機(jī)信息,2012,(8),73-74.
[11]冉漢政.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS 在控制工程中的應(yīng)用[J].現(xiàn)代電子技術(shù),2003,(13):84-86. (Application of μC/OS in Controling System[J].Modern Electronics Technique,2003,(13):84-86.)
[12]胡劍華.基于ARM-LINUX 實(shí)時(shí)嵌入式飛行控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].南京航空航天大學(xué),2010.
[13]雷杰,文順安.嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)在強(qiáng)實(shí)時(shí)系統(tǒng)中的應(yīng)用[J]. 戰(zhàn)術(shù)導(dǎo)彈控制技術(shù),2002,(4),37-40.
[14]劉宗玉,王瑋,陳明,田洪波,綜合導(dǎo)航系統(tǒng)中的實(shí)時(shí)多任務(wù)軟件設(shè)計(jì)[J]. 計(jì)算機(jī)工程與應(yīng)用,2004,40(27),185-187. (LIU Zongyu,WANG Wei,CHEN Ming,TIAN Hongbo. Design of Real-time Multitask Software of Integrated Navigation System[J]. Computer Engineering and Applications,2004,40(27),185-187.)
[15]曹寧.組合導(dǎo)航系統(tǒng)中實(shí)時(shí)多任務(wù)的軟件設(shè)計(jì)[J].導(dǎo)航,2007,(2),35-40.