詹盼盼,郭 堅,何熊文,張紅軍
(北京空間飛行器總體設計部,北京100094)
一種面向航天的可靠實時操作系統(tǒng)設計*
詹盼盼,郭 堅,何熊文,張紅軍
(北京空間飛行器總體設計部,北京100094)
航天任務對實時操作系統(tǒng)提出了特定需求,設計一種面向航天的可靠實時操作系統(tǒng)(extremely valuable time-critical reliable operating system,EVTROS),功能包括任務管理、中斷管理、內存管理、時鐘管理、任務間通信管理和異常管理.介紹了基于最小內核的軟件體系結構和實時調度設計,可靠性特點包括兩級異常處理與故障日志記錄、內存檢查和冗余內存塊自動替換、空間輻照下的單粒子翻轉處理三個方面.實測數(shù)據(jù)表明,軟件具有較優(yōu)的性能,當系統(tǒng)發(fā)生異常時能夠可靠處理.該操作系統(tǒng)成功應用于多個型號的星載計算機中,可靠性得到了有效驗證.
星載計算機;操作系統(tǒng);實時調度;可靠;異常處理
隨著空間技術的不斷發(fā)展和應用的深入,航天軟件系統(tǒng)的任務規(guī)模和復雜程度不斷上升.原有依靠應用軟件自身直接進行資源管理及調度的方式,難以解決航天軟件系統(tǒng)中大量存在的資源沖突和任務阻塞等問題,因此需要利用實時操作系統(tǒng)進行統(tǒng)一管理,保證系統(tǒng)的穩(wěn)定性、可靠性和高質量,并提高航天軟件的開發(fā)效率[1].
實時操作系統(tǒng)[2](real time operating system,RTOS)是在確定的時間內對外部事件響應并執(zhí)行相應功能的一類操作系統(tǒng).國外已經(jīng)開展多年的RTOS研究與應用,出現(xiàn)了一些商用RTOS產(chǎn)品,如VX-WORKS,RTEMS和 QNX[3]等.風河公司的 VXWORKS操作系統(tǒng)是成熟的商用實時操作系統(tǒng),自1997年在美國國家航空航天局(NASA)研制的火星探路者號探測器上成功搭載,進而在后續(xù)的火星探測計劃中得以應用,包括機遇號和勇氣號,并且獲得成功.RTEMS是美國軍方為實時導彈系統(tǒng)而研發(fā),具有較好的實時性和穩(wěn)定性,已在美國和歐洲航空航天領域得到應用.QNX目前應用在無人機等軍事領域.
雖然上述操作系統(tǒng)已經(jīng)應用在一些航天領域任務中,但是基于國內航天領域的特點,這些國外實時操作系統(tǒng)不適合在中國航天器中應用.主要有以下問題:
(1)商用實時操作系統(tǒng)的源碼不公開,中國航天軟件要求源代碼必須經(jīng)過充分的分析和評測.
(2)可靠性和安全性得不到保證,由于涉及到航天領域,這些國外的軟件產(chǎn)品不能自主可控,也不確定是否存在安全漏洞.并且國外實時操作系統(tǒng)軟件并不單獨針對航天應用,因此對空間的容錯能力和可靠性方面考慮不足.
(3)星載計算機的存儲空間有限,而這些實時操作系統(tǒng)包括了大量與航天應用無關的組件,無法同時滿足功能、性能和空間要求.
國內也對航天用實時操作系統(tǒng)有一些研究,如實踐五號、探索一號等使用了pSOS實時操作系統(tǒng).國內航天領域的實時操作系統(tǒng)軟件主要有以下特點:只實現(xiàn)了滿足型號應用的最基本功能,無法滿足星載計算機的通用任務要求;軟件架構不夠靈活,針對不同的硬件進行定制,導致難以移植到不同的中央處理器(CPU)中;目前國內實時操作系統(tǒng)尚沒有對可靠性和容錯處理的公開設計說明.北京控制工程研究所研制的SpaceOS[4]是目前國內應用較為廣泛的嵌入式操作系統(tǒng),但是其源代碼不開放,無法獲取其內部實現(xiàn)細節(jié).
為改變這一現(xiàn)狀進行自主操作系統(tǒng)研發(fā),考慮整星任務對實時操作系統(tǒng)的可靠性要求,本文在分析了面向航天的實時操作系統(tǒng)軟件需求的基礎上,提出了一種可靠RTOS設計原則,從實時操作系統(tǒng)的體系結構和可靠性設計措施方面,設計了一種面向航天的可靠實時操作系統(tǒng)EVTROS.能夠實現(xiàn)多個領域星載計算機的通用需求,可移植到中國航天器用的主流CPU中(支持486、TSC695F[5]和國產(chǎn)BM3803[6]處理器),為整星任務提供可靠支持.該操作系統(tǒng)不僅成功應用在多個星載計算機中,而且能夠推廣到其他星載計算機中使用.
面向航天的RTOS運行在各種星載計算機中,空間環(huán)境由于單粒子效應和總劑量效應的存在,使得其與地面系統(tǒng)相比要復雜惡劣的多,并且航天任務和硬件體系結構不斷復雜,軟件代碼規(guī)模不斷增加,對RTOS構成挑戰(zhàn).針對星載計算機硬件平臺多種多樣、易受空間環(huán)境影響、在軌飛行出現(xiàn)故障后難以干預的特點,面向航天的實時操作系統(tǒng)需要滿足以下需求:
(1)滿足通用性的要求.為滿足不同領域星載計算機的任務要求,面向航天的操作系統(tǒng)需要提供任務管理、中斷管理、內存管理、時鐘管理和任務間通信管理的功能.
(2)具有較高的實時性能,能夠支持外部事件快速響應和任務實時調度.
(3)具有獨立于硬件平臺的靈活的體系結構,能夠移植到不同的CPU中.
(4)可靠性要求.地面對在軌運行的衛(wèi)星可干預手段較少,這就要求RTOS為航天應用提供高可靠的運行環(huán)境,不僅能夠在單粒子效應廣泛存在的空間輻照環(huán)境中穩(wěn)定運行,而且具有一定的異常處理能力,能夠在出錯后識別異常并從異常中恢復,保證星載計算機長壽命運行.
實時性和可靠性是航天用RTOS的重要特性,兩者相互影響又相互依賴.本文在面向航天的RTOS設計中將實時性和可靠性兩者相結合,采取以下設計思路:
(1)分層次低耦合體系結構設計:現(xiàn)有的國外RTOS往往基于宏內核[7-8]的體系結構,將任務管理、中斷管理、內存管理、時鐘管理和任務間通信管理的功能模塊聚合在內核中,其中一個模塊出現(xiàn)錯誤往往引起其他模塊的錯誤,內核的功能模塊耦合度過高導致可靠性降低.而國內航天用RTOS大多是單體系統(tǒng),較少區(qū)分用戶層和系統(tǒng)層的概念,系統(tǒng)耦合度較高.本文采用分層次的體系結構設計,將RTOS分為用戶層、功能層和板級支持層,功能層包含最小內核和內核擴展模塊,將內核功能獨立出來成為一個最小內核,而將其他功能作為內核功能的擴展模塊實現(xiàn),降低系統(tǒng)內核和其他模塊之間的耦合度,以實現(xiàn)系統(tǒng)實時性和可靠性的統(tǒng)一.
(2)可靠性策略和措施相分離:可靠性設計分兩級實現(xiàn),在功能層僅提供可靠性策略接口,進行異常事件處理過程中僅進行必要的異常信息保存和恢復,而可靠性處置措施可交給用戶層實現(xiàn),由用戶選擇配置異常處理措施,實現(xiàn)可靠性策略和措施相分離.
2.1 體系結構設計
為提高航天操作系統(tǒng)的可靠性和實時性,本文按照分層次低耦合體系結構設計原則,設計了一個基于最小內核的RTOS體系結構,將操作系統(tǒng)劃分成小的、良好定義的模塊,只有內核運行在內核態(tài)中,其他的模塊作為普通用戶進程運行.EVTROS從體系結構上劃分為3個層次:板級支持層、功能層和用戶層,如圖1所示.
板級支持層:板級支持層為RTOS提供了特定于星載計算機硬件的板級驅動,可以屏蔽硬件平臺的差異,有效保證內核的獨立性和操作系統(tǒng)的移植性.板級支持層主要包括以下功能:系統(tǒng)配置和初始化模塊完成系統(tǒng)和CPU的初始化;板級驅動程序主要實現(xiàn)了硬件設備的驅動;內核初始化模塊為內核分配內存空間并且建立內核調度任務.
圖1 EVTROS操作系統(tǒng)軟件體系結構圖Fig.1 Architecture of EVTROS
功能層:EVTROS內核設計盡可能小,只保留實現(xiàn)操作系統(tǒng)基本功能的模塊,而把外圍功能的實現(xiàn)放在最小內核之外,不僅處理時間較少,而且降低內核出異常的概率,能夠起到提高可靠性的作用.功能層由最小內核和內核擴展模塊組成,共同完成操作系統(tǒng)軟件的任務管理、中斷管理、內存管理、時鐘管理和任務間通信管理的功能.其中內核擴展模塊中的異常管理模塊,對發(fā)生異常時的系統(tǒng)狀態(tài)進行保存和恢復,是保證系統(tǒng)可靠性的關鍵.
用戶層:用于屏蔽操作系統(tǒng)內核接口,提供應用軟件需要的接口和功能,包括用戶支持庫和用戶異常處理模塊.用戶異常處理模塊將發(fā)生的異常信息記錄到日志系統(tǒng)中并根據(jù)異常的類別分別處理,是可靠性設計的重要內容.
2.2 實時調度設計
系統(tǒng)調度是特定事件發(fā)生時根據(jù)系統(tǒng)資源的占用情況對任務狀態(tài)的統(tǒng)一管理和調配,調度策略是影響操作系統(tǒng)實時性的重要因素.EVTROS調度時機是在特定事件下進行的,如圖2所示,包括時鐘中斷和內核事件.時鐘中斷(也指時間片中斷)是周期性觸發(fā)的,首先保存當前任務(處于執(zhí)行態(tài)的任務)的上下文(本文指CPU寄存器的值)到任務堆棧中,然后從就緒隊列中獲取第一個任務(優(yōu)先級最高),從該任務的堆棧中加載上下文到CPU寄存器中并且執(zhí)行.為了提高系統(tǒng)的實時性和任務切換的效率,本文還在執(zhí)行調度程序之前進行了優(yōu)化,首先比較當前任務的優(yōu)先級和就緒隊列任務的優(yōu)先級,如果當前任務的優(yōu)先級更高,則不重新執(zhí)行調度,直接從該任務被中斷的地方執(zhí)行,只有當前任務的優(yōu)先級低時才重新調度.這樣,可以減少調度和任務切換的次數(shù),提高系統(tǒng)性能.
圖2EVTROS調度機制Fig.2 Scheduler of EVTROS
內核事件也能觸發(fā)EVTROS重新調度,本文的內核事件是指能夠引起內核重新調度的事件,由應用程序調用相關函數(shù)引發(fā),包括任務延時、任務執(zhí)行結束、任務掛起和恢復、信號量獲取和釋放、消息隊列發(fā)送和接收.當這些內核事件發(fā)生時,系統(tǒng)會立即執(zhí)行一次內核調度程序,而不必等到時鐘中斷到達時才調度.
內核事件觸發(fā)的調度方式實現(xiàn)了系統(tǒng)對外部事件的實時響應,能夠保證航天應用對緊急事件如實時程控指令的快速響應.在星載計算機運行過程中,如果任務間需要處理關鍵指令,可以在中斷程序中釋放信號量,通知系統(tǒng)軟件執(zhí)行一次內核事件調度,則獲取該信號量的任務會被立即調度執(zhí)行,而無需一直等待時間片輪轉,從而減少了關鍵事件的等待調度時間.
航天任務的特殊性,要求EVTROS操作系統(tǒng)不僅能夠對正常情況下的系統(tǒng)資源進行有效管理,當系統(tǒng)發(fā)生異常情況時仍需要保持可靠運行.EVTROS操作系統(tǒng)主要在以下幾個方面進行了可靠性設計:內存檢查和冗余內存塊自動替換、異常處理與故障日志記錄、空間輻照下的單粒子翻轉處理.
3.1 內存檢查和冗余內存塊自動替換
星載計算機內存檢測有兩個特點:第一是檢測出現(xiàn)錯誤后不能夠將程序段和數(shù)據(jù)段搬移到內存中執(zhí)行,因為不可信的內存數(shù)據(jù)會對軟件任務造成不可預見的影響;第二是檢測出錯后能夠告知地面足夠的信息,以便進行內存地址替換等措施.目前,大多數(shù)星載計算機在檢測到內存錯誤后即直接復位,地面無法判斷是內存錯誤所致還是系統(tǒng)的其他異常所致,無法準確定位錯誤.為解決這一問題,本文在檢測到內存錯誤后,一方面給出遙測數(shù)據(jù),另一方面隔離出錯的內存塊.
初始加電后,EVTROS進行內存檢查:遍歷所有內存空間,寫入固定值序列后并讀取,判斷寫入數(shù)據(jù)的正確性,如果內存數(shù)據(jù)讀寫均正確則正常加載到內存中運行,如果不正確則進行內存出錯處理.航天用1553B總線通信的設備分為BC(bus controller)端和RT(remote terminal)端.如果是RT端,則進行1553B總線寄存器初始化后,向總線遙測子地址寫入表明內存區(qū)有錯誤的事件碼和內存出錯地址,等待中央計算機(BC端)采集并且下行.如果是BC端,則向硬件遙測地址寫入錯誤事件碼并下行.這樣,地面能夠獲取系統(tǒng)檢測到內存錯誤的信息,并執(zhí)行下一步操作.
EVTROS設計了冗余內存塊自動替換的策略.在內存塊檢測的過程中,如果發(fā)現(xiàn)某一內存塊錯誤,則記錄發(fā)生錯誤的內存塊;最終如果只有一個內存塊有錯誤,則使用最后一個內存塊替換出錯的內存塊,隔離出錯的內存區(qū),系統(tǒng)繼續(xù)正常運行,如果多于一個內存塊有錯誤,則設置內存錯誤遙測狀態(tài)后下行,并設置狗咬復位.
3.2 異常處理與故障日志記錄
異常[1]是指處理器由于某些指令自動產(chǎn)生的異常事件,如非法指令、除零等.當異常事件發(fā)生時,CPU能夠捕獲異常并轉入異常處理代碼執(zhí)行.以TSC695F和BM3803處理器為例,EVTROS能夠管理所有256級Trap,除15個中斷和少數(shù)Trap(包括下溢、上溢、軟指令關閉Trap)需要特殊處理外,其他異常均采用統(tǒng)一的方式進行處理.
根據(jù)可靠性策略和措施相分離的設計原則,本文針對這些異常處理分兩個層次:內核層異常處理和用戶層異常處理,將用戶層異常處理掛接在內核層異常處理的末端.內核層的異常處理是“后臺”程序,對發(fā)生異常時的系統(tǒng)狀態(tài)進行保存和恢復.當異常發(fā)生時,首先保存異常發(fā)生時的CPU寄存器狀態(tài)到內存中,然后轉向執(zhí)行用戶層異常處理程序,執(zhí)行完畢后再次轉向“后臺”程序,在異常退出前從內存中恢復CPU寄存器狀態(tài).
用戶層的異常處理是用戶軟件操作導致異常時具體處理的過程,是用戶可配置和修改的.內核層的異常處理是對發(fā)生異常時的處理器上下文信息進行保存和恢復的過程,對用戶不可見.用戶層的異常處理分兩步進行.第一,以故障日志記錄的形式保存異常信息,首先讀取出錯時CPU寄存器的值,生成一個異常記錄結構(包括異常計數(shù)、異常源、異常類型、錯誤地址、PC寄存器值、處理器狀態(tài)寄存器值、發(fā)生錯誤的任務ID),并且將這些信息保存到特定的存儲區(qū)域.第二,保存完異常信息后,根據(jù)異常類型分別進行處理:如果是無法恢復的異常,包括除零錯、非法指令、內存不對齊錯誤、數(shù)據(jù)訪問錯誤,則設置復位;若為其它異常,則清除CPU寄存器錯誤狀態(tài)后繼續(xù)執(zhí)行.星載應用軟件讀取故障日志記錄并下傳地面,以進行異常定位.
不同的處理器或者系統(tǒng)可以有不同的異常處理方式,應用程序可以對用戶層的異常處理方式進行配置和更改,這樣不僅可以實現(xiàn)內核層異常處理的通用化,而且適應了不同系統(tǒng)對異常處理的多變性需求,實現(xiàn)了可靠性策略和措施相分離的原則.
3.3 空間輻照下的單粒子翻轉處理
單粒子效應是十分重要的空間環(huán)境效應之一,其影響也越來越嚴重,經(jīng)常造成系統(tǒng)出錯或損壞,導致航天器系統(tǒng)失控,其中,單粒子翻轉(single event upset,SEU)是較為常見而又十分重要的一種單粒子效應[9].EVTROS對內存可能發(fā)生的單粒子翻轉進行了防護,通過軟件容錯方式減少單粒子翻轉對星載計算機系統(tǒng)的影響.通過設置 CPU寄存器將RAM錯誤檢測與糾正[10](error detection and correction,EDAC)防護功能打開,軟件就能響應單粒子翻轉事件.
用戶異常處理模塊實現(xiàn)單粒子翻轉處理程序,一旦發(fā)生單粒子翻轉,該程序記錄單比特錯計數(shù),并且分別讀取和回寫發(fā)生單粒子翻轉的內存中的數(shù)據(jù),從而糾正內存中的錯誤數(shù)據(jù).
軟件測試是保證RTOS可靠性的重要手段.EVTROS操作系統(tǒng)經(jīng)歷了多個測試階段,一方面通過制定場景進行專項測試.另一方面,通過航天應用和在軌長期飛行進行測試,驗證其正確性,例如某航天器中心計算機上的應用軟件有十多個不同優(yōu)先級的任務和數(shù)十個不同優(yōu)先級的中斷,不僅任務執(zhí)行過程復雜,而且中斷的發(fā)生具有隨機性.經(jīng)過多次飛行任務和連續(xù)四年不斷電在軌飛行,實測數(shù)據(jù)表明EVTROS操作系統(tǒng)運行安全可靠.
本文對EVTROS的實時性和可靠性進行了測試驗證.實時性是RTOS最重要的技術指標,任務切換時間和中斷響應時間是影響RTOS實時性的重要性能指標,在航天任務中尤為突出.任務切換時間是從當前任務運行的最后一條指令放棄CPU,到下一個就緒任務的首條指令開始執(zhí)行的時間,中斷響應時間是從中斷發(fā)生到開始執(zhí)行用戶中斷服務程序的第一條指令之間的時間.本文對這兩個性能指標進行了100次測試,統(tǒng)計了EVTROS的平均時間,運行環(huán)境為國產(chǎn)BM3803處理器(主頻20MHZ),任務數(shù)20個,并與VXWORKS和RTEMS實時操作系統(tǒng)的性能進行了比較,如表1所示.
表1 性能指標測試結果Tab.1 Testing results of the performance
多任務切換和外部中斷響應是RTOS運行過程中頻繁發(fā)生的事件.表1的測試結果表明EVTROS相對于VXWORKS和RTEMS,具有更好的實時性.
本文對EVTROS的可靠性設計進行了測試,測試過程和方法如表2所示,結果表明軟件能夠正確處理系統(tǒng)發(fā)生的異常,滿足可靠性設計要求.
表2 可靠性設計測試方法和結果Tab.2 Testing methods and results of the reliability design
本文設計的一種面向航天的可靠實時操作系統(tǒng),具有實時性高、異??煽刻幚淼奶攸c,多次成功應用于中國航天器的中心計算機中,已連續(xù)無故障運行四年,其功能性能和可靠性得到了有效的驗證,可以推廣到其他航天器中使用.
[1] 程勝,蔡銘.航天高可靠嵌入式實時操作系統(tǒng)原理與技術[M].北京:中國宇航出版社,2012.CHENG S,CAI M.The principle and technique of space highly reliable embedded real time operating system[M].Beijing:China Astronautics Press,2012.
[2] ANH T.Real-time operating systems for small microcontrollers[J].Micro,2008,29(5):30-45.
[3] HILDE B D.An architecture overview of QNX[C]// Proceedings of the workshop on micro kernels and other kernel architectures.New York:IEEE,1992.
[4] 徐建,楊樺.基于微內核的星載實時操作系統(tǒng)設計與實現(xiàn)[J].空間控制技術與應用,2011,37(2):38-43.XU J,YANG Y.Design and implementation of microkernel-based satellite real time operating system[J].Aerospace Control and Application,2011,37(2):38-43.
[5] Atmel Corporation.Rad-hard 32 bit SPARC embedded processor TSC695F[Z].Atmel Corporation,2003.
[6] 詹盼盼,郭廷源,高建軍,等.基于BM3803處理器的即插即用星載計算機系統(tǒng)設計[J].航天器工程,2013,22(6):92-96.ZHAN P P,GUO T Y,GAO J J.Plug-and-play onboard computer system design based on bm3803 processor[J].Spacecraft Engineering,2013,22(6):92-96.
[7] LIEDTKE J.On μ-Kernel construction[C]//The 15thACM Symposium on Operation Systems,Coper Mountain,1995.
[8] ANDREW S T.Modern operating systems[M].New York:Pearson Education,2008
[9] 黃建國,韓建偉,林云龍,等.一種SEU實驗數(shù)據(jù)的處理方法[J].空間科學學報,2002,22(3):268-273.HUANG J G,HAN J W,LIN Y.A method for processing SEU data[J].Chinese Journal of Space Science,2002,22(3):268-273.
[10] SHIRVANI P P,SAXENA N R,MCCLUSKEY E J.Software implemented EDAC protection against SEUs [J].IEEE Transactions on Reliability,2000,49(3): 273-284.
Design of Reliable Real Time Operating System in Aerospace
ZHAN Panpan,GUO Jian,HE Xiongwen,ZHANG Hongjun
(Beijing Institute of Spacecraft System Engineering,Beijing 100094,China)
Since the space mission has a specific demand on real time operation system(RTOS),a space high reliability real time operating system—extremely valuable time-critical reliable operating system(EVTROS)is designed.It involves the functions of task management,interrupt management,memory management,synchronization and communication,time management and exception handling.The software architecture are elaborated based on the smallest kernel and real time task scheduling.The reliability of space RTOS is improved via three approaches:two-level exception handling and fault log recording mechanism,memory checking and automatic replacement of redundant memory blocks,handling of single event upset under space radiation.Measured data show that the designed RTOS has good performance and can handle reliably when exception occurs.The designed RTOS is applied to space on-board computers of several missions and the reliability is verified.
on-board computer;operating system;real time scheduling;reliable;exception handling
V446.2
A 文章編號:1674-1579(2016)05-0047-06
10.3969/j.issn.1674-1579.2016.05.009
詹盼盼(1987—),男,工程師,研究方向為空間數(shù)據(jù)系統(tǒng)設計;郭 堅(1977—),男,研究員,研究方向為空間數(shù)據(jù)系統(tǒng)設計;何熊文(1982—),男,高級工程師,研究方向為空間數(shù)據(jù)系統(tǒng)設計;張紅軍(1980—),男,高級工程師,研究方向為空間數(shù)據(jù)系統(tǒng)設計.
*空間信息網(wǎng)絡業(yè)務特征與流量分析理論研究(91438102)資助項目。
2016-07-05