蘭天,朱瑪,彭松,陳百超,賈陽(yáng)
北京空間飛行器總體設(shè)計(jì)部,北京 100094
中國(guó)深空探測(cè)始于嫦娥工程,通過(guò)嫦娥一號(hào)到嫦娥五號(hào)任務(wù),相繼突破了地月系軌道設(shè)計(jì)、測(cè)控?cái)?shù)傳、月面軟著陸、月面巡視探測(cè)、月面無(wú)人自動(dòng)采樣返回等一系列關(guān)鍵技術(shù)[1-2]。通過(guò)天問(wèn)一號(hào)探測(cè)器開(kāi)展首次火星探測(cè),在一次任務(wù)中同時(shí)實(shí)現(xiàn)對(duì)火星的“繞、落、巡”,中國(guó)成功將探測(cè)領(lǐng)域拓展到行星際空間[3-5]。目前,祝融號(hào)火星車(chē)已成功完成了預(yù)定探測(cè)目標(biāo),正在穩(wěn)步實(shí)施后續(xù)拓展任務(wù)。
火星與地球間單向光行時(shí)最長(zhǎng)達(dá)23min,且在任務(wù)期間存在日凌/凌日天文現(xiàn)象,地月系航天器準(zhǔn)實(shí)時(shí)遙控備保程控的操控模式無(wú)法應(yīng)用于火星任務(wù)。天問(wèn)一號(hào)由環(huán)繞器、著陸器和祝融號(hào)火星車(chē)等三部分組成,環(huán)繞器為著陸器和火星車(chē)提供進(jìn)入、下降、著陸(entry,descent and landing,EDL)過(guò)程和火面巡視探測(cè)的中繼服務(wù)[6]。在單個(gè)通信弧段的中繼數(shù)據(jù)量上,天問(wèn)一號(hào)探測(cè)器的水平已能與歐美匹敵,但由于尚不具備類(lèi)似美國(guó)的火星中繼網(wǎng)絡(luò)(Mars relay network,MRN)[7-8],任務(wù)過(guò)程中的整體中繼數(shù)據(jù)量仍明顯受限。
由于火星與太陽(yáng)距離遠(yuǎn)、火面沙塵天氣等因素,火面太陽(yáng)光強(qiáng)在最優(yōu)情況下也不超過(guò)地球軌道光強(qiáng)的43%。且由于質(zhì)量限制,祝融號(hào)火星車(chē)太陽(yáng)翼尺寸、蓄電池容量相對(duì)有限。在火面實(shí)施巡視任務(wù)的過(guò)程中,火星車(chē)內(nèi)除系統(tǒng)管理單元(system management unit,SMU)長(zhǎng)期加電工作外,其他設(shè)備均為短期加電。在某些極端工況下,如重度沙塵天氣,火星車(chē)會(huì)將全部設(shè)備斷電,自主進(jìn)入休眠狀態(tài)。為在少量的測(cè)控支持和嚴(yán)酷的環(huán)境下確保著陸、巡視等關(guān)鍵任務(wù)的成功,實(shí)現(xiàn)火星車(chē)的可靠生存和高效探測(cè),需要火星車(chē)能夠自主實(shí)現(xiàn)環(huán)境感知、路徑規(guī)劃、科學(xué)探測(cè)、故障診斷等功能,成為具備強(qiáng)大的自主運(yùn)行控制能力的火星移動(dòng)智能體[9-11]。由于需要進(jìn)行復(fù)雜、多樣的自主運(yùn)行控制,祝融號(hào)火星車(chē)需要具備比以往地月系探測(cè)器更強(qiáng)的重要數(shù)據(jù)保存、恢復(fù)能力。
航天器重要數(shù)據(jù)通常包括器上時(shí)間[12-16]、延時(shí)指令序列[17-18]和系統(tǒng)配置參數(shù)[19-20]等。針對(duì)重要數(shù)據(jù)的保護(hù),需結(jié)合飛行任務(wù)特點(diǎn),從保存、恢復(fù)兩個(gè)維度進(jìn)行設(shè)計(jì)。地月系探測(cè)器在任務(wù)過(guò)程中能夠得到多弧段、低延時(shí)、高速率的測(cè)控支持,因此可適度縮小其重要數(shù)據(jù)總量,在發(fā)生故障時(shí)依靠地面遙控恢復(fù)器上狀態(tài)。同時(shí),由于能源充裕,此類(lèi)航天器能夠支持內(nèi)部信息網(wǎng)絡(luò)上多臺(tái)智能設(shè)備長(zhǎng)期并行工作,因此重要數(shù)據(jù)保護(hù)一般優(yōu)先采用基于信息網(wǎng)絡(luò)的分布式重要數(shù)據(jù)保護(hù)架構(gòu)[16-20]。
和上述航天器相比,祝融號(hào)火星車(chē)的重要數(shù)據(jù)保護(hù)設(shè)計(jì)需要解決兩個(gè)新問(wèn)題:一是由于能源平衡的約束,能夠長(zhǎng)期加電且具備重要數(shù)據(jù)保護(hù)能力的設(shè)備只有SMU,SMU在發(fā)生復(fù)位、切機(jī)時(shí)需依靠自身恢復(fù)器上時(shí)間;二是由于測(cè)控條件的約束,SMU需要通過(guò)有限的存儲(chǔ)資源,在保存數(shù)據(jù)量確定的系統(tǒng)配置參數(shù)的同時(shí),盡可能多地保存延時(shí)指令,為地面飛控提供更大的靈活性。
本文首先從空間獨(dú)立性、時(shí)間獨(dú)立性方面對(duì)航天器重要數(shù)據(jù)保護(hù)的設(shè)計(jì)要點(diǎn)進(jìn)行了分析。在此基礎(chǔ)上,從祝融號(hào)火星車(chē)重要數(shù)據(jù)保存、恢復(fù)的實(shí)際需要出發(fā),建立了一種分布式與集中式相結(jié)合的重要數(shù)據(jù)保護(hù)架構(gòu)。在SMU集中存儲(chǔ)整車(chē)重要數(shù)據(jù),SMU以外的其他設(shè)備需要保存、恢復(fù)重要數(shù)據(jù)時(shí),由SMU通過(guò)器內(nèi)信息網(wǎng)絡(luò)向其提供服務(wù)。同時(shí),SMU不再依賴(lài)其他設(shè)備,而是通過(guò)SMU內(nèi)部存儲(chǔ)資源保存、恢復(fù)自身重要數(shù)據(jù)。針對(duì)器上時(shí)間恢復(fù)需要,提出了一種基于多重備份的器上時(shí)間保護(hù)方法。通過(guò)調(diào)節(jié)時(shí)間備份數(shù)量和時(shí)間保存周期,實(shí)現(xiàn)了低消耗、高可靠、誤差可控的器上時(shí)間自恢復(fù)。針對(duì)延時(shí)指令保護(hù)數(shù)據(jù)量?jī)?yōu)化需求,提出了一種基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法,按照數(shù)據(jù)相關(guān)性將重要數(shù)據(jù)分組,為各組重要數(shù)據(jù)分配專(zhuān)用存儲(chǔ)區(qū),各組重要數(shù)據(jù)間復(fù)用公用存儲(chǔ)區(qū),在保證任意時(shí)刻發(fā)生復(fù)位、切機(jī)后各組數(shù)據(jù)都有至少一份完整可用數(shù)據(jù)備份的同時(shí),有效提升了延時(shí)指令存儲(chǔ)能力。通過(guò)上述設(shè)計(jì),在祝融號(hào)火星車(chē)上實(shí)現(xiàn)了高效、可靠的重要數(shù)據(jù)保護(hù),為火星車(chē)在火面的長(zhǎng)期可靠生存和高效科學(xué)探測(cè)提供了有力支撐。
火星車(chē)的自主運(yùn)行控制依賴(lài)于其內(nèi)部的智能化電子設(shè)備。在電子設(shè)備判定自身不能繼續(xù)正常運(yùn)行時(shí),需通過(guò)切機(jī)、復(fù)位、加斷電等手段進(jìn)行主動(dòng)故障干預(yù),以恢復(fù)正常運(yùn)行狀態(tài)。同時(shí),電子設(shè)備還存在因外因,如母線電壓波動(dòng),導(dǎo)致被動(dòng)重啟的可能。為保證航天器業(yè)務(wù)連續(xù)性,即在啟動(dòng)后延續(xù)啟動(dòng)前的工作狀態(tài),需將業(yè)務(wù)所需數(shù)據(jù)作為重要數(shù)據(jù),在電子設(shè)備運(yùn)行過(guò)程中進(jìn)行動(dòng)態(tài)保存,在電子設(shè)備重啟時(shí)依據(jù)備份數(shù)據(jù)恢復(fù)工作狀態(tài)。
為在重要數(shù)據(jù)恢復(fù)時(shí)至少有一份完整可用的數(shù)據(jù)備份,考慮到設(shè)備外部故障打斷重要數(shù)據(jù)保存過(guò)程的可能,需在重要數(shù)據(jù)保護(hù)設(shè)計(jì)中確保各個(gè)重要數(shù)據(jù)備份的空間獨(dú)立性和時(shí)間獨(dú)立性。空間獨(dú)立性是指各份重要數(shù)據(jù)存儲(chǔ)在相互獨(dú)立的空間,不會(huì)因其中某一個(gè)存儲(chǔ)空間的異常導(dǎo)致其他備份連帶受損。時(shí)間獨(dú)立性是指需保證在時(shí)序上串行的刷新不同重要數(shù)據(jù)備份,以避免因保存過(guò)程異常中斷導(dǎo)致多個(gè)備份同時(shí)受損。在中國(guó)地月系航天器的重要數(shù)據(jù)保護(hù)設(shè)計(jì)中,一般將重要數(shù)據(jù)經(jīng)器內(nèi)信息網(wǎng)絡(luò)保存到多個(gè)不同設(shè)備,并在同一時(shí)間僅維護(hù)特定的數(shù)據(jù)備份,確保了各份重要數(shù)據(jù)的空間獨(dú)立性和時(shí)間獨(dú)立性。
祝融號(hào)火星車(chē)內(nèi)信息網(wǎng)絡(luò)組織結(jié)構(gòu)如圖1所示。

圖1 祝融號(hào)火星車(chē)器內(nèi)信息網(wǎng)絡(luò)組成示意
從圖1中可見(jiàn),祝融號(hào)火星車(chē)器內(nèi)信息網(wǎng)絡(luò)由一條一級(jí)總線和三條二級(jí)總線組成,巡視器控制總線為一級(jí)總線,機(jī)構(gòu)控制總線、載荷控制總線和巡視器感知總線為二級(jí)總線。SMU與載荷管理單元(payload management unit,PMU)、導(dǎo)航控制單元(guidance navigation control computer,GNCC)及測(cè)控通信單元掛接在一級(jí)總線上,由SMU實(shí)施總線控制。SMU通過(guò)機(jī)構(gòu)控制總線實(shí)現(xiàn)對(duì)雙軸定向天線、太陽(yáng)翼、感知桅桿和車(chē)體移動(dòng)的驅(qū)動(dòng)控制;PMU通過(guò)載荷控制總線實(shí)現(xiàn)對(duì)各載荷的控制;GNCC通過(guò)感知總線實(shí)現(xiàn)對(duì)各相機(jī)的控制。
受限于火面能源約束,火星車(chē)信息網(wǎng)絡(luò)內(nèi)的各設(shè)備除SMU長(zhǎng)期加電工作外,其他設(shè)備均按照任務(wù)規(guī)劃短時(shí)加電工作,分時(shí)實(shí)現(xiàn)探測(cè)、感知、移動(dòng)、通信等動(dòng)作。在極端情況下,如重度沙塵天氣,SMU還會(huì)根據(jù)能源預(yù)警自主進(jìn)入休眠狀態(tài),等待光照好轉(zhuǎn)后再次喚醒工作。針對(duì)這一特點(diǎn),設(shè)計(jì)由SMU通過(guò)巡視器控制總線為GNCC、PMU提供重要數(shù)據(jù)保護(hù);同時(shí),SMU不依賴(lài)GNCC、PMU,而是通過(guò)內(nèi)部存儲(chǔ)資源實(shí)現(xiàn)自身重要數(shù)據(jù)保護(hù)。
目前在航天器上廣泛應(yīng)用的存儲(chǔ)芯片主要有閃存(Flash)存儲(chǔ)器和磁阻式隨機(jī)存取存儲(chǔ)器(magneto resistive random access memory,MRAM)2大類(lèi)。Flash存儲(chǔ)器容量較大,適用于大量數(shù)據(jù)的存儲(chǔ),但存在寫(xiě)入次數(shù)的限制。MRAM是一種以磁電阻性質(zhì)來(lái)存儲(chǔ)數(shù)據(jù)的隨機(jī)存儲(chǔ)器,具有非揮發(fā)性、隨機(jī)存儲(chǔ)、高讀寫(xiě)速度、耗電量低、最小芯片面積、可以無(wú)限擦寫(xiě)等各種優(yōu)良特性,具有極高的可靠性??紤]到SMU負(fù)責(zé)保存的重要數(shù)據(jù)(尤其是器上時(shí)間)變化頻率快,選擇采用兩片存儲(chǔ)容量為8192byte的MRAM芯片作為實(shí)施重要數(shù)據(jù)保護(hù)的存儲(chǔ)器件,兩個(gè)芯片相互獨(dú)立、互為備份。
在該架構(gòu)下,火星車(chē)重要數(shù)據(jù)保護(hù)設(shè)計(jì)需要解決的關(guān)鍵問(wèn)題是如何基于MRAM實(shí)現(xiàn)器上時(shí)間和延時(shí)指令的可靠、高效保護(hù)。
針對(duì)基于MRAM實(shí)現(xiàn)器上時(shí)間自恢復(fù)的需要,設(shè)計(jì)了一種基于多重備份的器上時(shí)間保護(hù)方法,其備份與恢復(fù)過(guò)程如圖2所示。

圖2 火星車(chē)器上時(shí)間的備份與恢復(fù)過(guò)程
如圖2所示,Tsave是器上時(shí)間備份周期,Tbreak是復(fù)位、切機(jī)時(shí)刻;TLastSave是復(fù)位、切機(jī)發(fā)生前最近一次器上時(shí)間保存完成時(shí)刻;Trecovery是軟件啟動(dòng)后開(kāi)始恢復(fù)器上時(shí)間的時(shí)刻;Tstart是從復(fù)位、切機(jī)事件到開(kāi)始器上時(shí)間恢復(fù)動(dòng)作的時(shí)間間隔。
火星車(chē)在正常工作時(shí)按照Tsave周期刷新MRAM中的N個(gè)器上時(shí)間備份,按照備份1~備份N的順序從前向后順次寫(xiě)入。在SMU復(fù)位、切機(jī)后依靠這些時(shí)間備份完成時(shí)間恢復(fù)。之所以需要多個(gè)時(shí)間備份,是因?yàn)樵诨謴?fù)時(shí)間時(shí),不僅要確認(rèn)時(shí)間數(shù)據(jù)格式的正確性,還需確認(rèn)該數(shù)據(jù)的完整性,而這可以通過(guò)備份間的相互印證來(lái)實(shí)現(xiàn)。
在上述過(guò)程中,火星車(chē)器上時(shí)間恢復(fù)的誤差為
terror=Tstart+(Tbreak-TLastSave)
(1)
式中:terror為SMU器上時(shí)間恢復(fù)誤差,它是由于在SMU復(fù)位、切機(jī)時(shí)沒(méi)有可靠的外部時(shí)間參考源而產(chǎn)生的。該誤差分為兩部分:一是軟件啟動(dòng)耗時(shí)Tstart,二是復(fù)位、切機(jī)發(fā)生時(shí)刻與上一次器上時(shí)間保存時(shí)刻間的時(shí)間波動(dòng)(Tbreak-TLastSave)。
第一部分誤差Tstart可修正,通過(guò)地面測(cè)量獲得初始化各分支耗時(shí)并固化在軟件中,軟件在初始化過(guò)程中于各邏輯分支點(diǎn)設(shè)標(biāo)志,在器上時(shí)間恢復(fù)時(shí)根據(jù)標(biāo)志計(jì)算實(shí)際耗時(shí)。由于復(fù)位、切機(jī)時(shí)刻隨機(jī),第二部分誤差(Tbreak-TLastSave)無(wú)法修正,但可通過(guò)調(diào)整器上時(shí)間備份周期Tsave對(duì)其誤差范圍進(jìn)行控制。綜合考慮祝融號(hào)火星車(chē)各項(xiàng)功能需要,將器上時(shí)間備份周期Tsave設(shè)定為1s。
在通過(guò)上述誤差調(diào)節(jié)手段控制器上時(shí)間恢復(fù)誤差的同時(shí),還需通過(guò)多個(gè)時(shí)間備份間的比較來(lái)確認(rèn)所使用的器上時(shí)間備份的有效性,基于多重備份的有效性確認(rèn)流程如圖3所示。

圖3 基于多重備份的時(shí)間備份有效性確認(rèn)流程
如圖3所示,軟件按照器上時(shí)間備份的保存順序,首先從主份MRAM中讀出所有器上時(shí)間備份,并從前向后逐份比對(duì)相鄰兩份時(shí)間備份是否一致,若一致則通過(guò)該時(shí)間備份完成時(shí)間恢復(fù)。若主份MRAM中所有相鄰的時(shí)間備份都不一致,則再次嘗試依靠備份MRAM中時(shí)間備份恢復(fù)時(shí)間。若從主份、備份MRAM中恢復(fù)時(shí)間都失敗,則維持當(dāng)前時(shí)間不變,并針對(duì)時(shí)間恢復(fù)失敗進(jìn)行相應(yīng)的故障處置。
在時(shí)間保存過(guò)程中發(fā)生SMU復(fù)位、切機(jī)時(shí),會(huì)導(dǎo)致多個(gè)時(shí)間備份中的某份處于半新半舊狀態(tài),當(dāng)兩個(gè)相鄰備份內(nèi)容一致時(shí),這兩個(gè)備份必然都為完整的時(shí)間備份,而在一個(gè)MRAM中,由寫(xiě)入順序可保證較新的時(shí)間備份在前,較舊的時(shí)間備份在后。
該方法對(duì)時(shí)間備份有效性的識(shí)別能力與時(shí)間備份數(shù)量的取值有關(guān),對(duì)4備份情況下時(shí)間保存恢復(fù)情況進(jìn)行分析,如圖4所示。

圖4 在不同時(shí)刻打斷4備份時(shí)間保存對(duì)時(shí)間恢復(fù)的影響
如圖4所示,軟件在保存時(shí)連續(xù)向相應(yīng)存儲(chǔ)位置寫(xiě)入4個(gè)器上時(shí)間備份。TA至TI對(duì)應(yīng)保存過(guò)程中可能發(fā)生復(fù)位、切機(jī)的不同時(shí)刻。TA、TI為時(shí)間保護(hù)操作開(kāi)始前和結(jié)束后的某時(shí)刻;TC、TE和TG分別為備份1、2、3的保存完成時(shí)刻;TB、TD、TF和TH分別為備份1、2、3、4保存過(guò)程中的某時(shí)刻。對(duì)各時(shí)刻發(fā)生打斷對(duì)時(shí)間備份有效性的影響分析如下:
1)在TA時(shí)刻打斷時(shí),4個(gè)備份均為完整舊備份,軟件啟動(dòng)后可恢復(fù)到較早時(shí)間;
2)在TB、TC時(shí)刻打斷時(shí),備份1與后3個(gè)備份不同,軟件可根據(jù)備份2、3將時(shí)間恢復(fù)為較早時(shí)間;
3)在TD時(shí)刻打斷時(shí),備份1(新)、2(半新半舊)、3(舊)各不相同,軟件可根據(jù)備份3、4將時(shí)間恢復(fù)為較早時(shí)間;
4)在TE、TF、TG、TH、TI時(shí)刻打斷時(shí),備份1、2已更新為新的狀態(tài),軟件可將時(shí)間恢復(fù)為較新時(shí)間。
可見(jiàn),以4備份方式保存器上時(shí)間,在任意時(shí)刻發(fā)生打斷時(shí),軟件都能在啟動(dòng)后正?;謴?fù)到與實(shí)際時(shí)間相近的狀態(tài)。通過(guò)上述分析亦可知在N取值為1、2、3時(shí),都存在因異常中斷而無(wú)法找到內(nèi)容一致的相鄰備份,進(jìn)而影響正?;謴?fù)器上時(shí)間的可能。因此,時(shí)間備份數(shù)量N的取值應(yīng)為不小于4的正整數(shù)。
考慮MRAM器件部分損壞導(dǎo)致備份中有1份無(wú)法正確保存時(shí)間的可能,進(jìn)一步對(duì)6備份情況下時(shí)間保存恢復(fù)情況進(jìn)行分析,如圖5所示。

圖5 在不同時(shí)刻打斷6備份時(shí)間保存對(duì)時(shí)間恢復(fù)的影響
如圖5所示,軟件在保存時(shí)連續(xù)向相應(yīng)存儲(chǔ)位置寫(xiě)入6個(gè)器上時(shí)間備份。TA至TE對(duì)應(yīng)保存過(guò)程中可能發(fā)生復(fù)位、切機(jī)的不同時(shí)刻。對(duì)6個(gè)備份中的任意一個(gè)備份因硬件原因失效的場(chǎng)景下,不同時(shí)刻發(fā)生打斷對(duì)時(shí)間恢復(fù)的影響進(jìn)行分析:
1)在備份1、2、5、6中任意一個(gè)失效時(shí),6個(gè)備份中皆存在4個(gè)連續(xù)的有效備份區(qū),根據(jù)前述4備份的分析可知,此時(shí)在任意時(shí)刻發(fā)生打斷時(shí),均能實(shí)現(xiàn)器上時(shí)間的正常恢復(fù);
2)在備份3失效時(shí),若打斷發(fā)生在TA時(shí)刻,軟件可通過(guò)備份1、2恢復(fù)為較舊時(shí)間;若打斷發(fā)生在TB、TC、TD時(shí)刻,軟件可通過(guò)備份4、5恢復(fù)為較舊時(shí)間;若打斷發(fā)生在TE及以后時(shí)刻,軟件可通過(guò)備份1、2恢復(fù)為較新時(shí)間;
3)在備份4失效時(shí),若打斷發(fā)生在TA時(shí)刻,軟件可通過(guò)備份1、2恢復(fù)為較舊時(shí)間;若打斷發(fā)生在TB、TC時(shí)刻,軟件可通過(guò)備份2、3恢復(fù)為較舊時(shí)間;若打斷發(fā)生在TD時(shí)刻,軟件可通過(guò)備份5、6恢復(fù)為較舊時(shí)間;若打斷發(fā)生在TE及以后時(shí)刻,軟件可通過(guò)備份1、2恢復(fù)為較新時(shí)間。
可見(jiàn),在4個(gè)時(shí)間備份的基礎(chǔ)上增加時(shí)間備份數(shù)量N有助于增強(qiáng)對(duì)MRAM內(nèi)局部硬件故障的魯棒性。備份數(shù)量的變化會(huì)對(duì)器上時(shí)間恢復(fù)最大時(shí)延和存儲(chǔ)資源消耗等2個(gè)指標(biāo)有一定影響,且與備份數(shù)量成線性關(guān)系。由于時(shí)間數(shù)據(jù)量少、比較邏輯簡(jiǎn)單,采用6備份與4備份相比,重要數(shù)據(jù)最大恢復(fù)時(shí)間增加65μs,重要數(shù)據(jù)存儲(chǔ)資源消耗增加12byte。更大的時(shí)間備份數(shù)量雖可獲得更高的魯棒性,但考慮到SMU上2片MRAM同時(shí)出現(xiàn)故障的概率極小,因此在祝融號(hào)火星車(chē)上選擇時(shí)間備份數(shù)量為6份。
火星車(chē)SMU內(nèi)的兩片MRAM互為備份關(guān)系,每片MRAM的存儲(chǔ)容量為8192byte。其中部分空間用于存儲(chǔ)器上時(shí)間備份、引導(dǎo)信息等數(shù)據(jù),實(shí)際重要數(shù)據(jù)可用空間為7960byte。在這有限的空間內(nèi),火星車(chē)需要在保存長(zhǎng)度為2560byte的系統(tǒng)配置參數(shù)(含GNCC、PMU重要數(shù)據(jù))的同時(shí),實(shí)現(xiàn)對(duì)延時(shí)指令的重要數(shù)據(jù)保護(hù)。若采用傳統(tǒng)的雙重備份方式,能用于存儲(chǔ)延時(shí)指令的空間僅有1414byte(去掉6byte格式開(kāi)銷(xiāo))。
祝融號(hào)火星車(chē)在落火初期生存狀態(tài)建立過(guò)程中的備保狀態(tài)設(shè)置和在火面巡視過(guò)程中的探測(cè)任務(wù)都需要以延時(shí)指令方式上注,SMU在復(fù)位、切機(jī)后能夠恢復(fù)的延時(shí)指令數(shù)據(jù)量直接影響火星車(chē)的運(yùn)行安全和探測(cè)效率。為提升延時(shí)指令重要數(shù)據(jù)保護(hù)能力,提出了一種專(zhuān)用存儲(chǔ)區(qū)與公用存儲(chǔ)區(qū)相結(jié)合的重要數(shù)據(jù)保護(hù)方法。
首先,統(tǒng)籌考慮數(shù)據(jù)量、數(shù)據(jù)刷新率和存儲(chǔ)資源限制,將重要數(shù)據(jù)按照相關(guān)性分為多個(gè)組。在存儲(chǔ)空間內(nèi)為每組重要數(shù)據(jù)分配一個(gè)專(zhuān)用存儲(chǔ)區(qū),為所有重要數(shù)據(jù)設(shè)置公用存儲(chǔ)區(qū)。在重要數(shù)據(jù)保存時(shí),通過(guò)“先公用區(qū)、后專(zhuān)用區(qū)”的寫(xiě)入時(shí)序,確保在任意時(shí)刻發(fā)生復(fù)位、切機(jī)后各組重要數(shù)據(jù)的公用區(qū)和專(zhuān)用區(qū)內(nèi)都有至少一份完整可用備份,如圖6所示。

圖6 基于存儲(chǔ)區(qū)復(fù)用的MRAM空間分配
從圖6中可見(jiàn),軟件將一片MRAM劃分為1個(gè)公用區(qū)和M個(gè)專(zhuān)用區(qū)。以組為單位保存重要數(shù)據(jù),每組重要數(shù)據(jù)都包括數(shù)據(jù)標(biāo)識(shí)、數(shù)據(jù)長(zhǎng)度和校驗(yàn)3部分格式,每項(xiàng)2byte,共6byte。對(duì)重要數(shù)據(jù)分組時(shí),需將具有相關(guān)性的重要數(shù)據(jù)分在同組中,以確保重要數(shù)據(jù)恢復(fù)后的軟件工作狀態(tài)不存在邏輯沖突。各組重要數(shù)據(jù)彼此間的數(shù)據(jù)標(biāo)識(shí)相互獨(dú)立,可通過(guò)數(shù)據(jù)標(biāo)識(shí)識(shí)別重要數(shù)據(jù)。組內(nèi)數(shù)據(jù)長(zhǎng)度可變,但總數(shù)據(jù)量不可超出相應(yīng)存儲(chǔ)區(qū)的數(shù)據(jù)容量。公用區(qū)與專(zhuān)用區(qū)數(shù)據(jù)容量的關(guān)系約束為

(2)
式中:SC為公用區(qū)數(shù)據(jù)容量;SP(i)為第i個(gè)專(zhuān)用區(qū)的數(shù)據(jù)容量,i={1,2,3,…,M}。在設(shè)計(jì)時(shí),應(yīng)確保專(zhuān)用區(qū)最大數(shù)據(jù)容量不大于公用區(qū)數(shù)據(jù)容量。數(shù)據(jù)存儲(chǔ)空間的使用效率為

(3)
式中:R為重要數(shù)據(jù)存儲(chǔ)空間使用效率。由于公用區(qū)數(shù)據(jù)容量等于各個(gè)專(zhuān)用區(qū)容量的最大值,因此基于存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法對(duì)存儲(chǔ)空間的使用效率不會(huì)低于50 %(雙重備份方式的存儲(chǔ)效率)。
在存儲(chǔ)空間緊張時(shí),可細(xì)分重要數(shù)據(jù)項(xiàng)以降低專(zhuān)用區(qū)最大存儲(chǔ)容量需求,進(jìn)而控制公用區(qū)的尺寸以提升存儲(chǔ)空間使用效率。在祝融號(hào)火星車(chē)上應(yīng)用此方法時(shí),以提升延時(shí)指令存儲(chǔ)空間為目標(biāo),因此設(shè)計(jì)公用區(qū)的數(shù)據(jù)容量為

(4)
式中:SMRAM為單片MRAM中重要數(shù)據(jù)可用存儲(chǔ)空間;Sconfig為除延時(shí)指令外火星車(chē)其他重要數(shù)據(jù)的總數(shù)據(jù)量,根據(jù)計(jì)算將火星車(chē)公用區(qū)設(shè)為2700byte,刨除6字節(jié)格式開(kāi)銷(xiāo),能夠保存最大長(zhǎng)度為2694byte的延時(shí)指令。由于火星車(chē)重要數(shù)據(jù)總數(shù)據(jù)量小于2700byte,因此將除延時(shí)指令外的重要數(shù)據(jù)劃分為幾份不會(huì)影響延時(shí)指令最大存儲(chǔ)能力。
綜合考慮數(shù)據(jù)的邏輯相關(guān)性,將火星車(chē)的重要數(shù)據(jù)分為4組定長(zhǎng)度重要數(shù)據(jù):系統(tǒng)綜合重要數(shù)據(jù)(含GNCC、PMU重要數(shù)據(jù))、自主熱控重要數(shù)據(jù)、步進(jìn)電機(jī)重要數(shù)據(jù)和移動(dòng)裝置重要數(shù)據(jù)。
在保存時(shí),先存重要數(shù)據(jù),后存延時(shí)指令,軟件在時(shí)間線上逐個(gè)分組實(shí)施動(dòng)作,如圖7所示。

圖7 重要數(shù)據(jù)保存過(guò)程
從圖7中可見(jiàn),軟件在保存某組重要數(shù)據(jù)時(shí),要按照“先公用區(qū)、后專(zhuān)用區(qū)”的順序向MRAM寫(xiě)入重要數(shù)據(jù)。與此對(duì)應(yīng),在恢復(fù)重要數(shù)據(jù)時(shí)也要按照“先公用區(qū)、后專(zhuān)用區(qū)”的順序從MRAM恢復(fù)重要數(shù)據(jù)。
由于公用區(qū)中同一時(shí)刻最多僅能存儲(chǔ)一份完整的重要數(shù)據(jù)或延時(shí)指令備份,因此在恢復(fù)重要數(shù)據(jù)時(shí),首先讀取公共區(qū)的數(shù)據(jù)標(biāo)識(shí),判斷是否為當(dāng)前想要獲取的重要數(shù)據(jù)。若數(shù)據(jù)標(biāo)識(shí)匹配,進(jìn)一步按照長(zhǎng)度讀出完整數(shù)據(jù)并檢查校驗(yàn);若數(shù)據(jù)標(biāo)識(shí)不匹配,則跳至該數(shù)據(jù)的專(zhuān)用區(qū)再次嘗試恢復(fù)重要數(shù)據(jù)。當(dāng)從公用區(qū)、專(zhuān)用區(qū)恢復(fù)重要數(shù)據(jù)的嘗試都失敗時(shí),使用相應(yīng)數(shù)據(jù)對(duì)應(yīng)的默認(rèn)值。
在重要數(shù)據(jù)保存過(guò)程中,設(shè)備的復(fù)位、切機(jī)、加斷電會(huì)造成某個(gè)重要數(shù)據(jù)備份處于半新半舊狀態(tài)。以第i組重要數(shù)據(jù)為例,對(duì)此過(guò)程中重要數(shù)據(jù)備份有效性變化進(jìn)行分析,如圖8所示。

圖8 不同時(shí)刻打斷重要數(shù)據(jù)保存對(duì)重要數(shù)據(jù)恢復(fù)的影響
從圖8中可見(jiàn),TA、TB、TC、TD、TE為復(fù)位、切機(jī)、加斷電等動(dòng)作可能發(fā)生的時(shí)間點(diǎn)。其中,TA、TE分別為第i組重要數(shù)據(jù)保存動(dòng)作過(guò)程前、后某時(shí)刻,TC為向公共區(qū)寫(xiě)入動(dòng)作完成后、未開(kāi)始向?qū)S脜^(qū)寫(xiě)入動(dòng)作的時(shí)刻,TB、TD分別為向公用區(qū)、專(zhuān)用區(qū)寫(xiě)入重要數(shù)據(jù)過(guò)程中的某時(shí)刻。按照時(shí)間順序,公用區(qū)、專(zhuān)用區(qū)內(nèi)數(shù)據(jù)內(nèi)容變化如下:
1)在TA時(shí)刻,第i組數(shù)據(jù)向公用區(qū)寫(xiě)入開(kāi)始前,公用區(qū)內(nèi)為其他數(shù)據(jù),專(zhuān)用區(qū)i中為第i組數(shù)據(jù)的舊狀態(tài);
2)在TB時(shí)刻,第i組數(shù)據(jù)向公用區(qū)寫(xiě)入過(guò)程中,公用區(qū)內(nèi)數(shù)據(jù)從前向后被第i組數(shù)據(jù)的新?tīng)顟B(tài)覆蓋,專(zhuān)用區(qū)i中為第i組數(shù)據(jù)的舊狀態(tài);
3)在TC時(shí)刻,第i組數(shù)據(jù)向公用區(qū)寫(xiě)入完成時(shí)刻,公用區(qū)內(nèi)為第i組數(shù)據(jù)完整的新?tīng)顟B(tài),專(zhuān)用區(qū)i內(nèi)為第i組數(shù)據(jù)的舊狀態(tài);
4)在TD時(shí)刻,第i組數(shù)據(jù)向?qū)S脜^(qū)i寫(xiě)入過(guò)程中,專(zhuān)用區(qū)內(nèi)數(shù)據(jù)從前向后被第i組數(shù)據(jù)新?tīng)顟B(tài)覆蓋,公用區(qū)內(nèi)為第i組數(shù)據(jù)的新?tīng)顟B(tài);
5)在TE時(shí)刻,第i組數(shù)據(jù)向?qū)S脜^(qū)i寫(xiě)入完成時(shí)刻,公用區(qū)、專(zhuān)用區(qū)i內(nèi)存儲(chǔ)的都是第i組數(shù)據(jù)的新?tīng)顟B(tài);
6)隨著后續(xù)數(shù)據(jù)的寫(xiě)入,公用區(qū)內(nèi)容被其他數(shù)據(jù)覆蓋,專(zhuān)用區(qū)i內(nèi)保持第i組數(shù)據(jù)的新?tīng)顟B(tài)不變。
當(dāng)外部異常打斷發(fā)生在TA、TC、TE等時(shí)刻時(shí),軟件復(fù)位后皆可以從公共區(qū)或?qū)S脜^(qū)恢復(fù)第i組重要數(shù)據(jù);當(dāng)外部異常打斷發(fā)生在TB時(shí)刻時(shí),可從專(zhuān)用區(qū)恢復(fù)第i組重要數(shù)據(jù);當(dāng)外部異常打斷發(fā)生在TD時(shí)刻時(shí),可從公用區(qū)恢復(fù)第i組重要數(shù)據(jù)。
可見(jiàn),基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法可確保設(shè)備在任意時(shí)刻發(fā)生復(fù)位、切機(jī)、加斷電時(shí),再次啟動(dòng)后皆能成功恢復(fù)重要數(shù)據(jù)。
基于祝融號(hào)火星車(chē)SMU的軟、硬件支持,采用基于多重備份的器上時(shí)間保護(hù)方法和基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法,實(shí)現(xiàn)了分布式與集中式相結(jié)合的重要數(shù)據(jù)保護(hù)架構(gòu)。在單片MRAM內(nèi),設(shè)置6個(gè)器上時(shí)間備份,時(shí)間保存周期設(shè)為1s。將重要數(shù)據(jù)拆分為5個(gè)數(shù)據(jù)組,并為其建立5個(gè)專(zhuān)用區(qū)和1個(gè)公用區(qū):系統(tǒng)綜合重要數(shù)據(jù)專(zhuān)用區(qū)占用1024byte,自主熱控重要數(shù)據(jù)專(zhuān)用區(qū)占用512byte,步進(jìn)電機(jī)重要數(shù)據(jù)專(zhuān)用區(qū)占用512byte,移動(dòng)裝置重要數(shù)據(jù)專(zhuān)用區(qū)占用512byte,延時(shí)指令序列專(zhuān)用區(qū)占用2700byte,公用區(qū)占用2700byte。
根據(jù)火星車(chē)硬件實(shí)際情況對(duì)全數(shù)字仿真平臺(tái)進(jìn)行配置,在其上模擬硬件故障,以驗(yàn)證所提方法對(duì)器上時(shí)間和重要數(shù)據(jù)的保護(hù)效果[21]?;谌珨?shù)字平臺(tái)的器上時(shí)間保護(hù)的測(cè)試結(jié)果如表1所示。

表1 器上時(shí)間保護(hù)方法應(yīng)用效果
在測(cè)試過(guò)程中,模擬了無(wú)硬件異常、僅單個(gè)時(shí)間備份失效、僅單片MRAM失效、單片MRAM失效且正常的MRAM中有單個(gè)時(shí)間備份失效等共4類(lèi)工況。在每類(lèi)工況下重復(fù)進(jìn)行500次測(cè)試,隨機(jī)復(fù)位以在不同時(shí)間點(diǎn)打斷器上時(shí)間保存過(guò)程。經(jīng)測(cè)試,在這4類(lèi)工況下,本文所提的器上時(shí)間保護(hù)方法均能成功恢復(fù)器上時(shí)間,時(shí)間恢復(fù)誤差在0.13s~0.91s之間。需要說(shuō)明的是,最大時(shí)間恢復(fù)誤差難以在隨機(jī)測(cè)試中測(cè)得,需要通過(guò)在時(shí)間保存時(shí)刻增加復(fù)位操作的特殊版本測(cè)試程序進(jìn)行測(cè)試。經(jīng)測(cè)試,極端工況下基于多重備份的器上時(shí)間保護(hù)方法的最大恢復(fù)時(shí)間誤差為1s,等于時(shí)間保存周期,符合預(yù)期。
在進(jìn)行表1中器上時(shí)間恢復(fù)測(cè)試的同時(shí),并行開(kāi)展了重要數(shù)據(jù)恢復(fù)的測(cè)試,測(cè)試結(jié)果如表2所示。

表2 重要數(shù)據(jù)保護(hù)方法應(yīng)用效果
經(jīng)測(cè)試,基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法每次均能成功恢復(fù)重要數(shù)據(jù),結(jié)果符合預(yù)期。
將本文提出的重要數(shù)據(jù)保護(hù)方法與雙重備份方法的實(shí)施效果進(jìn)行了比較,結(jié)果如表3所示。

表3 本方法與雙重備份方法的重要數(shù)據(jù)保護(hù)效果比較
從表3中第1、3行可見(jiàn),在相同的MRAM空間限制下,基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法在實(shí)現(xiàn)與雙重備份方法相同的重要數(shù)據(jù)保護(hù)效果的同時(shí),將延時(shí)指令最大存儲(chǔ)容量從雙重備份方法的1414byte提升到2694byte,增加了1280byte,存儲(chǔ)能力上升90.5 %,存儲(chǔ)空間利用效率從雙重備份方法的50 %提升到了66 %。由于延時(shí)指令恢復(fù)數(shù)據(jù)量的增加,本文所提方法的重要數(shù)據(jù)恢復(fù)時(shí)間有相應(yīng)增加。
從表3中第2、3行可見(jiàn),雙重備份方法要實(shí)現(xiàn)與基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法相同的保護(hù)能力,需要MRAM提供額外的2560byte的空間支持,且此時(shí)兩種方法的重要數(shù)據(jù)恢復(fù)時(shí)間相當(dāng)。
在上述測(cè)試基礎(chǔ)上,在天問(wèn)一號(hào)探測(cè)器的真實(shí)硬件環(huán)境下,通過(guò)故障模飛驗(yàn)證了火星車(chē)重要數(shù)據(jù)保護(hù)功能。經(jīng)測(cè)試,在各種故障工況下SMU、GNCC、PMU等設(shè)備均能正常恢復(fù)重要數(shù)據(jù)和器上時(shí)間,驗(yàn)證了分布式與集中式相結(jié)合的重要數(shù)據(jù)保護(hù)架構(gòu)為祝融號(hào)火星車(chē)提供業(yè)務(wù)延續(xù)性保障的能力。
針對(duì)祝融號(hào)火星車(chē)的業(yè)務(wù)連續(xù)性保障需要,設(shè)計(jì)了一種分布式與集中式相結(jié)合的重要數(shù)據(jù)保護(hù)架構(gòu)。在該架構(gòu)基礎(chǔ)上,針對(duì)在SMU獨(dú)立工作時(shí)的器上時(shí)間保護(hù)與重要數(shù)據(jù)保護(hù)問(wèn)題,分別設(shè)計(jì)了相應(yīng)的數(shù)據(jù)保護(hù)方法。
針對(duì)器上時(shí)間數(shù)據(jù)量小、占用空間少的特點(diǎn),提出了基于多重備份的器上時(shí)間保護(hù)方法。通過(guò)調(diào)節(jié)備份數(shù)量和備份周期,可實(shí)現(xiàn)在任意一個(gè)時(shí)間備份對(duì)應(yīng)的存儲(chǔ)區(qū)失效且器上時(shí)間保存過(guò)程在任意時(shí)刻被打斷后,軟件啟動(dòng)時(shí)均能恢復(fù)到誤差可控的器上時(shí)間。
針對(duì)在有限存儲(chǔ)空間約束下提升延時(shí)指令存儲(chǔ)能力的需要,提出了基于公用存儲(chǔ)區(qū)復(fù)用的重要數(shù)據(jù)保護(hù)方法。通過(guò)設(shè)置公用存儲(chǔ)區(qū)并控制重要數(shù)據(jù)保存、恢復(fù)順序,確保任意重要數(shù)據(jù)項(xiàng)在保存過(guò)程中任意時(shí)刻被打斷后,軟件均能在存儲(chǔ)區(qū)內(nèi)檢索到該數(shù)據(jù)項(xiàng)的完整可用備份。
上述方法在火面測(cè)控、能源雙重約束下可靠、高效地保障了祝融號(hào)火星車(chē)的業(yè)務(wù)延續(xù)性,可為后續(xù)面臨類(lèi)似約束條件的星球表面探測(cè)器、行星際探測(cè)器的信息系統(tǒng)設(shè)計(jì)、軟件設(shè)計(jì)提供參考。