一種航天器嵌入式軟件在軌維護方法
【技術領域】
[0001] 本發(fā)明屬于航天器嵌入式軟件應用領域,特別是一種航天器嵌入式軟件在軌維護 方法。
【背景技術】
[0002] 為了避免強輻射、單粒子效應等太空工作環(huán)境產(chǎn)生的影響,在軌的航天器軟件基 本上是將運行的軟件代碼固化在不容易發(fā)生改變的程序存儲器PROM中,在抗干擾能力及 可靠性提高的同時,也失去了軟件后期維護的功能。為了消除地面未能測試出的軟件故障 和實現(xiàn)由于硬件性能衰退、硬件故障等所帶來的軟件升級以及航天器產(chǎn)品在軌應用功能需 求的改變,很多航天器軟件都已經(jīng)提出了軟件在軌維護的功能需求。近幾年,相關的研宄和 探索工作已經(jīng)開展,但由于可靠性、上注效率以及工程可行性等多方面的原因,軟件在軌維 護還沒有真正進入到廣泛應用階段。目前,用于航天器嵌入式軟件在軌維護的方法主要有 以下三種:
[0003] (1)將功能或參數(shù)修改后的新版軟件整版上注,然后根據(jù)遙控指令切換運行新版 軟件或原版本軟件實現(xiàn)軟件在軌維護功能;(2)通過修改函數(shù)入口地址即軟件調(diào)用關系的 變化實現(xiàn)軟件功能的更改,達到軟件維護的目的;(3)通過比較功能更新后的新版二進制 文件和在軌運行軟件的二進制文件生成增量文件,將增量文件上注,然后通過在軌運行比 較算法完成新版軟件重組并執(zhí)行,實現(xiàn)對嵌入式軟件的在軌維護。
[0004] 上述三種方法盡管都實現(xiàn)了軟件在軌維護功能,但都有其局限性,第(1)種方法 的軟件上注代碼量非常大,上注時間較長,對軟件容錯機制、軟件存儲空間和上注效率的要 求都非常高。第(2)種方法則局限于對軟件局部功能的修改,軟件的可修改性完全取決于 原來函數(shù)入口地址是否具備以及預留的空白空間、空函數(shù)等是否可供使用。第(3)種方法 盡管提出了增量上注的概念,但由于軟件功能更改的不確定性,其增量代碼的獲取方法并 不能保證其增量代碼很小,甚至與整版上注文件相比沒有任何優(yōu)勢,上注量依然較大。如果 為保證其上注量減小則軟件的可更改性則大大降低,而且在軌運行比較算法進行軟件重組 和加載,對于軟件執(zhí)行效率、可靠性等方面的需求也非常高,因此現(xiàn)有嵌入式軟件在軌維護 技術都有代碼上注量大或功能修改受限或執(zhí)行效率降低等工程可行性不高的缺點。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明解決的技術問題是:克服現(xiàn)有技術的不足,提供了一種在軌維護受原版嵌 入式軟件限制小并能夠在原版嵌入式軟件的任意位置進行修改的航天器嵌入式軟件在軌 維護方法。
[0006] 本發(fā)明的技術解決方案是:一種航天器嵌入式軟件在軌維護方法,包括如下步 驟:
[0007] (1)按照軟件功能需求設計原版嵌入式軟件,將原版嵌入式軟件對應的機器碼按 照數(shù)據(jù)段、代碼段、堆和棧的順序依次排布,并在代碼段后預留第一設定閾值長度的空間作 為機器碼增加區(qū),然后將原版嵌入式軟件固化落焊在航天器PROM中運行;
[0008] (2)在原版嵌入式軟件運行過程中,根據(jù)在軌嵌入式軟件功能需求變化設計t版 嵌入式軟件,并比較t版嵌入式軟件源代碼與原版嵌入式軟件源代碼,得到t版嵌入式軟件 需要改變的源代碼位置和內(nèi)容,進而得到原版嵌入式軟件機器碼需要改變的機器碼地址及 長度,然后將原版嵌入式軟件機器碼劃分為多個機器碼未改變區(qū)、機器碼變化識別區(qū),并對 各個機器碼變化識別區(qū)對應的t版嵌入式軟件的源代碼進行編譯得到其機器碼并依次判 斷;所述的機器碼未改變區(qū)為原版嵌入式軟件機器碼未改變的區(qū)域;所述的機器碼變化識 別區(qū)為原版嵌入式軟件機器碼改變的區(qū)域,t的初值為1且為正整數(shù);
[0009] (3)如果原版嵌入式軟件機器碼變化識別區(qū)對應的t版嵌入式軟件機器碼長度等 于當前機器碼變化識別區(qū)機器碼長度,則將當前機器碼變化識別區(qū)對應t版嵌入式軟件機 器碼直接替換當前機器碼變化識別區(qū)機器碼;
[0010] 如果變化識別區(qū)對應的t版嵌入式軟件機器碼長度大于當前機器碼變化識別區(qū) 機器碼長度,則將當前機器碼變化識別區(qū)對應的t版嵌入式軟件機器碼放入當前機器碼 變化識別區(qū)與機器碼增加區(qū),并在當前機器碼變化識別區(qū)末位置添加跳轉(zhuǎn)至機器碼增加區(qū) 中t版嵌入式軟件機器碼首位置的無條件長跳轉(zhuǎn)指令,在機器碼增加區(qū)中t版嵌入式軟件 機器碼末位置添加跳轉(zhuǎn)至與當前機器碼變化識別區(qū)末位置相鄰機器碼的無條件長跳轉(zhuǎn)指 令;
[0011] 如果變化識別區(qū)對應的t版嵌入式軟件機器碼長度小于當前機器碼變化識別區(qū) 機器碼長度,則將變化識別區(qū)對應的t版嵌入式軟件機器碼放入當前變化識別區(qū),并使用 空操作指令填補使當前機器碼長度等于變化識別區(qū)機器碼長度;得到t版嵌入式軟件源代 碼機器碼;
[0012] (4)對比原版嵌入式軟件機器碼、t版嵌入式軟件機器碼得到變化的機器碼地址 和長度后與步驟(2)中尋找到的需要改變的機器碼地址及長度對比并判斷,如果兩者相 同,則轉(zhuǎn)入步驟(5),否則重復步驟(2)-步驟(3);
[0013] (5)根據(jù)變化的機器碼地址和長度得到t版嵌入式軟件對應的微增量機器碼, 分別獲取t版嵌入式軟件中各個機器碼變化識別區(qū)與機器碼增加區(qū)中機器碼在航天器 EEPR0M的存放地址長度、t版嵌入式軟件中各個機器碼未改變區(qū)中機器碼在航天器PROM 中的存放地址長度并形成其對應的鏈節(jié)信息,并將下一鏈節(jié)的存放地址放入上一鏈節(jié)信息 中,得到t版嵌入式軟件中各個機器碼變化識別區(qū)、機器碼增加區(qū)與機器碼未改變區(qū)對應 的鏈節(jié)信息后組合得到t版嵌入式軟件對應的鏈條,進而得到t版嵌入式軟件對應的軟件 鏈表維護信息,其中,各個機器碼未改變區(qū)、機器碼變化識別區(qū)、機器碼增加區(qū)均對應一個 鏈節(jié)信息;所述微增量機器碼為t版嵌入式軟件中各個機器碼變化識別區(qū)、機器碼增加區(qū) 中變化的機器碼,其中,各個機器碼變化識別區(qū)、機器碼增加區(qū)均對應一段微增量機器碼; 所述鏈條開始地址為當前版本嵌入式軟件中第一個鏈節(jié)信息的存放地址;所述軟件鏈表維 護信息包括鏈條開始地址、鏈節(jié)數(shù)、軟件校驗和、微增量機器碼及其在航天器EEPRM中的存 放地址長度、當前嵌入式軟件版本號、鏈節(jié)信息;
[0014] (6)發(fā)送上注控制字指令至航天器并控制航天器接收數(shù)據(jù),然后對微增量機器碼 與軟件鏈表維護信息以第二設定閾值長度進行分幀后得到多個數(shù)據(jù)包,依次將數(shù)據(jù)包上注 至航天器EEPR0M,計算每個上注完成的數(shù)據(jù)包的累加和并與其對應的校驗和進行對比,如 果兩者相等,則該數(shù)據(jù)包上注完成,否則發(fā)送指令控制地面重復上注該數(shù)據(jù)包直至數(shù)據(jù)包 的累加和與其對應的校驗和相等,在所有數(shù)據(jù)包上注結(jié)束時重復發(fā)送上注控制字指令來控 制航天器結(jié)束接收數(shù)據(jù),其中,在對微增量機器碼與軟件鏈表維護信息以第二設定閾值長 度進行分幀時,如果最后一幀數(shù)據(jù)長度小于設閾值,則通過填零使最后一幀數(shù)據(jù)長度為設 定閾值長度,數(shù)據(jù)包包括該數(shù)據(jù)包的校驗和;所述上注控制字指令包括微增量機器碼與軟 件鏈表維護信息在航天器EEPROM的存放開始地址、數(shù)據(jù)長度及校驗和;
[0015] (7)等待下次在軌嵌入式軟件功能需求變化,并監(jiān)測地面發(fā)送的直接指令,當在軌 嵌入式軟件功能需求變化時,使t=t+1,并重復步驟(2)-步驟(6)完成新的在軌維護,然 后等待下次在軌嵌入式軟件功能需求變化,并監(jiān)測地面發(fā)送的直接指令,當?shù)孛姘l(fā)送直接 指令時,轉(zhuǎn)入步驟(8);
[0016] (8)根據(jù)直接指令使用搬移程序搬移原版嵌入式軟件機器碼或k版嵌入式軟件機 器碼并搬至航天器SRAM中,然后計算航天器SRAM中k版嵌入式軟件機器碼累加和并與其 校驗和對比,如果兩者不相等,則重復步驟(8)直至兩者相等,如果兩者相等,則執(zhí)行k版嵌 入式軟件,并轉(zhuǎn)入步驟(7),其中,k= 1,2, 3,,,t。
[0017] 所述的步驟(1)第一設定閾值長度的取值范圍為代碼段長度的10%。
[0018] 所述的步驟(1)中將t版嵌入式軟件對應的機器碼按照數(shù)據(jù)段、代碼段、堆和棧的 順序依次排布為通過修改編譯器的鏈接腳本文件實現(xiàn)。
[0019] 所述的步驟(4)對比原版嵌入式軟件機器碼、t版嵌入式軟件機器碼可以使用 BeyondCompare軟件。
[0020] 所述的步驟(5)中的根據(jù)變化的機器碼地址和長度得到t版嵌入式軟件對應的微 增量機器碼的方位為以二進制碼流的形式讀取t版軟件機器碼中指定地址長度的內(nèi)容,然 后得到對應的微增量機器碼。
[0021] 所述的步驟(6)中的第二設定閾值長度為30個字。
[0022] 本發(fā)明與現(xiàn)有技術相比的優(yōu)點在于:
[0023] (1)本發(fā)明方法與現(xiàn)有技術方法相比,使嵌入式軟件在軌維護功能受原版嵌入式 軟件的限制非常小,能夠在原版嵌入式軟件的任意位置進行任意數(shù)量的修改;
[0024] (2)本發(fā)明方法與現(xiàn)有技術方法相比,使各版本在軌嵌入式軟件機器碼的變化區(qū) 域非常明顯且便于識別剝離,另外在正常功能需求變化的基礎上減小了機器碼的增量變 化,使在線維護的上注量、上注次數(shù)和存儲空間需求盡量小;
[0025] (3)本發(fā)明方法與現(xiàn)有技術方法相比,避免了在軌進行機器碼比對和復雜運算的 過程,通過遍歷鏈節(jié)信息即可實現(xiàn)嵌入式軟件重組與加載,實現(xiàn)效率高,同時還保留了航天