一種基于erc32處理器的星載軟件系統(tǒng)及其重入方法
【專利摘要】一種基于ERC32處理器的星載軟件系統(tǒng),其包括異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、中斷返回模塊,當(dāng)異常陷阱中斷進(jìn)入異常陷阱入口,調(diào)用置故障啟動標(biāo)志模塊將故障啟動標(biāo)志設(shè)置成固定值,調(diào)用故障類型判斷處理模塊判讀ERC32處理器的故障陷阱類型;如果屬于不可恢復(fù)錯誤,則執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則中斷返回;軟復(fù)位指令重啟后跳轉(zhuǎn)到主程序開始,調(diào)用讀故障啟動標(biāo)志模塊讀取故障啟動標(biāo)志,然后調(diào)用判斷故障啟動標(biāo)志模塊對故障啟動標(biāo)識進(jìn)行判斷。本發(fā)明解決了星載軟件異常發(fā)生后系統(tǒng)數(shù)據(jù)的保存問題,取得了提高星載軟件容錯能力,并能及時糾正在軌故障。
【專利說明】—種基于ERC32處理器的星載軟件系統(tǒng)及其重入方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及星載軟件系統(tǒng),特別是一種基于ERC32處理器的星載軟件系統(tǒng)及其重入方法。
【背景技術(shù)】
[0002]星載軟件在空間環(huán)境中在軌運(yùn)行時,由于存在高能粒子輻射、真空、原子氧以及大溫差等因素,可能導(dǎo)致處理器出現(xiàn)各類異常,在這種情況下,應(yīng)用ERC32處理器的星載軟件對于這些異常要采取分類的適當(dāng)處理,使系統(tǒng)恢復(fù)正常運(yùn)行。
[0003]ERC32處理器包括一個整數(shù)單元(IU)、浮點(diǎn)單元(FPU)、一個存儲控制器和一個DMA控制器,對實(shí)時應(yīng)用來說,TSC695提供一個高安全性的看門狗計(jì)時器、2個定時器和一個中斷控制器、并行/串行通訊接口,可以選用內(nèi)部/外部總線的奇偶校驗(yàn)和EDAC校驗(yàn)的措施進(jìn)行檢錯、糾錯。
[0004]ERC32處理器有豐富的異常陷阱處理機(jī)制,最多可支持256個同步陷阱及異步中斷,軟件可通過內(nèi)部寄存器TBR讀取tt字段獲取故障類型,根據(jù)處理器的技術(shù)特點(diǎn),對于這些故障的處理可以分為兩大類:
(1)可恢復(fù)錯誤,采取中斷返回重入系統(tǒng);
(2)不可恢復(fù)錯誤,需要采取重新啟動才可以重入系統(tǒng)。
[0005]這樣就涉及軟件在啟動代碼段需要判斷軟件復(fù)位的原因,以判斷復(fù)位是由于星箭分離或冷機(jī)轉(zhuǎn)熱機(jī)引起的上電復(fù)位,還是由于故障引起的軟件復(fù)位,由于姿軌控應(yīng)用軟件需要保持故障前姿態(tài)控制狀態(tài),大部分變量,如時鐘、姿態(tài)角度、角速度都不能清零,而應(yīng)根據(jù)判斷結(jié)果采取相應(yīng)處理,上電初始化時必須全部清零,但在故障情況下,這類變量的值需要保留,不作初始化清零,而執(zhí)行三取二恢復(fù)操作。
[0006]目前在軌運(yùn)行及在研的基于ERC32處理器的星載軟件主要采取直接復(fù)位重入系統(tǒng)的方法,但這樣不能區(qū)分上電初始化和故障初始化,由于所有的變量被清零,姿態(tài)控制軟件需要從初態(tài)對日定向或者全姿態(tài)捕獲的方式重新建立控制狀態(tài),造成姿態(tài)控制的不連續(xù)性,帶來系統(tǒng)的不穩(wěn)定的安全隱患。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供了一種基于ERC32處理器的星載軟件系統(tǒng),其特征在于,包括順序連接的異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、中斷返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊,
所述異常陷阱入口為異常陷阱中斷提供進(jìn)入ERC32處理器中的入口,所述保存故障信息模塊用于將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,所述置故障啟動標(biāo)志模塊用于將故障啟動標(biāo)志設(shè)置成固定值,所述故障類型判斷處理模塊用于判斷ERC32處理器的故障陷阱類型,如果所述故障陷阱類型屬于不可恢復(fù)錯誤,則所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則終端返回模塊執(zhí)行中斷返回; 所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令后跳轉(zhuǎn)到主程序開始,其中所述讀故障啟動標(biāo)志模塊用于讀取故障啟動標(biāo)志,所述判斷故障啟動標(biāo)志模塊用于對故障啟動標(biāo)識進(jìn)行判斷,如果故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。
[0008]較佳地,所述異常陷阱中斷包括ERC32定義的可屏蔽硬件錯誤、堆棧溢出、內(nèi)存訪問保護(hù)、總線錯誤、浮點(diǎn)單元錯誤、非法請求錯誤和應(yīng)用程序異常。
[0009]較佳地,所述故障啟動標(biāo)識為內(nèi)存單元或硬件提供的寄存器,其上電時由硬件初始化為零。
[0010]較佳地,故障啟動標(biāo)志至少需要三模冗余存儲,讀取故障啟動標(biāo)志時需要作三取二多數(shù)表決。
[0011]較佳地,故障啟動標(biāo)志表不故障狀態(tài)的固定值的選取必須含有超過3位的I。
[0012]較佳地,故障類型判斷模塊判斷的故障類型取自ERC32處理器內(nèi)部的TBR寄存器中陷阱類型字段。
[0013]較佳地,可恢復(fù)故障類型包括陷阱類型為0x61的可重啟精確錯誤和陷阱類型為0x63的可重啟延遲錯誤以及陷阱類型為8,浮點(diǎn)陷阱類型為6的浮點(diǎn)可恢復(fù)錯誤,其類型全為不可恢復(fù)故障類型。
[0014]較佳地,所述可重啟精確錯誤作直接中斷返回處理,所述可重啟延遲錯誤將nPC設(shè)置為PC,PC減4,然后再作中斷返回處理,所述浮點(diǎn)可恢復(fù)錯誤清除浮點(diǎn)隊(duì)列寄存器FQ后作中斷返回處理。
[0015]本發(fā)明還提供了一種基于ERC32處理器的星載軟件系統(tǒng)重入方法,其 提供異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、終端返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊;
當(dāng)計(jì)算機(jī)故障觸發(fā)異常陷阱中斷進(jìn)入異常陷阱入口,調(diào)用故障信息模塊,將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,調(diào)用置故障啟動標(biāo)志模塊將故障啟動標(biāo)志設(shè)置成固定值,調(diào)用故障類型判斷處理模塊判讀ERC32處理器的故障陷阱類型;如果屬于不可恢復(fù)錯誤,則執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則中斷返回;
軟復(fù)位指令重啟后跳轉(zhuǎn)到主程序開始,調(diào)用讀故障啟動標(biāo)志模塊讀取故障啟動標(biāo)志,然后調(diào)用判斷故障啟動標(biāo)志模塊對故障啟動標(biāo)識進(jìn)行判斷,如果是故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。
[0016]本發(fā)明解決了星載軟件異常發(fā)生后系統(tǒng)數(shù)據(jù)的保存問題,取得了提高星載軟件容錯能力,及時糾正在軌故障等有益效果。
[0017]當(dāng)然,實(shí)施本發(fā)明的任一產(chǎn)品并不一定需要同時達(dá)到以上所述的所有優(yōu)點(diǎn)。
【專利附圖】
【附圖說明】
[0018]圖1為本發(fā)明實(shí)施例提供的星載軟件系統(tǒng)重入方法流程圖;
圖2是本發(fā)明實(shí)施例中實(shí)現(xiàn)異常陷阱中斷處理的流程圖;
圖3是本發(fā)明實(shí)施例中實(shí)現(xiàn)主程序故障狀態(tài)判斷和初始化重入的流程圖。具體實(shí)施例
[0019]本實(shí)施例提供了一種基于ERC32處理器的星載軟件系統(tǒng),其包括順序連接的異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、中斷返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊,
所述異常陷阱入口為異常陷阱中斷提供進(jìn)入ERC32處理器中的入口,所述保存故障信息模塊用于將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,所述置故障啟動標(biāo)志模塊用于將故障啟動標(biāo)志設(shè)置成固定值,所述故障類型判斷處理模塊用于判斷ERC32處理器的故障陷阱類型,如果所述故障陷阱類型屬于不可恢復(fù)錯誤,則所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則終端返回模塊執(zhí)行中斷返回;
所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令后跳轉(zhuǎn)到主程序開始,其中所述讀故障啟動標(biāo)志模塊用于讀取故障啟動標(biāo)志,所述判斷故障啟動標(biāo)志模塊用于對故障啟動標(biāo)識進(jìn)行判斷,如果故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。
[0020]其中所述異常陷阱中斷包括ERC32定義的可屏蔽硬件錯誤、堆棧溢出、內(nèi)存訪問保護(hù)、總線錯誤、浮點(diǎn)單元錯誤、非法請求錯誤和應(yīng)用程序異常。
[0021]所述故障啟動標(biāo)識為內(nèi)存單元或硬件提供的寄存器,其上電時由硬件初始化為零。
[0022]故障啟動標(biāo)志至少需要三模冗余存儲,讀取故障啟動標(biāo)志時需要作三取二多數(shù)表決。
[0023]故障啟動標(biāo)志表不故障狀態(tài)的固定值的選取必須含有超過3位的I。
[0024]故障類型判斷模塊判斷的故障類型取自ERC32處理器內(nèi)部的TBR寄存器中陷阱類型字段。
[0025]可恢復(fù)故障類型包括陷阱類型為0x61的可重啟精確錯誤和陷阱類型為0x63的可重啟延遲錯誤以及陷阱類型為8,浮點(diǎn)陷阱類型為6的浮點(diǎn)可恢復(fù)錯誤,其類型全為不可恢復(fù)故障類型。
[0026]所述可重啟精確錯誤作直接中斷返回處理,所述可重啟延遲錯誤將nPC設(shè)置為PC,PC減4,然后再作中斷返回處理,所述浮點(diǎn)可恢復(fù)錯誤清除浮點(diǎn)隊(duì)列寄存器FQ后作中斷返回處理。
[0027]本實(shí)施例提供了一種基于ERC32處理器的星載軟件系統(tǒng)重入方法,其提供異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、終端返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊;
如圖1所示,當(dāng)計(jì)算機(jī)故障觸發(fā)異常陷阱中斷進(jìn)入異常陷阱入口,調(diào)用故障信息模塊,將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,調(diào)用置故障啟動標(biāo)志模塊將故障啟動標(biāo)志設(shè)置成固定值,調(diào)用故障類型判斷處理模塊判讀ERC32處理器的故障陷阱類型;如果屬于不可恢復(fù)錯誤,則執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則中斷返回;
軟復(fù)位指令重啟后跳轉(zhuǎn)到主程序開始,調(diào)用讀故障啟動標(biāo)志模塊讀取故障啟動標(biāo)志,然后調(diào)用判斷故障啟動標(biāo)志模塊對故障啟動標(biāo)識進(jìn)行判斷,如果是故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。[0028]圖2是實(shí)現(xiàn)本發(fā)明基于ERC32處理器的星載軟件系統(tǒng)重入方法中異常陷阱處理的流程圖。如圖2的實(shí)施例所示,異常處理按照如下算法流程執(zhí)行:
計(jì)算機(jī)故障觸發(fā)異常陷阱中斷進(jìn)入異常陷阱入口,異常陷阱處理程序首先調(diào)用保存故障信息模塊,將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元。調(diào)用置故障啟動標(biāo)志模塊,將故障啟動標(biāo)志設(shè)置成OxAAAAAAAA,并將標(biāo)志存入三個硬件提供的寄存器(地址0x10000000,0x10000004,0xl0000008)o調(diào)用故障類型判斷處理模塊,判讀ERC32處理器的故障陷阱類型,如果屬于不可恢復(fù)錯誤,則執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則中斷返回。
[0029]圖3是實(shí)現(xiàn)本發(fā)明基于ERC32處理器的星載軟件系統(tǒng)重入方法中主程序故障狀態(tài)判斷和初始化重入的流程圖。如圖3所示,主程序初始化重入按照如下算法流程執(zhí)行:
軟復(fù)位指令重啟后程序跳轉(zhuǎn)到主程序開始,調(diào)用讀故障啟動標(biāo)志模塊,讀取3個故障啟動標(biāo)志,作三取二表決取多數(shù)值,然后調(diào)用判斷故障啟動標(biāo)志模塊,如果是故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。初始化結(jié)束轉(zhuǎn)入正常運(yùn)行控制,軟件重入結(jié)束。
[0030]本發(fā)明解決了星載軟件異常發(fā)生后系統(tǒng)數(shù)據(jù)的保存問題,取得了提高星載軟件容錯能力,及時糾正在軌故障等有益效果。
[0031]以上公開的本發(fā)明優(yōu)選實(shí)施例只是用于幫助闡述本發(fā)明。優(yōu)選實(shí)施例并沒有詳盡敘述所有的細(xì)節(jié),也不限制該發(fā)明僅為所述的【具體實(shí)施方式】。顯然,根據(jù)本說明書的內(nèi)容,可作很多的修改和變化。本說明書選取并具體描述這些實(shí)施例,是為了更好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,從而使所屬【技術(shù)領(lǐng)域】技術(shù)人員能很好地理解和利用本發(fā)明。本發(fā)明僅受權(quán)利要求書及其全部范圍和等效物的限制。
【權(quán)利要求】
1.一種基于ERC32處理器的星載軟件系統(tǒng),其特征在于,包括順序連接的異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、中斷返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊; 所述異常陷阱入口為異常陷阱中斷提供進(jìn)入ERC32處理器中的入口,所述保存故障信息模塊用于將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,所述置故障啟動標(biāo)志模塊用于將故障啟動標(biāo)志設(shè)置成固定值,所述故障類型判斷處理模塊用于判斷ERC32處理器的故障陷阱類型,如果所述故障陷阱類型屬于不可恢復(fù)錯誤,則所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令重啟,如果屬于可恢復(fù)錯誤,則終端返回模塊執(zhí)行中斷返回; 所述軟復(fù)位模塊執(zhí)行軟復(fù)位指令后跳轉(zhuǎn)到主程序開始,所述讀故障啟動標(biāo)志模塊用于讀取故障啟動標(biāo)志,所述判斷故障啟動標(biāo)志模塊用于對故障啟動標(biāo)識進(jìn)行判斷,如果故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二維護(hù)操作。
2.如權(quán)利要求1所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,所述異常陷阱中斷包括ERC32定義的可屏蔽硬件錯誤、堆棧溢出、內(nèi)存訪問保護(hù)、總線錯誤、浮點(diǎn)單元錯誤、非法請求錯誤和應(yīng)用程序異常。
3.如權(quán)利要求1所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,所述故障啟動標(biāo)識為內(nèi)存單元或硬件提供的寄存器,其上電時由硬件初始化為零。
4.如權(quán)利要求3所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,故障啟動標(biāo)志至少需要三模冗余存儲,讀取故障啟動標(biāo)志時需要作三取二多數(shù)表決。
5.如權(quán)利要求3所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,故障啟動標(biāo)志表示故障狀態(tài)的固定值含有超過3位的I。
6.如權(quán)利要求1所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,故障類型判斷模塊判斷的故障類型取自ERC32處理器內(nèi)部的TBR寄存器中陷阱類型字段。
7.如權(quán)利要求1所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,可恢復(fù)故障類型包括陷阱類型為0x61的可重啟精確錯誤和陷阱類型為0x63的可重啟延遲錯誤以及陷阱類型為8,浮點(diǎn)陷阱類型為6的浮點(diǎn)可恢復(fù)錯誤,其類型全為不可恢復(fù)故障類型。
8.如權(quán)利要求7所述的基于ERC32處理器的星載軟件系統(tǒng),其特征在于,所述可重啟精確錯誤作直接中斷返回處理,所述可重啟延遲錯誤將nPC設(shè)置為PC,PC減4,然后再作中斷返回處理,所述浮點(diǎn)可恢復(fù)錯誤清除浮點(diǎn)隊(duì)列寄存器FQ后作中斷返回處理。
9.一種基于ERC32處理器的星載軟件系統(tǒng)重入方法,其特征在于, 提供異常陷阱入口、保存故障信息模塊、置故障啟動標(biāo)識模塊、故障類型判斷處理模塊、軟復(fù)位模塊、終端返回模塊、讀取故障啟動標(biāo)識模塊、判斷故障啟動標(biāo)識模塊; 當(dāng)計(jì)算機(jī)故障觸發(fā)異常陷阱中斷進(jìn)入異常陷阱入口,調(diào)用故障信息模塊,將ERC32處理器故障前中斷現(xiàn)場保存到指定內(nèi)存單元,調(diào)用置故障啟動標(biāo)志模塊將故障啟動標(biāo)志設(shè)置成固定值,調(diào)用故障類型判斷處理模塊判讀ERC32處理器的故障陷阱類型;如果屬于不可恢復(fù)錯誤,則執(zhí)行軟復(fù)位指令重啟;如果屬于可恢復(fù)錯誤,則中斷返回; 軟復(fù)位指令重啟后跳轉(zhuǎn)到主程序開始,調(diào)用讀故障啟動標(biāo)志模塊讀取故障啟動標(biāo)志,然后調(diào)用判斷故障啟動標(biāo)志模塊對故障啟動標(biāo)識進(jìn)行判斷,如果是故障啟動標(biāo)志指示是上電硬復(fù)位,則調(diào)用上電初始化模塊對所有RAM和IO進(jìn)行初始化,否則調(diào)用故障初始化,僅對少數(shù)關(guān)鍵數(shù)據(jù)進(jìn)行三取二`維護(hù)操作。
【文檔編號】G06F11/14GK103559105SQ201310555237
【公開日】2014年2月5日 申請日期:2013年11月11日 優(yōu)先權(quán)日:2013年11月11日
【發(fā)明者】朱琦 申請人:上海航天測控通信研究所