衛星上面的操作系統崩潰(宕機)了該如何重啟?
比如「旅行者號」。是否有專門的單一功能性性單片機控制其系統的重啟工作?或者採用二套系統,相互備用?
參考圖來自互聯網(作者不詳).....
嘗試回答這個問題,各位多指教,多年前我曾參與過箭載計算機的測試工作,知道一些皮毛:
1 首先點一下,航天器中的計算機構可以分為兩個大類,「星載計算機」和「箭載計算機」,兩者可靠性要求都很高,但是因為星載和箭載過程中計算機工作的具體工作環境不同,也就造成安全性考慮的首要威脅是不一致的,「箭載」主要考慮的高過載、高振動、高低溫、有毒腐蝕性汽液環境等等,偏重物理性外界干擾居多,工作壽命以分鐘計;「星載」則主要考慮帶電的宇宙粒子轟擊、高低溫以及長期的宇宙射線輻射總劑量,環境威脅更大更普遍,工作壽命以年計;
2 如果只討論「星載計算機」,旅行者號上的計算機系統的可靠性安全和繞地飛行的衛星計算機並無本質差別,只是可能安全性設計要求更高一些,其它方面的設計就會做出一些讓步,比如計算機重量更大耗電量更大等等。考慮到旅行者是三十年前的產品,不具備參考性,不作討論;
3 現階段的「星載計算機」安全性的主要思想還是並行計算結構,並行計算結構可以比較好地在系統性能和系統安全性需求上做出平衡,成本上升也不大,是一種比較主流的星載計算機的設計方法,如下圖:
3.1 上圖中的節點即指「CPU核心節點」,其中不僅包含CPU,還包括配套的RAM和ROM、WatchDog;
3.2 上圖中的容錯部件設計,可以是和CPU節點一一對應實現完全分布架構,也可以採用單一容錯部件但內置多個容錯功能器件;
3.3 上圖中的容錯備件看門狗,提供給4單元容錯部件的備份節點功能,類似4+1;
3.4 上圖中的I/O設備是指性上的各種監測儀器和空地傳輸介面,還包括各種能源設備比如太陽能帆板;
3.5 利用分散式系統結構設計,可以大幅降低每個CPU節點的成本支出,甚至可以選用質量較好的民用產品,規避高規格晶元封鎖限制,這是系統在「容錯」上取得增益,以填補「排錯」階段的高昂成本。十幾年前,我們很多晶元依賴進口,軍品級的找不到,就大量買入民品級別的晶元進行篩選,成本驚人,可靠性提高也很有限;
4 分散式架構的好處是充分利用的系統級增益,同時不會大幅增加星載計算機對於寶貴的衛星平台資源的佔用,這是一個設計上的平衡,四節點是通常衛星平台的選擇,當然如果節點的資源能耗和重量以及PCB面積設計的更好,可以更多節點。同樣的,如果是星際航行,比如訪問火星或者太陽系之外的旅行,節點數可以更多,但節點能力也可以選擇更強大;
5 至於單CPU節點的可靠性,是一個鏈條結構,容錯部件負責監控CPU節點的工作狀態,同時容錯部件的工作狀態又受Watchdog的監控,在這種監控體系之下,CPU和OS工作狀態的」狀態監控「和「複位」是通常常見的選擇,CPU封裝都提供「專用的複位管腳,容錯部件在對CPU節點的一對一監控體系下,通過心跳機制實時監控CPU的工作狀態,如果CPU出現程序跑入死循環,則嵌入在OS內的Watchdog計數複位代碼不會觸發在」容錯部件「內的複位動作,當計數最終降低為零,則複位部件給出複位電平,引至CPU的複位管腳,則整個CPU節點複位重新啟動,將PROM內的OS和任務列表重新載入。當然實現起來沒有這麼簡單,複位部件往往還要判斷CPU節點的複位次數是否代表」永久失效「還是」暫時失效「,複位部件在做出判斷之後要通過匯流排通知其餘全部的複位部件和CPU節點,以重新分配任務列表....
6 另外需要提到的是,分散式計算系統可以支持系統」降配「,將同時工作的CPU節點數目下調,以適應衛星整體的激活電源水平和I/O設備數目,這也是一種智能的表徵。衛星上的能源主要來自於太陽能電池帆板,而帆板因為面積大極容易受到射線和微小隕石的攻擊,而造成電源短缺,在這種情況下就要有選擇關閉次要衛星功能,和冗餘的CPU節點,以換取更長久和可靠的任務執行狀態;
7 旅行者號使用核動力電池,這方面問題少一些,但是因為工作壽命已經大大超出設計壽命,美國方面的地面指揮中心已經幾次通過深空測控網路控制旅行者自動關閉了大多數次要任務,包括那個著名的帶有」高山流水「的金質唱機,這也是一種取捨;
8 最後再點一次題,星載計算機可以複位,複位機構可以嵌入CPU內部,也可以分離設計,很多FPGA在一定的可靠性上,可以提供複位功能,類似Watchdog。
順手貼一個Voyager-1的結構圖,星載計算機在Bus Housing艙段裡面。Hope it is useful.
謝邀。
火箭的不清楚,不過應該和衛星的差不多吧。
說一下衛星的情況。
星載計算機的軟體大概分為使用實時操作系統的,和不使用的。不使用操作系統的多為單片機系統或DSP、FPGA程序。
是軟體就會因為某種原因死機:測試不到位、空間環境……
為提高星載計算機軟體的可靠性,星上多使用硬體看門狗電路。硬體看門狗電路就是在固定時間內沒有收到喂狗(或牽狗)信號,就會將計算機複位。硬體看門狗電路相對簡單,可靠性高。星載軟體所做的就是在正常運行的程序周期內發出喂狗信號。這樣,只要軟體一旦因為某種原因異常,無法發出喂狗信號,看門狗電路就會將計算機複位,重新引導軟體運行。
一般星上為了增加可靠性,會對各個計算機交叉備份。使單一計算機發生故障對整星的影響降到最小。
- 航空航天領域一般使用實時操作系統,系統里要運行的任務都是事先已經計劃好了的,能儘可能地減少出現死鎖等能導致宕機的軟體問題。
- 現在大多數嵌入式系統中都集成有看門狗(Watchdog)模塊,正常運行時,軟體會定期進行「喂狗」操作,反之,如果間隔一定時間之後仍然沒有進行「喂狗「操作,則看門狗會認為系統已經崩潰,需要重啟。
- 以航空所需要達到的高可靠性,多機冗餘的措施應該是必須的。
期待更專業的知乎大牛補充。
不知道。但如果泛泛說,要不看門狗,要不bmc。
按照GBZ102的要求,以及一般嵌入式系統的慣例,衛星上各個分系統的計算機無論是小的單片機,複雜的DSP還是數管、姿控計算機,都要使用看門狗的。一旦程序由於某種原因無法正常運行,不能及時喂狗,看門狗就會動作,讓計算機CPU複位,整個系統重啟。
為了防止由於硬體永久故障而導致的複位不起作用,重要的計算機還會設計在一段時間(比如一分鐘內)多次啟動看門狗的話自動切換到備份機。
旅行者並非完全全自動運行。地球通過無線電可以對它進行有限度的控制。當然由於它實在離地球太遠,所以即使在還沒飛行到太陽系邊緣之前,JPL也需要用超大無線電射電望遠鏡陣列來控制它。
換句話說,可以通過無線電重啟,但是是否做了,JPL的人自然知道。
推薦閱讀:
※長征六號發射成功,為什麼有人諷刺?
※為什麼冥王星質量那麼小,又有5個衛星,能保持穩定的運行軌道?
※什麼叫衛星過頂?
※google地圖最高分辨能達到1米,為什麼不(能)用它搜索失事客機?地圖不是實時的,總有軍用衛星是實時的吧?
※ACARS和衛星數據對飛機來說哪個更貴?