適用于8051微控制器的航天嵌入式軟件在軌重注方法
【專利摘要】適用于8051微控制器的航天嵌入式軟件在軌重注方法,涉及航天計(jì)算機(jī)軟件在軌重注技術(shù),解決現(xiàn)有8051微控制器軟件在執(zhí)行過程中由于存在中斷向量地址無法修改,進(jìn)而系統(tǒng)無法實(shí)現(xiàn)在軌軟件重注的問題,該方法將PROM、EEPROM以及RAM統(tǒng)一編址,并采用中斷重映射的方法,使應(yīng)用程序可定位于任意起始地址,RPOM中保存了在軌固化軟件,不可更改。該軟件包含有接收遙測遙控接口軟件上注指令和數(shù)據(jù),并將數(shù)據(jù)寫入EEPROM的功能。EEPROM用于保存上注軟件數(shù)據(jù),可在軌更改;本發(fā)明在軟件上設(shè)計(jì)中斷重映射代碼,根據(jù)當(dāng)前軟件版本跳轉(zhuǎn)至相應(yīng)應(yīng)用軟件中斷向量,實(shí)現(xiàn)多版本軟件在8051內(nèi)核微控制器內(nèi)的共存。
【專利說明】適用于8051微控制器的航天嵌入式軟件在軌重注方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及航天計(jì)算機(jī)軟件在軌重注技術(shù),具體涉及一種適用于8051內(nèi)核微控制器的嵌入式系統(tǒng)軟件在軌重注方法。
【背景技術(shù)】
[0002]為滿足越來越復(fù)雜的衛(wèi)星應(yīng)用需求,星載計(jì)算機(jī)處理器的性能及功能也在不斷提高和增強(qiáng),SPARC、80x86、ARM7、ARM9、PowerPC等高性能處理器逐漸成為衛(wèi)星控制系統(tǒng)的核心器件。這些處理器提供了異常靈活的配置方式為軟件的在軌更新提供了硬件基礎(chǔ)。
[0003]而傳統(tǒng)的基于8051微控制器軟件系統(tǒng)只能采用靜態(tài)鏈接的方式,硬件上中斷向量地址也無法修改,造成這類系統(tǒng)不易于實(shí)現(xiàn)在軌軟件重注。但基于8051內(nèi)核的宇航級抗輻照微控制器(如80C32E)在高可靠、需在軌長期加電運(yùn)行的設(shè)備中仍具有其獨(dú)特的優(yōu)勢:可靠性高,功耗低,成本低,系統(tǒng)復(fù)雜度低,一般應(yīng)用于整星供配電系統(tǒng)、整星主動熱控控制器、航天相機(jī)熱控控制器等。這類系統(tǒng)一般功能較為單一,計(jì)算性能要求較低,但可靠性要求較高,需在軌不間斷連續(xù)運(yùn)行直至衛(wèi)星壽命終結(jié)。
[0004]這類系統(tǒng)或單機(jī)雖功能不復(fù)雜,但也應(yīng)具備在軌更新軟件的能力,以應(yīng)對衛(wèi)星在軌各種突發(fā)故障情況,如針對在軌不可預(yù)料工況修改控溫策略,或修改軟件bug等,且不能中斷當(dāng)前功能正常代碼的運(yùn)行。同時,由于該功能可通過遙測遙控接口實(shí)現(xiàn)遠(yuǎn)程代碼注入和修改,避免了地面軟件調(diào)試過程中對單機(jī)的反復(fù)拆裝,大大降低了設(shè)備硬件損壞的風(fēng)險,簡化了地面測試流程。
[0005]現(xiàn)有發(fā)明專利《一種星載計(jì)算機(jī)軟件在軌更新方法》僅對系統(tǒng)更新過程進(jìn)行了功能性描述,無法應(yīng)用于具體硬件實(shí)現(xiàn)?,F(xiàn)有發(fā)明專利《一種星載嵌入式軟件模塊在軌更新方法》僅適用于運(yùn)行加載了文件系統(tǒng)以及可動態(tài)加載軟件模塊的操作系統(tǒng),無法應(yīng)用于無操作系統(tǒng)的8051軟件運(yùn)行環(huán)境。
【發(fā)明內(nèi)容】
[0006]本發(fā)明為解決現(xiàn)有8051微控制器軟件在執(zhí)行過程中由于存在中斷向量地址無法修改,進(jìn)而系統(tǒng)無法實(shí)現(xiàn)在軌軟件重注的問題,提供一種適用于8051微控制器的航天嵌入式軟件在軌重注方法。
[0007]適用于8051微控制器的航天嵌入式軟件在軌重注方法,該方法包括上注過程和切換過程;
[0008]上注過程:
[0009]系統(tǒng)上電后進(jìn)入系統(tǒng)硬件復(fù)位中斷向量(0x0000);依次執(zhí)行PR0M中的中斷重映射代碼中復(fù)位中斷處理函數(shù);固化應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理函數(shù),清除RAM內(nèi)容,并標(biāo)志當(dāng)前軟件版本變量為固化軟件;進(jìn)入固化應(yīng)用軟件正常工作;
[0010]當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)的系統(tǒng)硬件中斷向量地址;并執(zhí)行中斷重映射代碼中相應(yīng)的中斷處理代碼,保存當(dāng)前程序運(yùn)行現(xiàn)場,判斷當(dāng)前軟件版本變量是否為固化軟件;如果是,則執(zhí)行固化應(yīng)用軟件中斷向量代碼以及固化應(yīng)用軟件中斷處理代碼,完成中斷處理;如果否,則為錯誤狀態(tài);通過PROM的遙測遙控軟件接口接收到重注軟件指令和數(shù)據(jù),經(jīng)校驗(yàn)后寫入EEPROM,并將上注軟件數(shù)據(jù)校驗(yàn)和寫入EEPROM起始地址,上注結(jié)束;
[0011]切換過程:
[0012]當(dāng)PROM接收到切換至上注軟件指令時,將EEPROM中上注軟件數(shù)據(jù)校驗(yàn)和與保存在EEPROM中的校驗(yàn)和比較,如果校驗(yàn)正確,切換至EEPROM中的上注軟件,執(zhí)行上注應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理代碼,清除RAM,并標(biāo)志當(dāng)前軟件版本變量為上注軟件,進(jìn)入上注應(yīng)用軟件正常工作;如果校驗(yàn)錯誤,則不予切換,繼續(xù)執(zhí)行PR0M的固化應(yīng)用軟件正常工作;
[0013]當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)存在于PR0M的系統(tǒng)硬件中斷向量地址,執(zhí)行PR0M中斷重映射代碼中相應(yīng)中斷處理函數(shù),保存當(dāng)前程序運(yùn)行現(xiàn)場,并判斷當(dāng)前軟件版本變量是否為上注軟件,如果否,則為錯誤狀態(tài),如果是,則執(zhí)行上注應(yīng)用軟件中斷向量代碼;執(zhí)行中斷處理代碼,完成中斷處理;實(shí)現(xiàn)軟件重注。
[0014]本發(fā)明的有益效果:
[0015]一、本發(fā)明所述的方法在硬件設(shè)計(jì)上將8051微控制器程序存儲空間和數(shù)據(jù)存儲空間統(tǒng)一編址,解決了上注軟件代碼需在上注時從數(shù)據(jù)存儲空間寫入、執(zhí)行時從程序存儲空間讀取的問題,實(shí)現(xiàn)軟件代碼在軌修改;
[0016]二、本發(fā)明所述的方法在軟件上設(shè)計(jì)了 8051微控制器中斷重映射代碼,根據(jù)當(dāng)前軟件版本跳轉(zhuǎn)至相應(yīng)應(yīng)用軟件中斷向量,解決了 8051內(nèi)核微控制器中斷向量地址無法更改的問題,實(shí)現(xiàn)多版本軟件在8051內(nèi)核微控制器內(nèi)的共存,進(jìn)而實(shí)現(xiàn)軟件在軌重注。
【專利附圖】
【附圖說明】
[0017]圖1為本發(fā)明所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法的硬件框圖;
[0018]圖2為本發(fā)明所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法硬件具體實(shí)現(xiàn)原理圖;
[0019]圖3為本發(fā)明所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法中代碼地址分配及跳轉(zhuǎn)示意圖;
[0020]圖4為本發(fā)明所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法中地址空間分配示意圖;
[0021]圖5為本發(fā)明所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法中8051控制器寄存器分配示意圖。
【具體實(shí)施方式】
[0022]【具體實(shí)施方式】一、結(jié)合圖1至圖3說明本實(shí)施方式,適用于8051微控制器的航天嵌入式軟件在軌重注方法,該方法將PR0M、EEPR0M以及RAM統(tǒng)一編址,并采用中斷重映射的方法,使應(yīng)用程序可定位于任意起始地址,從而實(shí)現(xiàn)固化和上注軟件的共存及任意切換,進(jìn)一步實(shí)現(xiàn)任意功能軟件的重注。
[0023]星載計(jì)算機(jī)由8051微控制器,隨機(jī)存儲器(RAM),可編程只讀存儲器(PR0M),電可擦除可編程只讀存儲器(EEPROM)以及其他外圍電路構(gòu)成。其中8051微控制器、RAM、PR0M和EEPROM構(gòu)成星載計(jì)算機(jī)最小系統(tǒng),提供了軟件運(yùn)行的硬件基礎(chǔ),完成對外圍采集和控制電路的控制。RP0M中保存了在軌固化軟件,不可更改。該軟件包含有接收遙測遙控接口軟件上注指令和數(shù)據(jù),并將數(shù)據(jù)(上注軟件)寫入EEPROM的功能。EEPROM用于保存上注軟件數(shù)據(jù),可在軌更改。系統(tǒng)框圖結(jié)合圖1。
[0024]由于EEPROM只能通過數(shù)據(jù)存儲空間寫入,而在程序執(zhí)行時只能通過程序存儲空間讀取,因此硬件設(shè)計(jì)上取消8051微控制器對程序存儲器和數(shù)據(jù)存儲器的分別編址,使PROM、EEPROM以及RAM統(tǒng)一編址,以使EEPROM既可以在數(shù)據(jù)存儲空間訪問,又可以在程序存儲空間訪問,實(shí)現(xiàn)上注時軟件數(shù)據(jù)向EEPROM的寫入,運(yùn)行上注軟件時對EERP0M軟件數(shù)據(jù)的讀取。具體硬件實(shí)現(xiàn)方式結(jié)合圖2,與常用方法的主要區(qū)別是將程序和數(shù)據(jù)存儲空間讀信號nPSEN和nRD邏輯與作為外部總線的讀信號。
[0025]本實(shí)施方式所述的方法在軟件上設(shè)計(jì)了中斷重映射代碼,該代碼定位于8051的中斷向量處(0x0000),硬件中斷到來時根據(jù)軟件版本變量值(固化、上注)跳轉(zhuǎn)到相應(yīng)版本程序的軟件中斷向量,進(jìn)而進(jìn)入應(yīng)用軟件的中斷處理函數(shù),并返回應(yīng)用軟件。該代碼進(jìn)行了現(xiàn)場保護(hù)、堆棧處理、程序返回地址計(jì)算等操作。
[0026]本實(shí)施方式中PR0M中包含系統(tǒng)硬件中斷向量代碼、中斷重映射代碼、固化應(yīng)用軟件中斷向量代碼、固化應(yīng)用軟件中斷處理代碼、固化應(yīng)用程序代碼。EEPROM中只包含上注應(yīng)用軟件中斷向量代碼、上注應(yīng)用軟件中斷處理代碼、上注應(yīng)用程序代碼。其中固化應(yīng)用軟件中包含處理重注遙測遙控指令和數(shù)據(jù)的功能。代碼地址分配及跳轉(zhuǎn)概略圖,結(jié)合圖3。
[0027]本實(shí)施方式中,軟件編譯工具鏈?zhǔn)褂肒eil C ;系統(tǒng)硬件中斷向量代碼和中斷重映射代碼使用匯編語言,使用CSEGAT偽匯編指令將系統(tǒng)硬件中斷向量代碼定位在PR0M中0x0000地址;固化應(yīng)用軟件(包含中斷向量和中斷處理)使用INTVECTOR鏈接選項(xiàng)將固化應(yīng)用軟件中斷向量定位在PR0M中,并在之前預(yù)留足夠空間用于存放系統(tǒng)硬件中斷向量和中斷重映射代碼(一般可預(yù)留0x200個字節(jié));使用SEGMENTS鏈接選項(xiàng)將指令代碼定位在PR0M內(nèi)(如對于16kB的PR0M應(yīng)定位為0x0200?0x3FFF);上注應(yīng)用軟件(包含中斷向量和中斷處理)使用INTVECTOR鏈接選項(xiàng)將上注應(yīng)用軟件中斷向量定位在EEPROM中(一般為EEPROM起始地址),并在之前預(yù)留8字節(jié)用于存放上注軟件校驗(yàn)和;使用SEGMENTS鏈接選項(xiàng)將指令代碼定位在EEPROM內(nèi);變量當(dāng)前軟件版本變量需在中斷重映射代碼、固化應(yīng)用軟件、上注應(yīng)用軟件中定位在相同內(nèi)存地址,而不是由編譯器自動分配,以便這三部分軟件都能正確訪問。
[0028]根據(jù)上述步驟描述,系統(tǒng)上電后自動運(yùn)行固化軟件版本,由指令切換至上注軟件。具體過程為:
[0029]系統(tǒng)上電后進(jìn)入系統(tǒng)硬件復(fù)位中斷向量(0x0000);依次執(zhí)行PR0M中的中斷重映射代碼中復(fù)位中斷處理函數(shù);固化應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理函數(shù),清除RAM內(nèi)容,并標(biāo)志當(dāng)前軟件版本變量為固化軟件;進(jìn)入固化應(yīng)用軟件正常工作;
[0030]當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)的系統(tǒng)硬件中斷向量地址;并執(zhí)行中斷重映射代碼中相應(yīng)的中斷處理代碼,保存當(dāng)前程序運(yùn)行現(xiàn)場,判斷當(dāng)前軟件版本變量是否為固化軟件;如果是,則執(zhí)行固化應(yīng)用軟件中斷向量代碼以及固化應(yīng)用軟件中斷處理代碼,完成中斷處理;如果否,則為錯誤狀態(tài);通過PR0M的遙測遙控軟件接口接收到重注軟件指令和數(shù)據(jù),經(jīng)校驗(yàn)后寫入EEPROM,并將上注軟件數(shù)據(jù)校驗(yàn)和寫入EEPROM起始地址,上注結(jié)束;
[0031]當(dāng)PR0M接收到切換至上注軟件指令時,將EEPROM中上注軟件數(shù)據(jù)校驗(yàn)和與保存在EEPROM中的校驗(yàn)和比較,如果校驗(yàn)正確,切換至EEPROM中的上注軟件,執(zhí)行上注應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理代碼,清除RAM,并標(biāo)志當(dāng)前軟件版本變量為上注軟件,進(jìn)入上注應(yīng)用軟件正常工作;如果校驗(yàn)錯誤,則不予切換,繼續(xù)執(zhí)行PR0M的固化應(yīng)用軟件正常工作;
[0032]當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)存在于PR0M的系統(tǒng)硬件中斷向量地址,執(zhí)行PR0M中斷重映射代碼中相應(yīng)中斷處理函數(shù),保存當(dāng)前程序運(yùn)行現(xiàn)場,并判斷當(dāng)前軟件版本變量是否為上注軟件,如果否,則為錯誤狀態(tài),如果是,則執(zhí)行上注應(yīng)用軟件中斷向量代碼;執(zhí)行中斷處理代碼,完成中斷處理;實(shí)現(xiàn)軟件重注。
[0033]【具體實(shí)施方式】二、結(jié)合圖4和圖5說明本實(shí)施方式,本實(shí)施方式為【具體實(shí)施方式】一所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法具體實(shí)施例:
[0034]本實(shí)施方式中8051微控制器采用Atmel公司抗輻照產(chǎn)品80C32E,不包含片內(nèi)ROM和RAM ;PR0M采用Harris公司抗輻照產(chǎn)品HS-6664RH,容量8kB,2片共16kB ;EEPROM采用Atmel公司產(chǎn)品AT28C64B容量16kB ;SRAM采用Atmel公司抗輻照產(chǎn)品MT5C1008CW,容量128kB,但在硬件設(shè)計(jì)上只使用其lkB容量。
[0035]統(tǒng)一地址分配結(jié)合圖4所示。
[0036]系統(tǒng)硬件中斷向量代碼、中斷重映射代碼在PR0M起始地址開始預(yù)留0x0200空間;固化應(yīng)用軟件中斷向量定位于0x0200,中斷處理代碼、應(yīng)用程序代碼地址控制在0x0200?0x3FFF范圍內(nèi);上注應(yīng)用軟件校驗(yàn)和存儲于EEPROM起始地址0x4000,占用8字節(jié);上注應(yīng)用軟件中斷向量代碼定位于0x4008,中斷處理代碼、應(yīng)用程序代碼地址控制在0x4008?0x7FFF范圍內(nèi);SRAM占用0x8000?0x83FF,共lkB地址空間。
[0037]軟件上中斷重映射如下實(shí)施(以外部中斷0處理為例)。
[0038]步驟1:系統(tǒng)進(jìn)入正常工作狀態(tài);
[0039]步驟2:產(chǎn)生外部中斷0,返回地址自動壓棧,PC指向系統(tǒng)硬件中斷向量地址0x0003 ;
[0040]步驟3:跳轉(zhuǎn)至外部中斷0中斷重映射代碼
[0041]步驟4:將寄存器ACC、PSW壓棧;
[0042]步驟5:獲取三模冗余變量“當(dāng)前軟件版本”值;
[0043]步驟6:判斷“當(dāng)前軟件版本”是否為固化軟件。若為固化軟件,則步驟7,否則步驟10 ;
[0044]步驟7:將寄存器PSW、ACC出棧;
[0045]步驟8:跳轉(zhuǎn)至0x0203 (固化應(yīng)用軟件外部中斷0中斷向量地址);
[0046]步驟9:執(zhí)行固化應(yīng)用軟件中斷處理代碼,完成后返回固化應(yīng)用軟件(步驟1);
[0047]步驟10:判斷當(dāng)前軟件版本是否為上注軟件。若為上注軟件,則步驟11,否則說明變量“當(dāng)前軟件版本”為非法值(即不為固化軟件,也不為上注軟件),進(jìn)行步驟14 ;
[0048]步驟11:將寄存器PSW、ACC出棧;
[0049]步驟12:跳轉(zhuǎn)至0x400B(上注應(yīng)用軟件外部中斷0中斷向量地址);
[0050]步驟13:執(zhí)行上注應(yīng)用軟件中斷處理代碼,完成后返回上注應(yīng)用軟件(步驟1);
[0051] 步驟14:死循環(huán),等待看門狗復(fù)位。
【權(quán)利要求】
1.適用于8051微控制器的航天嵌入式軟件在軌重注方法,該方法分為上注過程和切換過程; 上注過程: 系統(tǒng)上電后進(jìn)入系統(tǒng)硬件復(fù)位中斷向量((^0000);依次執(zhí)行?801中的中斷重映射代碼中復(fù)位中斷處理函數(shù);固化應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理函數(shù),清除狀1內(nèi)容,并標(biāo)志當(dāng)前軟件版本變量為固化軟件;進(jìn)入固化應(yīng)用軟件正常工作; 當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)的系統(tǒng)硬件中斷向量地址;并執(zhí)行中斷重映射代碼中相應(yīng)的中斷處理代碼,保存當(dāng)前程序運(yùn)行現(xiàn)場,判斷當(dāng)前軟件版本變量是否為固化軟件;如果是,則執(zhí)行固化應(yīng)用軟件中斷向量代碼以及固化應(yīng)用軟件中斷處理代碼,完成中斷處理;如果否,則為錯誤狀態(tài);通過?如1的遙測遙控軟件接口接收到重注軟件指令和數(shù)據(jù),經(jīng)校驗(yàn)后寫入現(xiàn)?如1,并將上注軟件數(shù)據(jù)校驗(yàn)和寫入現(xiàn)?如1起始地址,上注結(jié)束; 切換過程: 當(dāng)?如1接收到切換至上注軟件指令時,將22?如1中上注軟件數(shù)據(jù)校驗(yàn)和與保存在22?如1中的校驗(yàn)和比較,如果校驗(yàn)正確,切換至現(xiàn)?如1中的上注軟件,執(zhí)行上注應(yīng)用軟件中斷處理代碼的復(fù)位中斷處理代碼,清除狀1,并標(biāo)志當(dāng)前軟件版本變量為上注軟件,進(jìn)入上注應(yīng)用軟件正常工作;如果校驗(yàn)錯誤,則不予切換,繼續(xù)執(zhí)行?的固化應(yīng)用軟件正常工作; 當(dāng)產(chǎn)生系統(tǒng)硬件中斷時,進(jìn)入相應(yīng)存在于?如1的系統(tǒng)硬件中斷向量地址,執(zhí)行?1?01中斷重映射代碼中相應(yīng)中斷處理函數(shù),保存當(dāng)前程序運(yùn)行現(xiàn)場,并判斷當(dāng)前軟件版本變量是否為上注軟件,如果否,則為錯誤狀態(tài),如果是,則執(zhí)行上注應(yīng)用軟件中斷向量代碼;執(zhí)行中斷處理代碼,完成中斷處理;實(shí)現(xiàn)軟件重注。
2.根據(jù)權(quán)利要求1所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法,其特征在于,該方法還包括當(dāng)現(xiàn)?如1接收到切換至固化軟件指令時,系統(tǒng)重新進(jìn)入硬件復(fù)位中斷向量((^0000)處,執(zhí)行?如1軟件代碼,實(shí)現(xiàn)軟件重注。
3.根據(jù)權(quán)利要求1所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法,其特征在于,所述?如1用于存儲在軌固化軟件,不能更改,現(xiàn)?用于存儲上注軟件數(shù)據(jù),能在軌更改。
4.根據(jù)權(quán)利要求1所述的適用于8051微控制器的航天嵌入式軟件在軌重注方法,其特征在于,所述?如1、22?1?01以及狀1統(tǒng)一編址,采用中斷重映射的方法,使應(yīng)用程序可定位于任意起始地址,實(shí)現(xiàn)固化軟件和上注軟件的共存及任意切換,實(shí)現(xiàn)功能軟件的重注。
【文檔編號】G06F9/445GK104484202SQ201410770668
【公開日】2015年4月1日 申請日期:2014年12月15日 優(yōu)先權(quán)日:2014年12月15日
【發(fā)明者】樸永杰, 金光, 徐偉, 王紹舉, 鄭曉云, 徐拓奇, 馮汝鵬 申請人:中國科學(xué)院長春光學(xué)精密機(jī)械與物理研究所