專利名稱:一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機技術(shù)領(lǐng)域,具體涉及一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法及其系統(tǒng)。
背景技術(shù):
由于外太空的惡劣環(huán)境,微小衛(wèi)星系統(tǒng)中的存儲器件有可能會受損壞,從而會導致部分程序無法正常運行,這種情況下,如果不更新這些程序就有可能導致整個衛(wèi)星無法正常運行,嚴重的可能導致整顆衛(wèi)星報廢。軟件在軌更新是衛(wèi)星在軌運行過程中,發(fā)現(xiàn)任務(wù)軟件錯誤或漏洞后,以對其規(guī)避的軟件新版本替換原始版本的補救措施。故軟件在軌更新不僅是衛(wèi)星系統(tǒng)的客觀要求之一,也是微小衛(wèi)星綜合電子技術(shù)的必然演進方向。
目前,國內(nèi)外很多衛(wèi)星型號的星載計算機軟件在軌更新的對象顆粒度較粗,如軟件整體或分系統(tǒng)軟件配置項。在目前的衛(wèi)星系統(tǒng)代碼的更新,需要借助于系統(tǒng)的bootloader程序重新燒寫全部的系統(tǒng)映象,上電重新啟動程序,從而完成一次代碼的更新。該做法的優(yōu)點是首先,更新操作簡單易行。這種做法不需要在原有任務(wù)軟件的基礎(chǔ)上引入復雜的動態(tài)更新程序支持在軌更新;其次,更新的過程對系統(tǒng)的額外開銷小。雖然,這種方法實現(xiàn)簡單,易于操作,但是這種方法有如下缺點首先,更新速度慢,成功率低;每次進行軟件在軌更新均須向星上注入軟件整體或整個配置項。尤其是在有效更新的代碼只占更新軟件或配置項的一小部分時,但是仍需要更新全部的應(yīng)用程序或者配置項,在星地鏈路通信速度低的,誤碼率較高的情況下,更新的速度慢,成功率低。其次,浪費星地間鏈路的資源;由于星地間通信的有效速度較低,星地間的通信資源有限,在有效更新代碼占更新軟件或配置項的比例極小時,嚴重的浪費和占用星地資源,影響到其他模塊對星地通信的使用。再次,更新導致程序運行的中斷;由于代碼更新借助于bootloader程序,需要通過重新燒寫并再次上電重啟系統(tǒng),系統(tǒng)運行不可避免的需要中斷。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)所存在的上述技術(shù)缺陷,本發(fā)明提供了一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,在更新過程中能夠保證其余程序正常運行,且更新速度快。一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,包括如下過程(I)在微小衛(wèi)星系統(tǒng)中構(gòu)建模塊調(diào)用表,所述的模塊調(diào)用表存儲有每個模塊在系統(tǒng)內(nèi)存中的區(qū)域地址;(2)獲取微小衛(wèi)星系統(tǒng)中故障模塊的ID,從本地找出與該ID對應(yīng)的模塊,并將該模塊的代碼編譯成可執(zhí)行文件;(3)將所述的可執(zhí)行文件上傳至微小衛(wèi)星系統(tǒng)中;根據(jù)可執(zhí)行文件中的加載地址信息將可執(zhí)行文件加載至系統(tǒng)內(nèi)存中相應(yīng)的空閑區(qū)域;(4)根據(jù)可執(zhí)行文件在內(nèi)存中的區(qū)域地址,更新模塊調(diào)用表中故障模塊的區(qū)域地址。所述的步驟(2)中,將模塊的代碼編譯成可執(zhí)行文件的過程為首先,在本地的系統(tǒng)源代碼工程目錄中的CMD文件內(nèi)新定義一塊內(nèi)存區(qū)域;然后,根據(jù)新定義內(nèi)存區(qū)域的地址,更新模塊的加載地址信息;最后,將更新后的模塊編譯成可執(zhí)行文件。優(yōu)選地,所述的步驟(4)中,當模塊調(diào)用表更新完成后,將所述的模塊調(diào)用表和可執(zhí)行文件保存至系統(tǒng)的Flash存儲器中;能夠保證微小衛(wèi)星系統(tǒng)意外重啟情況下,仍能執(zhí)行更新后的模塊。 一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新系統(tǒng),包括調(diào)用表構(gòu)建單元,用于根據(jù)每個模塊在微小衛(wèi)星系統(tǒng)內(nèi)存中的區(qū)域地址,構(gòu)建模塊調(diào)用表;接收單元,用于接收獲取微小衛(wèi)星系統(tǒng)中故障模塊的ID ;查找編譯單元,用于從本地找出與所述的ID對應(yīng)的模塊,并將該模塊的代碼編譯成可執(zhí)行文件;上傳單元,用于將所述的可執(zhí)行文件上傳至微小衛(wèi)星系統(tǒng)中;加載單元,用于根據(jù)可執(zhí)行文件中的加載地址信息將可執(zhí)行文件加載至微小衛(wèi)星系統(tǒng)內(nèi)存中相應(yīng)的空閑區(qū)域;更新單元,用于根據(jù)可執(zhí)行文件在內(nèi)存中的區(qū)域地址,更新所述的模塊調(diào)用表中故障模塊的區(qū)域地址。本發(fā)明通過構(gòu)建模塊調(diào)用表采用局部更新的方式,有效的解決了現(xiàn)有技術(shù)更新速度慢的問題,由于大大減少了上傳文件的大小,故極大的提高了星地間鏈路資源的利用率,同時能夠保證其余程序正常運行。
圖I為微小衛(wèi)星系統(tǒng)的結(jié)構(gòu)示意圖。圖2為模塊調(diào)用表與系統(tǒng)內(nèi)存區(qū)的映射示意圖。圖3為模塊存儲表與內(nèi)存區(qū)以及存儲區(qū)的映射示意圖。圖4為本發(fā)明更新方法的步驟流程圖。
具體實施例方式為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實施方式
對本發(fā)明的技術(shù)方案進行詳細說明。本實施例通過引入一個通用的微小衛(wèi)星系統(tǒng)實例來介紹本發(fā)明方法的應(yīng)用,圖I是一個基于處理器的微小衛(wèi)星系統(tǒng)的結(jié)構(gòu)框架示意圖,處理器通過總線耦合至隨機存儲器RAM,非易失性存儲器NAND FLASH。輸入輸出I/O設(shè)備也可以耦合至總線,I/O設(shè)備包括鍵盤,鼠標,串行總線,顯示器等。在整個微小衛(wèi)星系統(tǒng)中,RAM用于存儲處理器運行期間執(zhí)行的代碼指令;NANDFLASH用于存儲系統(tǒng)的代碼以及用戶數(shù)據(jù)。本實施方式中,NANDFLASH內(nèi)包含模塊調(diào)用表,系統(tǒng)執(zhí)行代碼,故障模塊的代碼,模塊存儲表以及其他更新代碼。對于整個系統(tǒng)而言,故障模塊的加載更新,是通過更新相對應(yīng)的模塊調(diào)用表,模塊存儲表,加載模塊代碼實現(xiàn)的。模塊調(diào)用表,模塊存儲表和隨機存儲器,非易失性存儲器的映射關(guān)系是實現(xiàn)更新的基礎(chǔ)。模塊、模塊在RAM以及模塊在NAND FLASH的中的映射關(guān)系如圖3所示。模塊存儲表包含了模塊ID、模塊需加載至RAM的起始地址、模塊存儲在NANDFLASH的地址以及模塊的大小。
本實施方式中,微小衛(wèi)星系統(tǒng)要實現(xiàn)局部代碼更新需應(yīng)用一種局部代碼更新系統(tǒng),其包括調(diào)用表構(gòu)建單元、接收單元、查找編譯單元、上傳單元、加載單元和更新單元;其中,調(diào)用表構(gòu)建單元、加載單元和更新單元均在微小衛(wèi)星系統(tǒng)中通過編程實現(xiàn),接收單元和上傳單元可由一般的無線通訊設(shè)備實現(xiàn)。如圖4所示,依據(jù)模塊和RAM的映射關(guān)系,本實施方式首先利用調(diào)用表構(gòu)建單元在微小衛(wèi)星系統(tǒng)中構(gòu)造了一種模塊調(diào)用表,模塊調(diào)用表和系統(tǒng)內(nèi)存區(qū)的映射關(guān)系如圖2所示,其包含模塊調(diào)用的內(nèi)存區(qū)入口地址,系統(tǒng)可通過模塊調(diào)用表執(zhí)行對應(yīng)的模塊代碼。模塊調(diào)用表在構(gòu)建之后,需要存儲在NAND FLASH中,在系統(tǒng)執(zhí)行更新模塊代碼之前,加載模塊調(diào)用表至RAM中,并在模塊調(diào)用表被修改之后,更新系統(tǒng)的模塊調(diào)用表并存儲到NAND FLASH中。構(gòu)建完模塊調(diào)用表后,若微小衛(wèi)星系統(tǒng)的RAM某塊區(qū)域突然遭受損壞導致該區(qū)域的模塊代碼丟失,則地面可利用獲取接收單元微小衛(wèi)星系統(tǒng)中故障模塊的ID ;然后,利用查找編譯單元從本地找出與該ID對應(yīng)的模塊,在本地的系統(tǒng)源代碼工程目錄中的CMD文件內(nèi)新定義一塊內(nèi)存區(qū)域,根據(jù)新定義內(nèi)存區(qū)域的地址,更新模塊的加載地址信息;最后,將更新后的模塊編譯成可執(zhí)行文件通過上傳單元上傳至微小衛(wèi)星系統(tǒng)中。微小衛(wèi)星系統(tǒng)接收到可執(zhí)行文件后,首先,根據(jù)可執(zhí)行文件中的加載地址信息利用加載單元將可執(zhí)行文件加載至系統(tǒng)RAM中相應(yīng)的空閑區(qū)域;然后,根據(jù)可執(zhí)行文件在RAM中的區(qū)域地址,利用更新單元更新模塊調(diào)用表中故障模塊的區(qū)域地址;具體操作過程如下(I)從NAND FLASH加載模塊調(diào)用表、模塊存儲表以及模塊代碼和其他系統(tǒng)執(zhí)行代碼至RAM中;(2)啟動加載單元,根據(jù)可執(zhí)行文件中的加載地址信息將接收到的可執(zhí)行文件加載到RAM中相應(yīng)的空閑區(qū)域。(3)啟動更新單元,根據(jù)可執(zhí)行文件在RAM中的區(qū)域地址修改故障模塊在模塊調(diào)用表中的模塊入口地址,使更新的模塊調(diào)用表的模塊調(diào)用入口指向RAM中的可執(zhí)行文件。(4)將可執(zhí)行文件保存到NAND FLASH中,以便于系統(tǒng)在掉電重啟后,更新后的模塊代碼可以自動加載,同時更新在RAM中的模塊存儲表。(5)保存更新后的模塊調(diào)用表到NAND FLASH中,使得系統(tǒng)在掉電重啟或者模塊調(diào)用表損壞后,可以重新加載模塊調(diào)用表。(6)保存修改后的模塊存儲表到NAND FLASH中,使得系統(tǒng)在掉電重啟或者模塊存儲表損壞后,可以重新加載模塊存儲表。(7)更新完成。
在星地鏈路有效傳輸數(shù)據(jù)約為70Kbyte/min的條件下,采用本實施方式模塊局部更新方法與傳統(tǒng)整體更新方法,更新系統(tǒng)軟件大小均約為700Kb,其中一個故障模塊的大小為10Kb,兩種方法的更新數(shù)據(jù)如表I所示表I
權(quán)利要求
1.一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,包括如下步驟 (1)在微小衛(wèi)星系統(tǒng)中構(gòu)建模塊調(diào)用表,所述的模塊調(diào)用表存儲有每個模塊在系統(tǒng)內(nèi)存中的區(qū)域地址; (2)獲取微小衛(wèi)星系統(tǒng)中故障模塊的ID,從本地找出與該ID對應(yīng)的模塊,并將該模塊的代碼編譯成可執(zhí)行文件; (3)將所述的可執(zhí)行文件上傳至微小衛(wèi)星系統(tǒng)中;根據(jù)可執(zhí)行文件中的加載地址信息將可執(zhí)行文件加載至系統(tǒng)內(nèi)存中相應(yīng)的空閑區(qū)域; (4)根據(jù)可執(zhí)行文件在內(nèi)存中的區(qū)域地址,更新模塊調(diào)用表中故障模塊的區(qū)域地址。
2.根據(jù)權(quán)利要求I所述的用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,其特征在于所述的步驟(2)中,將模塊的代碼編譯成可執(zhí)行文件的過程為首先,在本地的系統(tǒng)源代碼工程目錄中的CMD文件內(nèi)新定義一塊內(nèi)存區(qū)域;然后,根據(jù)新定義內(nèi)存區(qū)域的地址,更新模塊的加載地址信息;最后,將更新后的模塊編譯成可執(zhí)行文件。
3.根據(jù)權(quán)利要求I所述的用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,其特征在于所述的步驟(4)中,當模塊調(diào)用表更新完成后,將所述的模塊調(diào)用表和可執(zhí)行文件保存至系統(tǒng)的Flash存儲器中。
4.一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新系統(tǒng),其特征在于,包括 調(diào)用表構(gòu)建單元,用于根據(jù)每個模塊在微小衛(wèi)星系統(tǒng)內(nèi)存中的區(qū)域地址,構(gòu)建模塊調(diào)用表; 接收單元,用于接收獲取微小衛(wèi)星系統(tǒng)中故障模塊的ID ; 查找編譯單元,用于從本地找出與所述的ID對應(yīng)的模塊,并將該模塊的代碼編譯成可執(zhí)行文件; 上傳單元,用于將所述的可執(zhí)行文件上傳至微小衛(wèi)星系統(tǒng)中; 加載單元,用于根據(jù)可執(zhí)行文件中的加載地址信息將可執(zhí)行文件加載至微小衛(wèi)星系統(tǒng)內(nèi)存中相應(yīng)的空閑區(qū)域; 更新單元,用于根據(jù)可執(zhí)行文件在內(nèi)存中的區(qū)域地址,更新所述的模塊調(diào)用表中故障模塊的區(qū)域地址。
全文摘要
本發(fā)明公開了一種用于微小衛(wèi)星系統(tǒng)的局部代碼更新方法,包括(1)構(gòu)建模塊調(diào)用表;(2)獲取故障模塊ID;(3)根據(jù)ID從本地找出相應(yīng)的模塊,并對其編譯;(4)上傳編譯得到的可執(zhí)行文件;(5)將可執(zhí)行文件加載至RAM中;(6)更新模塊調(diào)用表;本發(fā)明還公開了實現(xiàn)上述方法的更新系統(tǒng)。本發(fā)明通過構(gòu)建模塊調(diào)用表采用局部更新的方式,有效的解決了現(xiàn)有技術(shù)更新速度慢的問題,由于大大減少了上傳文件的大小,故極大的提高了星地間鏈路資源的利用率,同時能夠保證其余程序正常運行。
文檔編號G06F9/445GK102880494SQ201210362798
公開日2013年1月16日 申請日期2012年9月26日 優(yōu)先權(quán)日2012年9月26日
發(fā)明者李紅, 楊國青, 陳浩杰, 程士慶, 李坤, 吳朝暉 申請人:浙江大學