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