專利名稱:一種軟件版本更新的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信號處理領(lǐng)域,尤其是軟件版本更新領(lǐng)域,具體地涉及DSP軟件的版本更新方法。
背景技術(shù):
隨著微電子技術(shù),計算機(jī)技術(shù)和通訊技術(shù)的迅猛發(fā)展,數(shù)字化技術(shù)已廣泛深入到現(xiàn)代國防、科技以及國民經(jīng)濟(jì)等各個領(lǐng)域,在社會活動和個人生活中隨處可見,數(shù)字化技術(shù)的基礎(chǔ)和核心是通用數(shù)字信號處理,及相應(yīng)的程序軟件,尤其是DSP的應(yīng)用程序在科技、國防、國民經(jīng)濟(jì)、社會和個人生活中具有突出的地位。
DSP芯片最大的優(yōu)越性在于其可重復(fù)編程的能力,并將不同的應(yīng)用軟件下載到DSP芯片中,實現(xiàn)通訊和控制功能。
通常將DSP程序放在專用的EEPROM中,但是DSP為了增加軟件下載的靈活性,將EEPROM等存儲器放置在片外,由一片或幾片F(xiàn)LASH來替代,DSP的內(nèi)部ROM固化了一個稱為Boot的程序,在DSP上電硬件復(fù)位后,DSP自動執(zhí)行Boot程序,將外部FLASH的程序讀入DSP內(nèi)部的高速RAM程序區(qū)中。
軟件版本更新時,通常是直接刷新FLASH,但是若此時意外掉電可使數(shù)據(jù)丟失,系統(tǒng)無法啟動。
第一、目前室外單元在無線系統(tǒng)中有廣泛的應(yīng)用,通過通訊的方式傳達(dá)監(jiān)控信息,在作版本升級及更新時,通常存在意外風(fēng)險。通常采用的遠(yuǎn)程升級通過業(yè)已存在的數(shù)據(jù)通信鏈路,將新程序先下載到緩存空間,下載完成并校驗無誤后,將程序自舉存儲空間用新的升級程序覆蓋,重新啟動后,即可執(zhí)行升級后的新程序。
但是若在覆蓋過程中發(fā)生如系統(tǒng)斷電,或意外復(fù)位等因素,就可使系統(tǒng)發(fā)生徹底崩潰的危險。
第二、在批量生產(chǎn)時,通常直接將有下載軟件的FLASH焊接PCB板上,這時要進(jìn)行軟件版本更新要通過通訊接口等方法是帶電直接刷新本版軟件。
若這時發(fā)生突然斷電,板子將無法啟動,必須將片子從板上焊接下來重新燒錄后再焊接。這就要求在版本下載過程中有必要的保護(hù)機(jī)制,才能降低維護(hù)成本。
公開號為CN1259813,
公開日期為2000年7月12日的專利“可遠(yuǎn)程下載運行軟件的智能數(shù)據(jù)監(jiān)控通訊設(shè)備及方法”,涉及計算機(jī)網(wǎng)絡(luò)系統(tǒng)中的通訊技術(shù)和監(jiān)控技術(shù),針對遠(yuǎn)端地點的軟件更新和調(diào)試需要較多的時間和工程量并且系統(tǒng)可靠性不高的問題,提出了由中央處理器及外圍邏輯、只讀存儲器、閃爍存儲器、隨機(jī)讀寫存儲器、串行電可擦寫存儲器、通訊接口組成的智能數(shù)據(jù)監(jiān)控通訊設(shè)備,以及包括下載操作和運行軟件中的下載處理的方法。
雖然本專利節(jié)約了時間和工程量,提高了系統(tǒng)的可靠性,適于遠(yuǎn)程通訊或監(jiān)控系統(tǒng)中遠(yuǎn)端軟件的更新和調(diào)試。但是該專利還是采用傳統(tǒng)的直接刷新存儲區(qū)的方法,只能保證下載過程中不出現(xiàn)意外復(fù)位的情況,存在出現(xiàn)意外復(fù)位,系統(tǒng)會發(fā)生崩潰的危險。
發(fā)明內(nèi)容
本發(fā)明為了克服現(xiàn)有技術(shù)中存在的上述問題,提出一種軟件版本更新的方法。
采用本發(fā)明可以保護(hù)軟件在下載過程中突發(fā)意外情況,保護(hù)系統(tǒng)仍可以正確重啟。
本發(fā)明是這樣具體實現(xiàn)的將啟動的程序區(qū)域分A區(qū),B區(qū),在A區(qū)開辟一段版本切換程序;系統(tǒng)加電復(fù)位后DSP的程序指針自動指向內(nèi)部ROM中的Bootloader程序;從A區(qū)的0xFFFF讀出的數(shù)據(jù)作為加載程序的有效地址;Boot程序?qū)LASH中的Boot表的首地址,進(jìn)行Bootloader過程;如果正常版本在A區(qū),則FLASH 0x0000-0x8000映射為DSP的0x8000-0xffff空間,F(xiàn)LASH的0x8000即為DSP的0xFFFF,其首址內(nèi)容為A版本加載內(nèi)容的首址,這時冷啟、熱啟均不影響系統(tǒng)正常工作;如果正常版本在B區(qū),冷啟時FLASH 0x0000-0x8000映射為DSP的0x8000-0xffff空間,這時DSP的0xFFFF加載版本的首地址為版本切換程序,版本切換程序?qū)LASH的空間切換為0x8000-0xFFFF映射為DSP的0x8000-0xffff空間,復(fù)位系統(tǒng)即熱啟系統(tǒng),其首址內(nèi)容為B版本加載內(nèi)容的首址。
如果下載過程中出錯重啟,則此時尚未對版本信息A和B改寫,重啟后仍舊執(zhí)行A老版本;如果改寫版本信息B時出錯,則版本信息A仍有效,重啟后仍舊執(zhí)行老版本;如果改寫版本信息A時出錯,由于此時版本信息B已經(jīng)成功寫入,重啟后,由于系統(tǒng)讀版本信息為B,重啟B。
本發(fā)明采用A,B切換的方法克服了意外出現(xiàn)對系統(tǒng)造成的損失,利用巧妙的保護(hù)機(jī)制使系統(tǒng)在下載過程中出現(xiàn)意外仍可以重啟,提高了系統(tǒng)的可靠性,還可以應(yīng)用于廣泛的下載更新的程序中,在常規(guī)設(shè)計中的DSP+FPGA的結(jié)構(gòu)中可不改變原有系統(tǒng)硬件基礎(chǔ)上即可作性能提升,有非常好的市場前。
圖1是本發(fā)明提出的單板版本更新及熱啟流程圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明所述方法作進(jìn)一步的詳細(xì)說明將FLASH區(qū)域化為兩塊一塊叫A區(qū),一塊叫B區(qū),系統(tǒng)重啟分為冷啟動(即系統(tǒng)上電),系統(tǒng)熱啟(帶電復(fù)位);如系統(tǒng)目前運行的程序在A區(qū)當(dāng)系統(tǒng)需版本更新時,軟件查詢當(dāng)前運行的軟件版本信息是A(0x55)軟件還是B(0xAA)軟件如是A軟件,則通過指令由外圍硬件(如FPGA)卻換A15為高,這時FLASH空間為0x8000-0xffff即工作在B區(qū),先進(jìn)行B區(qū)擦除,數(shù)據(jù)校驗正確后寫入B區(qū),如圖1所示;在程序正確寫完之后,寫B(tài)區(qū)版本信息(0xAA)、Boot首址信息(0xA000)。
切換到A區(qū),寫A區(qū)版本信息(0xAA)、Boot首址信息(0x8000)。
再次切換到B區(qū),復(fù)位系統(tǒng)(熱啟)由B區(qū)啟動程序,如掉電重啟則先加載版本切換程序,切換到B區(qū)后熱啟。
如目前運行的是B軟件,則通過指令由外圍硬件(如FPGA)卻換A15為低,這時FLASH空間為0x0000-0x7fff即工作在A區(qū),先進(jìn)行A區(qū)擦除,數(shù)據(jù)校驗正確后寫入A區(qū),如圖1所示,
在程序正確寫完之后,寫A區(qū)版本信息(0x55)、Boot首址信息(0xA000)。
復(fù)位系統(tǒng)(熱啟)由A區(qū)啟動程序,如掉電重啟則仍由A區(qū)啟動。不受版本切換影響。
正常工作過程如下1、將切換版本程序燒寫到0x0000,A版本程序燒寫到0x2000處,版本信息寫0x55,Boot首址寫0xa000,正常運行A版本;2、如果下載過程中出錯重啟,則此時尚未對版本信息A和B改寫,重啟后仍舊執(zhí)行A老版本;3、如果改寫版本信息B時出錯,則版本信息A仍有效,重啟后仍舊執(zhí)行老版本;4、如果改寫版本信息A時出錯,由于此時版本信息B已經(jīng)成功寫入,重啟后,由于系統(tǒng)讀版本信息為B,重啟B。
各版本在FLASH中的地址分配
權(quán)利要求
1.一種軟件版本更新的方法,其特征在于,包括如下步驟步驟1、將啟動的程序區(qū)域分A區(qū),B區(qū),在A區(qū)開辟一段版本切換程序;步驟2、系統(tǒng)加電復(fù)位后DSP的程序指針自動指向內(nèi)部ROM中的Bootloader程序;步驟3、從A區(qū)的0xFFFF讀出的數(shù)據(jù)作為加載程序的有效地址;步驟4、Boot程序?qū)LASH中的Boot表的首地址,進(jìn)行Bootloader過程正常版本在A區(qū),則FLASH 0x0000-0x8000映射為DSP的0x8000-0xffff空間,F(xiàn)LASH的0x8000即為DSP的0xFFFF,其首址內(nèi)容為A版本加載內(nèi)容的首址。
2.如權(quán)利要求1所述的軟件版本更新的方法,其特征在于,所述步驟4中進(jìn)行Bootloader過程如果正常版本在B區(qū),冷啟時FLASH 0x0000-0x8000映射為DSP的0x8000-0xffff空間,這時DSP的0xFFFF加載版本的首地址為版本切換程序,版本切換程序?qū)LASH的空間切換為0x8000-0xFFFF映射為DSP的0x8000-0xffff空間;復(fù)位系統(tǒng)即熱啟系統(tǒng),其首址內(nèi)容為B版本加載內(nèi)容的首址。
3.如權(quán)利要求1或2所述的軟件版本更新的方法,其特征在于如果下載過程中出錯重啟,則此時尚未對版本信息A和B改寫,重啟后仍舊執(zhí)行A老版本;如果改寫版本信息B時出錯,則版本信息A仍有效,重啟后仍舊執(zhí)行老版本;如果改寫版本信息A時出錯,由于此時版本信息B已經(jīng)成功寫入,重啟后,由于系統(tǒng)讀版本信息為B,重啟B。
全文摘要
本發(fā)明公開了一種軟件版本更新的方法,包括將啟動的程序區(qū)域分A區(qū),B區(qū),在A區(qū)開辟一段版本切換程序;系統(tǒng)加電復(fù)位后DSP的程序指針自動指向內(nèi)部ROM中的Bootloader程序;從A區(qū)的0xFFFF讀出的數(shù)據(jù)作為加載程序的有效地址;Boot程序?qū)LASH中的Boot表的首地址,進(jìn)行Bootloader過程正常版本在A區(qū),則FLASH 0x0000-0x8000映射為DSP的0x8000-0xffff空間,F(xiàn)LASH的0x8000即為DSP的0xFFFF,其首址內(nèi)容為A版本加載內(nèi)容的首址。本方法可以保護(hù)軟件在下載過程突發(fā)的意外情況,保護(hù)系統(tǒng)可以重新啟動。
文檔編號G06F9/445GK1959635SQ200510115560
公開日2007年5月9日 申請日期2005年11月4日 優(yōu)先權(quán)日2005年11月4日
發(fā)明者王文煥 申請人:中興通訊股份有限公司