本發(fā)明涉及星載計(jì)算機(jī)軟件在軌編程領(lǐng)域,特別涉及一種屬于大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法。
背景技術(shù):
:星載計(jì)算機(jī)軟件在軌編程功能作為星載計(jì)算機(jī)軟件的一項(xiàng)必備功能對(duì)于軟件在軌功能擴(kuò)展和除錯(cuò)具有重要意義。軟件在軌編程一般分為sram在軌編程和eeprom在軌編程,前者一般采用對(duì)部分模塊進(jìn)行修復(fù)的方式,可快速實(shí)現(xiàn)更改模塊軟件的在軌編程及在軌驗(yàn)證,但是若出現(xiàn)掉電則需要重新實(shí)施在軌編程;后者具有掉電保持的特點(diǎn),但是一般要在軌注入完整功能軟件,實(shí)施復(fù)雜,且對(duì)更改后的軟件在軌驗(yàn)證往往不夠充分。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提供一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法,實(shí)現(xiàn)在sram在軌編程基礎(chǔ)上實(shí)現(xiàn)對(duì)eeprom的在軌燒寫的目的。為了實(shí)現(xiàn)以上目的,本發(fā)明通過(guò)以下技術(shù)方案實(shí)現(xiàn):一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法,包含以下過(guò)程:步驟s1、通過(guò)ram在軌編程方式實(shí)現(xiàn)rom燒寫功能軟件和解壓縮及二次搬場(chǎng)軟件代碼的在軌注入和運(yùn)行。通過(guò)連續(xù)注數(shù)方式將所述rom燒寫功能軟件、解壓縮及二次搬場(chǎng)軟件代碼注入到軟件ram在軌編程區(qū),校驗(yàn)正確后,通過(guò)背景任務(wù)的鉤子函數(shù)調(diào)用rom燒寫功能軟件。步驟s2、在軌動(dòng)態(tài)生成燒寫鏡像文件;所述rom燒寫功能軟件查詢是否收到鏡像文件生成指令注數(shù);若已收到,首先初始化鏡像文件生成區(qū)及軟件燒寫過(guò)程參數(shù),生成解壓縮及二次搬場(chǎng)代碼燒寫文件、主功能軟件壓縮燒寫文件和在軌編程軟件壓縮燒寫文件,對(duì)燒寫鏡像文件進(jìn)行crc校驗(yàn)和長(zhǎng)度進(jìn)行驗(yàn)證。步驟s3、在軌動(dòng)態(tài)實(shí)現(xiàn)鏡像文件的冗余備份燒寫;所述rom燒寫功能軟件將所述燒寫鏡像文件信息通過(guò)遙測(cè)下傳地面,地面確認(rèn)所述燒寫鏡像文件各部分代碼長(zhǎng)度、校驗(yàn)正確無(wú)誤。通過(guò)注數(shù)啟動(dòng)第n份程序存儲(chǔ)器燒寫第n份燒寫鏡像文件;燒寫完成后生成第n份程序存儲(chǔ)器的校驗(yàn)并通過(guò)遙測(cè)下傳地面,地面確認(rèn)燒寫結(jié)果正確后可以啟動(dòng)下一份程序存儲(chǔ)器燒寫直至得到通過(guò)地面注數(shù)設(shè)置的鏡像文件的冗余備份的份數(shù)。步驟s4、由解壓縮代碼實(shí)現(xiàn)冗余備份軟件的解壓搬場(chǎng);計(jì)算機(jī)重新上電后,首先由prom區(qū)中的引導(dǎo)軟件搬場(chǎng)運(yùn)行解壓縮軟件,解壓縮軟件依次完成主功能軟件和在軌編程軟件部分的解壓搬場(chǎng),并對(duì)各功能軟件的解壓搬場(chǎng)結(jié)果進(jìn)行校驗(yàn),搬場(chǎng)校驗(yàn)正確后引導(dǎo)運(yùn)行各功能軟件。優(yōu)選地,所述鏡像文件通過(guò)采用改進(jìn)的霍夫曼壓縮算法生成;所述霍夫曼壓縮算法根據(jù)數(shù)據(jù)的出現(xiàn)頻率對(duì)該數(shù)據(jù)進(jìn)行重新編碼,編碼規(guī)則為出現(xiàn)頻率高的數(shù)據(jù)編碼長(zhǎng)度短,出現(xiàn)頻率低的數(shù)據(jù)編碼長(zhǎng)度長(zhǎng),根據(jù)該編碼對(duì)源碼數(shù)據(jù)進(jìn)行重新編碼生成壓縮文件。優(yōu)選地,燒寫鏡像文件包含:解壓縮代碼、主功能軟件壓縮代碼與在軌編程軟件壓縮代碼;其中解壓縮代碼為原始代碼,未經(jīng)壓縮,直接運(yùn)行,用于對(duì)主功能軟件壓縮代碼和在軌編程軟件壓縮代碼進(jìn)行解壓縮搬場(chǎng)并引導(dǎo)主功能軟件運(yùn)行。優(yōu)選地,所述解壓縮代碼、主功能軟件壓縮代碼與在軌編程軟件壓縮代碼分別包含:燒寫標(biāo)識(shí)字和代碼,燒寫標(biāo)識(shí)字包含該部分源代碼的crc校驗(yàn)和代碼長(zhǎng)度信息,用于燒寫過(guò)程及軟件搬場(chǎng)時(shí)的正確性驗(yàn)證。優(yōu)選地,所述軟件燒寫過(guò)程參數(shù)包含但不限于解壓縮及二次半場(chǎng)代碼crc校驗(yàn)、主功能軟件crc校驗(yàn)、在軌編程軟件crc校驗(yàn)、燒寫文件crc校驗(yàn)、燒寫文件長(zhǎng)度、燒寫狀態(tài)與軟件燒寫份數(shù)。優(yōu)選地,所述步驟s3進(jìn)一步包含以下過(guò)程:采用按份燒寫eeprom的方式,燒寫鏡像文件的冗余備份的份數(shù)由地面注數(shù)選擇,同時(shí)采用頁(yè)寫保護(hù)模式,每頁(yè)燒寫兩遍,第一遍燒寫鏡像文件,第二遍燒寫相應(yīng)的edac校驗(yàn)碼;每份eeprom燒寫完成后均進(jìn)行crc校驗(yàn),校驗(yàn)結(jié)果與燒寫前的鏡像文件結(jié)果一致則表明燒寫正確。本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):軟件燒寫代碼通過(guò)ram在軌編程方式注入并由后臺(tái)程序運(yùn)行。避免了軟件燒寫功能誤啟動(dòng),防止錯(cuò)誤燒寫;同時(shí)由于后臺(tái)運(yùn)行程序,從而不影響星載計(jì)算機(jī)軟件主功能軟件的正常運(yùn)行,保障了能源、姿態(tài)等的安全。與現(xiàn)有的ram在軌編程方式相比,可將在軌編程后的代碼燒寫到rom中,實(shí)現(xiàn)了在軌編程代碼的掉電保存,避免了計(jì)算機(jī)重新上電或復(fù)位后在軌編程代碼的丟失;與現(xiàn)有的rom在軌編程方式相比,由于待燒寫代碼可通過(guò)預(yù)先ram編程方式實(shí)現(xiàn)在軌驗(yàn)證,避免了對(duì)未經(jīng)在軌驗(yàn)證的代碼進(jìn)行在軌燒寫的風(fēng)險(xiǎn)。燒寫鏡像文件經(jīng)過(guò)無(wú)損數(shù)據(jù)壓縮方式生成,減小了代碼體積,節(jié)約了rom空間,提高了rom利用率,可用于衛(wèi)星長(zhǎng)期在軌運(yùn)行時(shí)的軟件燒寫。燒寫過(guò)程安全、可靠,壓縮燒寫及解壓搬場(chǎng)各階段均通過(guò)校驗(yàn)、冗余搬場(chǎng)、冗余存儲(chǔ)方式保證正確性;新程序出現(xiàn)功能缺陷時(shí),可快速實(shí)現(xiàn)原程序的恢復(fù)燒寫。附圖說(shuō)明圖1為本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法中的霍夫曼壓縮文件結(jié)構(gòu)示意圖;圖2為本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法中的eeprom中的軟件存儲(chǔ)結(jié)構(gòu)變化示意圖;圖3為本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法中的eeprom燒寫流程示意圖;圖4為本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法中的軟件搬場(chǎng)過(guò)程變化示意圖;圖5是本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法中的軟件燒寫過(guò)程狀態(tài)示意圖。具體實(shí)施方式以下結(jié)合附圖,通過(guò)詳細(xì)說(shuō)明一個(gè)較佳的具體實(shí)施例,對(duì)本發(fā)明做進(jìn)一步闡述。本發(fā)明一種大規(guī)模復(fù)雜結(jié)構(gòu)軟件的在軌燒寫與重載方法,包含以下過(guò)程:步驟s1、通過(guò)ram在軌編程方式實(shí)現(xiàn)rom燒寫功能軟件和解壓縮及二次搬場(chǎng)軟件代碼的在軌注入和運(yùn)行;通過(guò)連續(xù)注數(shù)方式將燒寫軟件、解壓縮及二次搬場(chǎng)軟件代碼注入到軟件ram在軌編程區(qū),校驗(yàn)正確后,通過(guò)背景任務(wù)的鉤子函數(shù)運(yùn)行燒寫功能軟件。背景任務(wù)預(yù)留的鉤子函數(shù)可作為eeprom燒寫功能軟件的入口,背景任務(wù)運(yùn)行該軟件時(shí)不影響主任務(wù)的正常功能,可保障整星的姿態(tài)能源安全。步驟s2:在軌動(dòng)態(tài)生成燒寫鏡像文件燒寫功能軟件查詢是否收到鏡像文件生成指令注數(shù)。若已收到,首先初始化鏡像文件生成區(qū)及相關(guān)參數(shù),依次生成解壓縮及二次搬場(chǎng)代碼燒寫文件、主功能軟件壓縮燒寫文件、在軌編程軟件壓縮燒寫文件,并對(duì)燒寫鏡像文件各組成部分進(jìn)行crc校驗(yàn)和長(zhǎng)度驗(yàn)證,確保燒寫鏡像文件正確無(wú)誤。鏡像文件生成過(guò)程采用改進(jìn)的霍夫曼壓縮算法。星載計(jì)算機(jī)軟件在軌運(yùn)行狀態(tài)一般由兩部分組成:主功能軟件和sram在軌編程區(qū)軟件。主功能軟件為射前燒寫在eeprom中的三模冗余軟件,計(jì)算機(jī)初始上電時(shí)由prom引導(dǎo)軟件搬場(chǎng)運(yùn)行,掉電可恢復(fù),是完成星載計(jì)算機(jī)任務(wù)的主要軟件配置項(xiàng);在軌編程區(qū)軟件是后續(xù)通過(guò)在軌編程方式注入的“補(bǔ)丁”軟件,掉電不可恢復(fù)。星載計(jì)算機(jī)軟件的存儲(chǔ)方式一般為多模冗余存儲(chǔ),隨著在軌編程規(guī)模的不斷增大,可能會(huì)出現(xiàn)eeprom存儲(chǔ)容量不夠的情況,因此需要考慮通過(guò)數(shù)據(jù)壓縮方式存儲(chǔ)以節(jié)約eeprom空間,燒寫內(nèi)容還應(yīng)包括解壓縮代碼。軟件壓縮采用改進(jìn)的霍夫曼壓縮算法,其根據(jù)每個(gè)數(shù)據(jù)的出現(xiàn)頻率對(duì)該數(shù)據(jù)進(jìn)行重新編碼,編碼規(guī)則為出現(xiàn)頻率高的數(shù)據(jù)編碼長(zhǎng)度短,出現(xiàn)頻率低的數(shù)據(jù)編碼長(zhǎng)度長(zhǎng),根據(jù)該編碼對(duì)源碼數(shù)據(jù)進(jìn)行重新編碼生成壓縮文件,霍夫曼壓縮文件結(jié)構(gòu)如圖1所示,霍夫曼壓縮數(shù)據(jù)格式包含:源數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)編碼表、編碼長(zhǎng)度表與壓縮位碼。eeprom燒寫后鏡像文件存儲(chǔ)結(jié)構(gòu)變化如圖2所示,在軌燒寫前,eeprom代碼存的儲(chǔ)鏡像文件為三份,每份僅由主功能軟件組成;在軌燒寫后,eeprom代碼存儲(chǔ)的鏡像文件由三部分組成:解壓縮代碼+主功能軟件壓縮代碼+在軌編程軟件壓縮代碼。其中解壓縮代碼為原始代碼,未經(jīng)壓縮,可直接運(yùn)行,用于對(duì)主功能軟件壓縮代碼和在軌編程軟件壓縮代碼進(jìn)行解壓縮搬場(chǎng)并引導(dǎo)主功能軟件運(yùn)行。鏡像文件中的每個(gè)組成部分均由燒寫標(biāo)識(shí)字+代碼組成,燒寫標(biāo)識(shí)字包含該部分源代碼的crc校驗(yàn)和代碼長(zhǎng)度信息,用于燒寫過(guò)程及軟件搬場(chǎng)時(shí)的正確性驗(yàn)證。步驟s3:在軌動(dòng)態(tài)實(shí)現(xiàn)鏡像文件的冗余備份燒寫燒寫鏡像文件生成后,即可進(jìn)行eeprom燒寫。為避免燒寫錯(cuò)誤,采用按份燒寫eeprom的方式,燒寫份數(shù)由地面注數(shù)選擇,同時(shí)采用頁(yè)寫保護(hù)模式,每頁(yè)燒寫兩遍,第一遍燒寫鏡像文件,第二遍燒寫相應(yīng)的edac校驗(yàn)碼。每份eeprom燒寫完成后均進(jìn)行crc校驗(yàn),校驗(yàn)結(jié)果與燒寫前的鏡像文件結(jié)果一致則表明燒寫正確。單份eeprom存儲(chǔ)區(qū)燒寫如圖3所示,置第一份eeprom起始地址、鏡像文件起始地址、置燒寫頁(yè)數(shù)為第1頁(yè);判斷本份eeprom是否燒寫完成。若未完成,且本份eeprom的第n頁(yè)是未燒寫,則打開(kāi)代碼存儲(chǔ)區(qū)eeprom鎖,將數(shù)據(jù)填充到對(duì)應(yīng)本頁(yè)eeprom中,對(duì)此頁(yè)的鏡像文件進(jìn)行燒寫。然后打開(kāi)edac校驗(yàn)碼區(qū)eeprom鎖,將edac校驗(yàn)碼填充到本頁(yè)eeprom,對(duì)本頁(yè)的edac校驗(yàn)碼進(jìn)行燒寫;之后將本份eeprom的燒寫頁(yè)數(shù)累加進(jìn)行判斷本份eeprom是否燒寫完成,完成則結(jié)束;未完成則繼續(xù)按照上述過(guò)程對(duì)需要燒寫的eeprom中的鏡像文件與edac校驗(yàn)碼進(jìn)行燒寫直至本份eeprom燒寫完成。燒寫功能軟件將燒寫鏡像文件信息通過(guò)遙測(cè)下傳到地面,地面接收并確認(rèn)文件各部分代碼長(zhǎng)度、校驗(yàn)正確無(wú)誤;則注數(shù)啟動(dòng)第n份程序存儲(chǔ)器燒寫;燒寫完成后生成第n份程序存儲(chǔ)器的校驗(yàn)并通過(guò)遙測(cè)下傳地面,地面確認(rèn)燒寫結(jié)果正確后可以啟動(dòng)下一份程序存儲(chǔ)器燒寫,共三份存儲(chǔ)。步驟s4:由解壓縮代碼實(shí)現(xiàn)冗余備份軟件的解壓搬場(chǎng)計(jì)算機(jī)重新上電后,首先由prom區(qū)中的引導(dǎo)軟件搬場(chǎng)運(yùn)行解壓縮軟件,解壓縮軟件依次完成各功能軟件(一般包括主功能軟件和在軌編程軟件兩部分)的解壓搬場(chǎng),并對(duì)各功能軟件的解壓搬場(chǎng)結(jié)果進(jìn)行校驗(yàn),搬場(chǎng)校驗(yàn)正確后引導(dǎo)運(yùn)行各功能軟件。如圖4所示,由prom引導(dǎo)軟件和解壓縮軟件實(shí)現(xiàn)二次解壓搬場(chǎng)。eeprom中的軟件存儲(chǔ)結(jié)構(gòu)發(fā)生變化引起軟件搬場(chǎng)運(yùn)行方式變化。prom引導(dǎo)軟件僅負(fù)責(zé)搬場(chǎng)運(yùn)行解壓縮軟件,由解壓縮軟件依次實(shí)現(xiàn)對(duì)主功能軟件與在軌編程軟件的解壓縮搬場(chǎng)與引導(dǎo)運(yùn)行。軟件解壓縮過(guò)程為壓縮過(guò)程的逆向過(guò)程,根據(jù)壓縮文件信息生成解壓縮編碼表,并實(shí)現(xiàn)對(duì)壓縮文件的解壓還原。軟件解壓搬場(chǎng)過(guò)程中根據(jù)燒寫標(biāo)識(shí)字對(duì)解壓后的軟件代碼進(jìn)行校驗(yàn)判斷,正確后可引導(dǎo)運(yùn)行,否則產(chǎn)生冷復(fù)位。在本實(shí)施例中,a.通過(guò)連續(xù)地址注數(shù)方式在軌注入eeprom燒寫功能軟件和解壓縮軟件,啟動(dòng)sram在軌編程,通過(guò)主功能軟件的背景任務(wù)中預(yù)留的鉤子函數(shù)運(yùn)行eeprom燒寫功能軟件;本例中eeprom配置1mb,軟件按三模冗余存儲(chǔ)方式,每份占用340kb,主功能軟件約338kb,在軌編程區(qū)軟件約55kb。表1為鏡像文件燒寫前校驗(yàn)信息1變量名1值1源碼101_3c:解壓縮代碼校驗(yàn)35h0×35201_3c:壓縮包1校驗(yàn)cah0×ca301_3c:壓縮包2校驗(yàn)8ah0×8a401_3c:燒寫文件校驗(yàn)cah0×ca501_3c:燒寫后的文件校驗(yàn)00h0×00601_3c:2.06’壓縮代碼長(zhǎng)度2642770×040855701_3c:在軌編程區(qū)壓縮代碼長(zhǎng)度341220×00854a801_3c:燒寫文件總長(zhǎng)度3118240×04c210b.注數(shù)生成燒寫鏡像文件,鏡像文件生成后,通過(guò)遙測(cè)觀察鏡像文件校驗(yàn)信息,確認(rèn)鏡像文件中各組成部分的代碼長(zhǎng)度和校驗(yàn)與地面仿真結(jié)果一致;鏡像文件生成后的狀態(tài)信息如表1所示,其中包含鏡像文件各組成部分的軟件校驗(yàn)信息和長(zhǎng)度信息。表2為鏡像文件燒寫后校驗(yàn)信息1變量名1值1源碼101_3c:解壓縮代碼校驗(yàn)35h0×35201_3c:壓縮包1校驗(yàn)cah0×ca301_3c:壓縮包2校驗(yàn)8ah0×8a401_3c:燒寫文件校驗(yàn)cah0×ca501_3c:燒寫后的文件校驗(yàn)cah0×ca601_3c:2.06’壓縮代碼長(zhǎng)度2642770×040855701_3c:在軌編程區(qū)壓縮代碼長(zhǎng)度341220×00854a801_3c:燒寫文件總長(zhǎng)度3118240×04c210c.注數(shù)eeprom燒寫份數(shù)并啟動(dòng)eeprom在軌燒寫,待燒寫完成后,通過(guò)遙測(cè)觀察鏡像文件燒寫后的校驗(yàn)信息與燒寫前是否一致,確認(rèn)該份eeprom燒寫有效,軟件燒寫完成后的狀態(tài)信息如表2所示,圖中可見(jiàn)燒寫后的eeprom校驗(yàn)信息與燒寫前的鏡像文件校驗(yàn)信息一致。d.重復(fù)步驟a~c,繼續(xù)完成另外兩份eeprom的燒寫。e.三份eeprom存儲(chǔ)區(qū)均燒寫完成后,計(jì)算機(jī)即可重新上電,上電過(guò)程首先由prom引導(dǎo)軟件搬場(chǎng)運(yùn)行解壓縮軟件,解壓縮軟件依次完成主功能軟件和在軌編程軟件的解壓搬場(chǎng),搬場(chǎng)校驗(yàn)正確后引導(dǎo)運(yùn)行主功能軟件(在軌編程軟件由主功能軟件中的相關(guān)功能模塊調(diào)用運(yùn)行)。f.鏡像文件生成及燒寫過(guò)程狀態(tài)字如圖5所示:數(shù)值0x55表示鏡像文件正在生成;數(shù)值0xaa表示鏡像文件已生成;數(shù)值n(n為1、2、3)表示正在燒寫第n份eeprom存儲(chǔ)區(qū);數(shù)值24n表示第n份eeprom存儲(chǔ)區(qū)已燒寫完成。盡管本發(fā)明的內(nèi)容已經(jīng)通過(guò)上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見(jiàn)的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來(lái)限定。當(dāng)前第1頁(yè)12