亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于增量鏈接的可回滾星載軟件在軌更新方法

        2015-08-10 09:20:00汪宏浩王慧泉金仲和
        關(guān)鍵詞:補(bǔ)丁代碼程序

        汪宏浩,王慧泉,金仲和

        (浙江大學(xué) 微小衛(wèi)星研究中心,浙江 杭州310027)

        早期星載軟件通常是固化的,只有部分長(zhǎng)壽命航天器有軟件在軌更新功能[1-2].隨著航天技術(shù)的發(fā)展,星載軟件復(fù)雜度越來(lái)越高,存在缺陷的可能性越來(lái)越大[3],這對(duì)于功能密度非常高的皮衛(wèi)星尤為突出.因此,需要為星載軟件提供在軌更新功能,修復(fù)在軌故障,延長(zhǎng)衛(wèi)星壽命[4-5].此外,在衛(wèi)星壽命末期通過(guò)軟件在軌更新可以擴(kuò)展衛(wèi)星功能,對(duì)新任務(wù)進(jìn)行在軌試驗(yàn)[6].

        與地面系統(tǒng)相比,星載軟件在軌更新面臨諸多挑戰(zhàn):如星地鏈路通信速率小[7]、通信時(shí)間有限,必須減少更新上注數(shù)據(jù)量;星載計(jì)算機(jī)的資源有限[8],且須持續(xù)提供服務(wù),因此不能執(zhí)行復(fù)雜的更新算法,要減少停機(jī)時(shí)間;衛(wèi)星在軌運(yùn)行時(shí)無(wú)法進(jìn)行人工維護(hù),而軟件在軌更新對(duì)衛(wèi)星穩(wěn)定運(yùn)行有影響[9],因此需要保證軟件在軌更新過(guò)程的可靠性,使之具有回滾到更新前穩(wěn)定狀態(tài)的能力;為了修復(fù)未知缺陷,按需完成新任務(wù),要擴(kuò)大軟件更新范圍,保證在軌更新的靈活性.地面系統(tǒng)軟件動(dòng)態(tài)更新技術(shù)[10-13]旨在降低停機(jī)時(shí)間,更新復(fù)雜度和上注數(shù)據(jù)量均較大,需要復(fù)雜的操作系統(tǒng)支持,因此不適用于星載軟件更新.

        目前也有對(duì)星載軟件在軌更新的相關(guān)研究.如將完整星載軟件上注至衛(wèi)星,重啟系統(tǒng)以完成更新[14-15],這類(lèi)方法對(duì)星上軟件無(wú)特殊要求,可以任意擴(kuò)充軟件功能,但更新數(shù)據(jù)量大,會(huì)長(zhǎng)時(shí)間占用遙控通道,且重啟會(huì)造成星上軟件中斷時(shí)間長(zhǎng).李磊霞等[6,16-17]將軟件劃分成多個(gè)模塊,利用操作系統(tǒng)加載技術(shù)將修改過(guò)的模塊作為補(bǔ)丁替換原模塊,達(dá)到更新的目的.這類(lèi)方法可以顯著地減少上注數(shù)據(jù)量,降低遙控通道占用時(shí)間,但需要星載操作系統(tǒng)有模塊加載功能,且需預(yù)先決定模塊可否更新,降低了更新操作的靈活性.

        軟件更新需要對(duì)舊代碼進(jìn)行修改得到新代碼,編譯生成二進(jìn)制目標(biāo)代碼并上注至衛(wèi)星.為了避免上注數(shù)據(jù)量過(guò)大,可將新舊版本目標(biāo)代碼的差異部分作為上注補(bǔ)丁,但源代碼的一個(gè)小改動(dòng)會(huì)使得目標(biāo)代碼變動(dòng)較大[18],導(dǎo)致上注數(shù)據(jù)量過(guò)大.Kiyohara等[19-21]研究對(duì)差異部分壓縮的算法,但解壓縮算法較復(fù)雜,不適用于星載計(jì)算機(jī).增量鏈接是編譯器為提高鏈接速度提供的一種優(yōu)化功能,目前大多數(shù)編譯器都已實(shí)現(xiàn)了該功能[22].增量鏈接可以使編譯器僅重排修改過(guò)的函數(shù)地址,而未修改函數(shù)的地址保持不變,從而降低軟件修改前、后內(nèi)存空間布局的差異.利用這一特性,提取修改前、后內(nèi)存空間差異部分制作補(bǔ)丁,星上根據(jù)補(bǔ)丁直接對(duì)原軟件內(nèi)存空間進(jìn)行修改,無(wú)需重啟即可完成軟件在軌更新操作.

        基于上述特性,結(jié)合某型號(hào)皮衛(wèi)星的任務(wù)需求,本文提出一種無(wú)需重啟、上注數(shù)據(jù)量小、可以任意修改或增減軟件功能,并可使軟件回滾至更新前狀態(tài)的星載軟件在軌更新方法.

        1 硬件平臺(tái)與軟件結(jié)構(gòu)劃分

        硬件平臺(tái)采用TI的C6000系列DSP作為中央處理器.該處理器包含定時(shí)器和DMA 模塊.為DSP配有2MB SDRAM 擴(kuò)展內(nèi)存,2 GB NAND Flash擴(kuò)展外存,使用FPGA 實(shí)現(xiàn)看門(mén)狗和邏輯資源擴(kuò)展.軟件存儲(chǔ)于NAND Flash 中,運(yùn)行時(shí)被加載到SDRAM 中.

        為了實(shí)現(xiàn)在軌更新,將星載軟件分為監(jiān)測(cè)程序和業(yè)務(wù)邏輯程序兩部分.監(jiān)測(cè)程序包含保證系統(tǒng)正常運(yùn)行的硬件驅(qū)動(dòng)程序(即驅(qū)動(dòng)DSP、SDRAM、NAND Flash和FPGA 的程序)和負(fù)責(zé)實(shí)施更新操作和監(jiān)控的模塊,監(jiān)測(cè)程序不能被更新;業(yè)務(wù)邏輯程序用于實(shí)現(xiàn)衛(wèi)星的各項(xiàng)功能,如星務(wù)管理、電源管理、姿態(tài)控制運(yùn)算等,該部分可以更新.具體結(jié)構(gòu)如圖1所示.

        系統(tǒng)上電時(shí)監(jiān)測(cè)程序首先自舉加載,然后初始化DSP、FPGA、SDRAM 和NAND Flash,保證系統(tǒng)正常運(yùn)行,接下來(lái)由更新操作模塊加載業(yè)務(wù)邏輯程序,執(zhí)行衛(wèi)星的各項(xiàng)功能.在業(yè)務(wù)邏輯程序加載后,監(jiān)測(cè)程序仍定時(shí)運(yùn)行,用于負(fù)責(zé)業(yè)務(wù)邏輯程序的在軌更新.

        為了保證監(jiān)測(cè)程序不被更新,鏈接階段將監(jiān)測(cè)程序和業(yè)務(wù)邏輯程序置于不同的內(nèi)存空間,實(shí)現(xiàn)物理隔離.監(jiān)測(cè)程序僅對(duì)業(yè)務(wù)邏輯程序所在的內(nèi)存空間實(shí)施更新操作.

        圖1 星載軟件結(jié)構(gòu)劃分Fig.1 On-board software structure design

        2 軟件在軌更新方法

        2.1 更新方法概述

        一次完整更新過(guò)程如圖2所示.首先在地面完成補(bǔ)丁制作;然后通過(guò)地面站將補(bǔ)丁上傳至衛(wèi)星,衛(wèi)星解析和校驗(yàn)補(bǔ)??;最后根據(jù)補(bǔ)丁信息對(duì)星上軟件進(jìn)行動(dòng)態(tài)修改.補(bǔ)丁分為2類(lèi),即更新補(bǔ)丁和回滾補(bǔ)丁,分別用于在軌更新軟件和使軟件回滾至更新前的狀態(tài).

        2.2 更新補(bǔ)丁制作

        首先在地面上對(duì)舊版本業(yè)務(wù)邏輯代碼(以下簡(jiǎn)稱(chēng)舊版本代碼)進(jìn)行修改得到新版本代碼;然后通過(guò)調(diào)試和測(cè)試保證新版本代碼可靠性,代碼編譯過(guò)程中采用增量鏈接形式,最后生成新版本代碼的目標(biāo)文件.

        圖2 軟件在軌更新過(guò)程Fig.2 Process of on-board software upgrade

        修改代碼可以歸納為修改函數(shù)、修改全局或靜態(tài)變量和修改復(fù)合類(lèi)型(如結(jié)構(gòu)體、共用體等),這些修改最終影響內(nèi)存空間.由于靜態(tài)變量和全局變量位于相同的內(nèi)存空間,修改靜態(tài)和全局變量統(tǒng)稱(chēng)為修改變量.修改函數(shù)影響內(nèi)存空間的.text段,修改變量會(huì)影響內(nèi)存空間的.data段和.bss段.由于復(fù)合類(lèi)型信息編譯后不保存至目標(biāo)文件,修改復(fù)合類(lèi)型會(huì)影響使用復(fù)合類(lèi)型定義的變量的大小以及函數(shù)對(duì)這些變量的解析,因此修改復(fù)合類(lèi)型可以歸結(jié)為修改函數(shù)或變量.在更新補(bǔ)丁制作過(guò)程中,須考慮代碼修改后函數(shù)和變量在內(nèi)存空間的變化,根據(jù)變化信息制作更新補(bǔ)丁,用于星上軟件的動(dòng)態(tài)修改.

        下面舉例說(shuō)明,假設(shè)舊版本代碼包含一組函數(shù)F={f1,f2,f3}和一組變量V={v1,v2}.其中f2調(diào)用f1、f3,f3調(diào)用f1;f1使用v2,f2、f3使用v1.為方便描述,令b(x)表示x 的目標(biāo)代碼,s(x)表示x的大小,a(x)表示x 的地址.函數(shù)f 被放置在.text段.若變量v 未初始化,則會(huì)放置在.bss段;若v 初始化,則放置在.data段.為了簡(jiǎn)化監(jiān)測(cè)程序更新操作,強(qiáng)制要求初始化每個(gè)變量v.這樣舊版本代碼編譯后,所有的b(f)緊挨著放置在.text段中,所有的b(v)緊挨著放置在.data段中.

        首先考慮對(duì)修改函數(shù)造成的內(nèi)存空間變化.修改函數(shù)可以分為修改現(xiàn)有函數(shù)、引入新增函數(shù)、刪除現(xiàn)有函數(shù)3種情況.下面舉例說(shuō)明增量鏈接情況下修改函數(shù)造成的內(nèi)存空間變化情況.

        當(dāng)修改現(xiàn)有函數(shù)時(shí),設(shè)修改函數(shù)f1得到f′1,s(b(f′1))可能出現(xiàn)如下情況.

        當(dāng)s(b(f′1))≤s(b(f1))時(shí),b(f′1)仍放置于b(f1)空間內(nèi),增量鏈接無(wú)需分配新地址,即a(f1′)=a(f1).多余的內(nèi)存空間記為空閑空間.

        當(dāng)s(b(f′1))>s(b(f1))時(shí),b(f′1)無(wú)法放置于b(f1)的空間內(nèi),增量鏈接為f′1分配新的地址,即把b(f′1)置于新空閑空間中.由于a(f′1)≠a(f1),而f2和f3調(diào)用f′1,需要對(duì)f2和f3中調(diào)用f′1的地址作相應(yīng)修改.原有f1的內(nèi)存空間記為空閑空間.上述函數(shù)內(nèi)存空間的變化如圖3所示.

        新增函數(shù)時(shí),假設(shè)新增了函數(shù)f4,且被f2、f3調(diào)用f4,由于f4是新引入的,因此f2、f3中須加入對(duì)f4的調(diào)用語(yǔ)句,從而導(dǎo)致f2、f3的內(nèi)存空間發(fā)生變化.f2、f3的內(nèi)存空間按照?qǐng)D3中的增量鏈接情形變化,而f4被分配新的內(nèi)存地址,b(f4)被放置在空閑空間中.

        當(dāng)刪除現(xiàn)有函數(shù)時(shí),假設(shè)刪除了函數(shù)f1,由于f1被f2、f3調(diào)用,需 要 在f2、f3中 刪 除 調(diào) 用f1的語(yǔ)句,從而導(dǎo)致f2、f3的內(nèi)存空間發(fā)生變化.f2、f3的內(nèi)存空間按照?qǐng)D3的情形變化,而b(f1)所在的空間記為空閑空間.

        考慮修改變量造成的內(nèi)存空間變化.修改變量可以分為變量值修改、變量類(lèi)型修改、引入新變量、刪除現(xiàn)有變量4種情況.變量值修改只修改變量?jī)?nèi)存空間內(nèi)容,不會(huì)影響內(nèi)存空間的布局,而其他3種情況可能會(huì)影響內(nèi)存空間的布局.

        當(dāng)修改變量值時(shí),設(shè)修改v1的值得到v′1,由于v1的類(lèi)型不變,則其大小不會(huì)改變,無(wú)需為v′1分配新的地址,即有a(v′1)=a(v1)和s(v′1)=s(v1),內(nèi)存中只有b(a(v1))被修改為b(a(v′1)).

        當(dāng)修改變量類(lèi)型時(shí),設(shè)修改v1的類(lèi)型得到v′1,不同類(lèi)型的大小可能不一樣,因此會(huì)出現(xiàn)如下情況.

        當(dāng)s(b(v′1))≤s(b(v1))時(shí),b(v′1)仍置于b(v1)空間中,增量鏈接無(wú)需為v′1分配新地址,即a(v′1)=a(v1).多 余 的 內(nèi) 存 空 間(大 小 為s(b(v1))-s(b(v′1)))記為空閑空間.

        當(dāng)s(b(v′1))>s(b(v1))時(shí),b(v′1)無(wú) 法 置 于b(v1)的空間內(nèi),增量鏈接為v′1分配新的地址,即把b(v′1)放置于新空閑空間中.由于f2和f3使用v′1,需要將f2和f3中v′1的地址改為a(v′1).原v1的內(nèi)存空間(大小為s(b(v1)))記為空閑空間.

        上述變量?jī)?nèi)存空間的變化如圖4所示.

        當(dāng)新增變量時(shí),設(shè)新增了變量v3,且f2、f3使用了v3;需要在f2、f3中加入使用v3的語(yǔ)句,從而導(dǎo)致f2、f3的內(nèi) 存 空 間 發(fā) 生 變 化.f2、f3的 內(nèi) 存 空間按照?qǐng)D3 的情形變化.v3被分配新內(nèi)存地址,b(v3)被放置在空閑空間中.

        圖3 增量鏈接下函數(shù)內(nèi)存空間的變化Fig.3 Function memory space change under incremental linking

        圖4 增量鏈接下變量?jī)?nèi)存空間的變化Fig.4 Function memory space change under incremental linking

        當(dāng)刪除現(xiàn)有變量時(shí),設(shè)刪除了現(xiàn)有變量v1,由于v1被f2、f3使用,需要?jiǎng)h除f2、f3中使用v1的語(yǔ)句,從而導(dǎo)致f2、f3的內(nèi)存空間發(fā)生變化.f2、f3的內(nèi)存空間按照?qǐng)D3的情形變化.b(v1)所在的空間記為空閑空間.

        最后考慮復(fù)合類(lèi)型定義修改導(dǎo)致內(nèi)存空間變化的情況.修改復(fù)合類(lèi)型會(huì)影響到使用復(fù)合類(lèi)型定義的變量的大小以及函數(shù)對(duì)這些變量的解析,因此修改復(fù)合類(lèi)型相當(dāng)于修改函數(shù)和修改變量,只需找出受影響的函數(shù)和變量,再按照對(duì)函數(shù)的修改和對(duì)變量的修改的處理方式進(jìn)行即可.

        上面分析了增量鏈接情況下對(duì)修改函數(shù)和變量造成的內(nèi)存空間變化,而星上軟件動(dòng)態(tài)修改的本質(zhì)是將星上軟件的內(nèi)存空間更改成地面修改后的軟件的內(nèi)存空間.因此,補(bǔ)丁需要包含代碼修改前、后的內(nèi)存空間的變化信息.上述變化可以用以下2類(lèi)操作描述.

        1)刪除操作:Remove(起始地址,大?。瑒h除操作后的空間記為無(wú)效.

        2)寫(xiě)入操作:Write(起始地址,大小,二進(jìn)制內(nèi)容),寫(xiě)入操作后的空間記為占用.

        例如圖3(a)~(c)的內(nèi)存空間變化可以描述如下.

        1)Remove(0xC1312311,0x73):刪 除 以0xC1312311為首地址的原有函數(shù)f1的目標(biāo)代碼b(f1).

        2)Write(0xC13124A9,0x91,b(f′1)):將b(f′1)置于以0xC13124A9為首地址的空閑空間內(nèi).

        3)Remove(0xC1312390,0x4):刪除f2中調(diào)用f1的地址.

        4)Write(0xC1312390,0x4,0xC13123A9):增加f2中調(diào)用f′1的地址.

        5)Remove(0xC1312424,0x4):刪除f3中調(diào)用f1的地址.

        6)Write(0xC1312424,0x4,0xC13123A9):增加f3中調(diào)用f′1的地址.

        更新補(bǔ)丁中只需包含上述操作信息,星上監(jiān)測(cè)程序收到補(bǔ)丁后按照上述操作修改內(nèi)存,即可完成更新.一個(gè)更新補(bǔ)丁中可以包含多個(gè)函數(shù)、變量以及復(fù)合類(lèi)型的修改,因此會(huì)包含多個(gè)Remove和Write操作.為了減小更新補(bǔ)丁的大小,將所有的Remove和Write操作放置在一起,為了方便解析以及保證可靠性,為Remove和Write操作的數(shù)據(jù)加入標(biāo)識(shí)頭和標(biāo)識(shí)尾以及CRC校驗(yàn).所設(shè)計(jì)的完整更新補(bǔ)丁的結(jié)構(gòu)如圖5所示.

        在圖5 的更新補(bǔ)丁中,有一組包含m 個(gè)Remove操作的數(shù)據(jù)占用6+6m 字節(jié),一組包含n 個(gè)Write操作的數(shù)據(jù)占用6+(6+)n 字節(jié),為二進(jìn)制目標(biāo)碼的平均占用字節(jié)數(shù).因此,一個(gè)更新補(bǔ)丁占用12+6m+(6+k)n字節(jié).

        圖5 完整更新補(bǔ)丁結(jié)構(gòu)Fig.5 Structure of updating patch

        在具體實(shí)施過(guò)程中,利用編譯器前端識(shí)別出所有修改過(guò)的函數(shù)、變量和自定義類(lèi)型的函數(shù)調(diào)用圖(Call Graph),可以得到受影響的函數(shù)和變量的符號(hào);利用這些符號(hào),依照ELF 文件格式[23],從可執(zhí)行文件中抽取出每個(gè)受影響的函數(shù)和變量的二進(jìn)制目標(biāo)代碼;將這些代碼與原目標(biāo)代碼進(jìn)行對(duì)比,可以獲取更新補(bǔ)丁中所需要的信息.

        2.3 回滾補(bǔ)丁制作

        回滾操作所做的是更新操作的逆操作,即修改內(nèi)存空間至最近一次更新前的狀態(tài),因此回滾補(bǔ)丁只需包含一個(gè)控制命令,即可以設(shè)計(jì)成衛(wèi)星的一個(gè)遙控指令.遙控指令占用10個(gè)字節(jié),具體的遙控指令設(shè)計(jì)見(jiàn)文獻(xiàn)[7].

        2.4 補(bǔ)丁上注

        由于更新補(bǔ)丁包含大量數(shù)據(jù)塊,需要通過(guò)地面站以注入數(shù)據(jù)的方式上注至衛(wèi)星.為了保證安全性和可靠性,需要約定數(shù)據(jù)幀格式[24].

        我國(guó)主要采用PCM 遙控標(biāo)準(zhǔn),上行碼速率一般為2 000bit/s[7,24],所以設(shè)計(jì)的注入數(shù)據(jù)幀長(zhǎng)為2 000/8=256字節(jié).一個(gè)補(bǔ)丁可能需要多個(gè)數(shù)據(jù)幀才能上注完畢,為了保證星上監(jiān)測(cè)程序可以按順序還原補(bǔ)丁,在數(shù)據(jù)幀格式中加入分組數(shù)和分組編碼.設(shè)計(jì)的注入數(shù)據(jù)幀格式如表1所示.

        表1 注入數(shù)據(jù)幀格式Tab.1 Format of injected data frame

        補(bǔ)丁上注的過(guò)程是將制作生成的補(bǔ)丁按照上述幀格式打包成一個(gè)或多個(gè)注入數(shù)據(jù)幀,通過(guò)地面站將注入數(shù)據(jù)幀發(fā)送至目標(biāo)衛(wèi)星.

        2.5 星上動(dòng)態(tài)修改

        為了避免數(shù)據(jù)接收引起星上任務(wù)長(zhǎng)時(shí)間中斷,星載計(jì)算機(jī)通過(guò)DMA 接收注入數(shù)據(jù).在接收到注入數(shù)據(jù)后,監(jiān)測(cè)程序根據(jù)表1的格式對(duì)數(shù)據(jù)幀進(jìn)行解析和校驗(yàn),在收取所有數(shù)據(jù)幀后,拼接補(bǔ)丁數(shù)據(jù)塊形成更新補(bǔ)丁.具體過(guò)程如圖6所示.

        圖6 解析和校驗(yàn)注入數(shù)據(jù)幀的過(guò)程Fig.6 Process of parsing and validating injected data frame

        監(jiān)測(cè)程序接下來(lái)要根據(jù)圖5的更新補(bǔ)丁結(jié)構(gòu)對(duì)補(bǔ)丁進(jìn)行解析和CRC 校驗(yàn).若解析失敗或CRC 校驗(yàn)不通過(guò),則需地面重傳該補(bǔ)丁.解析成功且CRC校驗(yàn)通過(guò)后,監(jiān)測(cè)程序可以得到一組Remove操作和一組Write操作.

        為了能回滾至更新前的狀態(tài),監(jiān)測(cè)程序需要在星上制作逆操作補(bǔ)丁,即為每個(gè)Remove操作生成對(duì)應(yīng)的Write操作,為每個(gè)Write操作生成對(duì)應(yīng)的Remove操作.把生成的Write和Remove操作按圖5的更新補(bǔ)丁格式組織成逆操作補(bǔ)丁,并保存至NAND Flash中.

        舉例說(shuō)明,操作Remove(0xC1312311,0x73)的 逆 操 作 是 Write(0xC1312311,0x73,bin(0xC1312311,0x73)),其 中bin(0xC1312311,0x73)是內(nèi)存空間0xC1312311~0xC1312383 的二進(jìn)制內(nèi)容,意思是將刪除的內(nèi)容寫(xiě)回至原內(nèi)存空間.操作Write(0xC13124A9,0x91,b(f′1))的逆操作是Remove(0xC13124A9,0x91),意思是將內(nèi)存空間中寫(xiě)入的內(nèi)容刪除.

        更新補(bǔ)丁中只包含Remove操作和Write操作,因此對(duì)星上軟件作動(dòng)態(tài)修改的方式很簡(jiǎn)單,即直接尋址到對(duì)應(yīng)的內(nèi)存空間,根據(jù)起始地址、大小進(jìn)行相應(yīng)的操作.具體的監(jiān)測(cè)程序應(yīng)用更新補(bǔ)丁和逆操作補(bǔ)丁的算法如下.

        在未執(zhí)行更新操作前,初始化當(dāng)前程序版本號(hào)ver為0.然后監(jiān)測(cè)程序獲取程序控制權(quán),根據(jù)更新補(bǔ)丁生成逆操作補(bǔ)丁并保存至NAND Flash中,再按順序執(zhí)行所有Remove操作和所有Write操作.最后將控制權(quán)交換給修改后的業(yè)務(wù)邏輯程序,并將ver加1.

        同樣地,需要執(zhí)行回滾操作時(shí),監(jiān)測(cè)程序從NAND Flash中找到最近一次保存的逆操作補(bǔ)丁,解析并按圖7所示的算法執(zhí)行,并將ver減1.在執(zhí)行逆操作時(shí)不需再生成逆操作的逆操作補(bǔ)丁,因?yàn)槟娌僮鞯哪娌僮骷礊橹暗母虏僮?

        2.6 出錯(cuò)情況應(yīng)對(duì)

        為了應(yīng)對(duì)程序跑飛和掉電重啟等出錯(cuò)情況,監(jiān)測(cè)程序保留每個(gè)更新補(bǔ)丁和逆操作補(bǔ)丁.

        若更新過(guò)程出現(xiàn)程序跑飛,導(dǎo)致看門(mén)狗將整星軟件復(fù)位或整星掉電重啟,則需要重新加載星載軟件.監(jiān)測(cè)程序會(huì)首先加載最原始版本的業(yè)務(wù)邏輯程序,并按更新順序應(yīng)用ver次更新補(bǔ)丁,將業(yè)務(wù)邏輯程序恢復(fù)到出錯(cuò)前的版本.若恢復(fù)過(guò)程中依然出現(xiàn)程序跑飛或整星重啟等問(wèn)題,則將ver減1,再執(zhí)行一次恢復(fù)過(guò)程,直到ver為0時(shí)為止.具體算法如下.

        3 試驗(yàn)驗(yàn)證

        基于某型號(hào)皮衛(wèi)星星載計(jì)算機(jī)平臺(tái),對(duì)所提出的軟件在軌更新方法進(jìn)行試驗(yàn),主要針對(duì)補(bǔ)丁大小、上注時(shí)間、更新操作執(zhí)行情況、回滾操作執(zhí)行情況和更新出的應(yīng)對(duì)情況進(jìn)行測(cè)試.

        雖然試驗(yàn)是在地面進(jìn)行,但為了模擬星地鏈路通信速率,補(bǔ)丁通過(guò)地面站以2 000bit/s的PCM遙控模式上注.

        3.1 更新和回滾操作試驗(yàn)

        原始版本業(yè)務(wù)邏輯程序的目標(biāo)代碼大小為275 kB,進(jìn)行了4 次版本修改,共得到4 個(gè)更新補(bǔ)丁.表2顯示了更新補(bǔ)丁應(yīng)用的試驗(yàn)結(jié)果,包含每個(gè)版本目標(biāo)代碼大小、更新補(bǔ)丁大小、補(bǔ)丁上注時(shí)間、代碼修改信息和補(bǔ)丁包含的Remove操作數(shù)m、Write操作數(shù)n和二進(jìn)制目標(biāo)碼的平均字節(jié)數(shù).

        在星上運(yùn)行版本4程序時(shí),上注回滾補(bǔ)丁(即發(fā)送用于回滾的遙控指令),星上業(yè)務(wù)邏輯程序成功回滾至版本3.

        表2的結(jié)果表明,該方法的更新和回滾操作功能正確,更新補(bǔ)丁大小遠(yuǎn)小于目標(biāo)代碼大小,補(bǔ)丁上注時(shí)間僅為秒級(jí).其中,即使版本4相對(duì)于版本3進(jìn)行了大量修改,補(bǔ)丁上注時(shí)間也僅為46s.與上注完整軟件的軟件在軌更新方法相比,采用該方法顯著減小了上注數(shù)據(jù)量,降低了上注時(shí)間.

        3.2 更新出錯(cuò)試驗(yàn)

        試驗(yàn)時(shí)星上運(yùn)行版本3程序.為了模擬各類(lèi)出錯(cuò)情況,對(duì)上注數(shù)據(jù)出現(xiàn)誤碼、更新的軟件存在缺陷使得程序跑飛、更新過(guò)程中整星斷電這3種出錯(cuò)情況進(jìn)行模擬.

        出錯(cuò)情況1:上注數(shù)據(jù)誤碼.在注入數(shù)據(jù)幀中隨機(jī)注入多比特錯(cuò)誤,再將注入錯(cuò)誤后的數(shù)據(jù)上注至衛(wèi)星,觀察其更新?tīng)顟B(tài).

        出錯(cuò)情況2:更新軟件存在缺陷使程序跑飛.故意修改版本4代碼使之隨意修改.text段而使程序跑飛,再將該版本的代碼制作成更新補(bǔ)丁上注至衛(wèi)星,觀察其更新?tīng)顟B(tài).

        出錯(cuò)情況3:在更新過(guò)程中整星斷電.在星上執(zhí)行更新操作的時(shí)候人為重啟整星.一般情況下為單次重啟.在實(shí)際中可能會(huì)出現(xiàn)更新至上一個(gè)版本時(shí)仍發(fā)生整星斷電的情況,為了更好地模擬實(shí)際情況,引入多次重啟操作,即在重啟后的系統(tǒng)恢復(fù)過(guò)程中,再次實(shí)施重啟操作,該重啟操作不斷實(shí)施20次,并觀察其更新?tīng)顟B(tài).

        上述出錯(cuò)試驗(yàn)的結(jié)果如表3所示.結(jié)果表明,該方法能夠成功應(yīng)對(duì)各種更新出錯(cuò)情況,滿(mǎn)足任務(wù)需求.

        表2 更新補(bǔ)丁應(yīng)用試驗(yàn)結(jié)果Tab.2 Experiment result of performing updating patch

        表3 更新出錯(cuò)試驗(yàn)結(jié)果Tab.3 Experiment result of exception simulations

        4 結(jié) 語(yǔ)

        本文基于編譯器的增量鏈接特性,提出一種無(wú)需重啟、上注數(shù)據(jù)量小、并且可回滾至更新前狀態(tài)的星載軟件在軌更新方法.該方法將更新操作歸結(jié)為內(nèi)存空間的寫(xiě)入操作和刪除操作,能夠隨意修改或增減星載軟件功能,簡(jiǎn)化了補(bǔ)丁的結(jié)構(gòu)和星上監(jiān)測(cè)程序的更新操作過(guò)程,并能夠回滾至更新之前的狀態(tài).試驗(yàn)結(jié)果表明,利用本文方法進(jìn)行更新,補(bǔ)丁上注時(shí)間短,更新操作正確,回滾操作有效,并成功應(yīng)對(duì)各種更新出錯(cuò)情況.本文方法高效可行,具有較好的安全性,可以應(yīng)用在包括皮衛(wèi)星在內(nèi)的各種航天器中.

        ):

        [1]包海超,楊根慶,李華旺.小衛(wèi)星星載軟件微內(nèi)核的設(shè)計(jì)[J].計(jì)算機(jī)工程,2008,34(9):81-82.BAO Hai-chao,YANG Gen-qing,LI Hua-wang.Micro kernel design of small satellite software[J].Computer Engineering,2008,34(9):81-82.

        [2]ZHANG Y,JIANG J.Bibliographical review on reconfigurable fault-tolerant control systems[J].Annual Reviews in Control,2008,32(2):229-252.

        [3]LEVESON N G.Role of software in spacecraft accidents[J].Journal of spacecraft and Rockets,2004,41(4):564-575.

        [4]張然峰,郝賢鵬,金龍旭,等.空間相機(jī)軟件在軌重注方法研究與實(shí)現(xiàn)[J].光機(jī)電信息,2011,28(6):30-34.ZHANG Ran-feng,HAO Xian-peng,JIN Long-xu,et al.Study and realization on method of software in space camera on-board reprogramming [J].OME Information,2011,28(6):30-34.

        [5]ROSA J,CRAVEIRO J,RUFINO J.Exploiting AIR composability towards spacecraft onboard software update[C]∥Actas do INForum-Simposio de Informatica.Braga:[s.n.],2010:675-686.

        [6]李磊霞,王宇,林寶軍,等.基于宏定義動(dòng)態(tài)鏈接的模塊化星載軟件升級(jí)方法研究[J].空間科學(xué)學(xué)報(bào),2010,30(2):180-184.LI Lei-xia,WANG Yu,LIN Bao-jun,et al.Research of software updating for micro-satellite in the orbit based on dynamic link with macros[J].Chinese Journal of Space Science,2010,30(2):180-184.

        [7]GJB 1198.1A-2004,航天器測(cè)控和數(shù)據(jù)管理第l部分:PCM 遙控[S].北京:國(guó)防科學(xué)技術(shù)工業(yè)委員會(huì),2004.

        [8]楊牧,王昊,張鈺,等.抗輻射加固的皮衛(wèi)星用實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)[J].浙江大學(xué)學(xué)報(bào):工學(xué)版,2011,45(6):1021-1026.YANG Mu,WANG Hao,ZHANG Yu,et al.Design of radiation-hardened real-time operating system for pico-satellite[J].Journal of Zhejiang University:Engineering Science,2011,45(6):1021-1026.

        [9]BUTLER R,PENNOTTI M.The evolution of software and its impact on complex system design in robotic spacecraft embedded systems [J].Procedia Computer Science,2013,16:747-756.

        [10]KIM D K,TILEVICH E,RIBBENS C J.Dynamic software updates for parallel high-performance applications[J].Concurrency and Computation:Practice and Experience,2011,23(4):415-434.

        [11]NEAMTIU I,HICKS M,STOYLE G,et al.Practical dynamic software updating for C[C]∥Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design and Implementation. New York:ACM,2006:72-83.

        [12]HICKS M,NETTLES S.Dynamic software updating[J].ACM Transactions on Programming Languages and Systems,2005,27(6):1049-1096.

        [13]KIM D K,TILEVICH E,RIBBENS C J.Shortening time-to-discovery with dynamic software updates for parallel high performance applications[R].Virginia Tech:Department Of Computer Science,2009.

        [14]STEIGER C,F(xiàn)URNELL R,MORALES J.OBSM operations automation through the use of on-board control procedures[C]∥Space OPS 2004Conference.Montreal:AIAA,2004:1-15.

        [15]徐偉,樸永杰.航天相機(jī)控制器在軌軟件重注[J].光電工程,2013,40(4):65-71.XU Wei,PIAO Yong-jie.Re-injection technology for software in aerospace camera controller on orbit[J].Opto-Electronic Engineering,2013,40(4):65-71.

        [16]安軍社,劉艷秋,孫輝先.軟件的動(dòng)態(tài)維護(hù)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2003,29(2):238-239.AN Jun-she,LIU Yan-qiu,SUN Hui-xian.Implementation of on-board software maintenance[J].Computer Engineering.2003,29(2):238-239.

        [17]THI A T,TSO K S,ALKALAI L,et al.On-board guarded software upgrading for space missions[C]∥Proceedings of the 18th Digital Avionics Systems Conference.St Louis:IEEE,1999:7.B.4-1-7.B.4-8.

        [18]LI W,ZHANG Y,YANG J,et al.UCC:update-conscious compilation for energy efficiency in wireless sensor networks[C]∥Proceedings of the 2007ACM SIGPLAN Conference on Programming Language Design and Implementation.New York:ACM,2007:383-393.

        [19]KIYOHARA R,MII S,MATSUMOTO M,et al.A new method of fast compression of program code for OTA updates in consumer devices[J].IEEE Transactions on Consumer Electronics,2009,55(2):812-817.

        [20]BELLAACHIA A,RASSAN I A.Efficiency of prefix and non-prefix codes in string matching over compressed databases on handheld devices[C]∥Proceedings of the 2005 ACM Symposium on Applied Computing.New York:ACM,2005:993-997.

        [21]BESZéDES á,F(xiàn)ERENC R,GYIMóTHY T,et al.Survey of code-size reduction methods[J].ACM Computing Surveys(CSUR),2003,35(3):223-267.

        [22]田祖?zhèn)?,楊恒伏,羅陽(yáng)旭.基于增量鏈接的PE文件信息隱藏技術(shù)研究[J].計(jì)算機(jī)科學(xué),2012,39(12):91-93.TIAN Zu-wei, YANG Heng-fu, LUO Yang-xu.Research of PE file information hiding based on incremental link[J].Computer Science,2012,39(12):91-93.

        [23]TIS C.Executable and linking format(ELF)specification[S].[S.l.]:Tool Interface Standard Committee,1995.

        [24]何熊文.一種通用遙控注入數(shù)據(jù)格式的設(shè)計(jì)與應(yīng)用[J].航天器工程,2008,17(1):94-99.HE Xiong-wen.Design and application of a common spacecraft telecommand data format [J].Spacecraft Engineering,2008,17(1):94-99.

        猜你喜歡
        補(bǔ)丁代碼程序
        試論我國(guó)未決羈押程序的立法完善
        健胃補(bǔ)丁
        學(xué)與玩(2018年5期)2019-01-21 02:13:06
        繡朵花兒當(dāng)補(bǔ)丁
        文苑(2018年18期)2018-11-08 11:12:30
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        補(bǔ)丁奶奶
        “程序猿”的生活什么樣
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        国产成人精品无码片区在线观看| 美女裸体无遮挡黄污网站| 五月激情狠狠开心五月| 少妇呻吟一区二区三区| 中文字幕精品一区二区三区| 成视频年人黄网站免费视频| 亚洲av福利无码无一区二区| 色妺妺在线视频| 中国产无码一区二区三区| 亚洲乱码中文字幕第一页| 91九色成人蝌蚪首页| 欧美成人aaa片一区国产精品| 中国亚洲一区二区视频| 爱情岛论坛亚洲永久入口口| 欧美野外疯狂做受xxxx高潮 | 日本xxxx色视频在线观看| 一边吃奶一边摸做爽视频| 欧美在线成人午夜网站| 国产女主播福利一区在线观看| 亚洲av色福利天堂久久入口| 亚洲综合激情另类小说区| 狠狠色噜噜狠狠狠888米奇视频| 国产精品99久久国产小草| 中文字幕丰满人妻有码专区| 开心五月婷婷激情综合网| 久久精品国产免费观看| 女人喷潮完整视频| 亚洲成a人片在线网站| 99久久国产一区二区三区| 国产女优一区在线观看| 亚洲乱亚洲乱妇无码麻豆| 国产无套护士在线观看| 人人妻人人澡av| 亚洲国产都市一区二区| 激情文学婷婷六月开心久久| 中文字幕一区日韩精品| 波多野结衣免费一区视频| 国产亚洲青春草在线视频| 在线国产激情视频观看| 国产午夜福利精品一区二区三区| 国产第19页精品|