專利名稱:一種程序在線加載方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序升級技術(shù),尤其涉及一種程序在線加載方法。
背景技術(shù):
單片機系統(tǒng)軟件多以編程器燒錄到軟件載體中,再將此軟件載體放置于單板插座上,然后上電運行。若軟件需要升級或更改時,只能將單板斷電,取出軟件載體重新進行燒錄。此方法不但要使用插座,帶來成本的增加和接觸不良等可靠性的降低,并且不能滿足不能斷電系統(tǒng)的軟件升級要求,不能實現(xiàn)軟件的遠程升級。
目前已有的帶有在線編程(In application programming簡稱IAP)功能的單片機,如AT89C51RD2,可以實現(xiàn)軟件的在線加載功能。其在線加載的原理如下1、MCU單片機內(nèi)部在flash高端地址駐留有廠家提供的API函數(shù),此函數(shù)提供統(tǒng)一的調(diào)用接口,主要完成的是對flash的讀寫功能。
2、用戶通過定制自身的加載(bootloader)程序,完成對軟件的在線升級。加載程序中主要是完成通信功能和調(diào)用API函數(shù),接收升級代碼并寫入flash中。
3、程序的運行流程如圖1所示,其中,BSBboot status byte啟動狀態(tài)字節(jié);SBVsoft boot vector軟件啟動向量;這兩個變量的修改是通過調(diào)用API函數(shù)實現(xiàn)。具體為首先通過廠家提供的ISP功能加載用戶定制的加載程序到指定地址,即圖1中的步驟1,此步驟也可通過編程器將用戶定制的加載程序燒錄到flash指定地址來代替,然后更改程序啟動向量SBV到加載程序的地址,重新復(fù)位單片機。
單片機再次啟動后,將進入用戶定制的加載程序,即圖1中的步驟2,此時將完成用戶應(yīng)用程序的加載,加載完成后再次修改程序啟動向量SBV到0000,重新復(fù)位單片機。
單片機再次啟動將進入用戶應(yīng)用程序,即圖1中的步驟3,完成單片機的在線升級。
實現(xiàn)在線編程功能時主要有以下方面的缺點1、可靠性差當(dāng)用戶應(yīng)用程序加載完成后,程序啟動向量修改為0000,從應(yīng)用程序開始運行,而此時若應(yīng)用程序由于加載過程中的錯誤而不能啟動運行,則整個系統(tǒng)將癱瘓,不能夠再重新加載,發(fā)生致命錯誤。
2、加載程序繁瑣需不斷更改啟動向量,重新復(fù)位,時間較長。
3、不是所有型號的單片機都可實現(xiàn)上述軟件加載方案。
發(fā)明內(nèi)容
本發(fā)明提供一種程序在線加載方法,以解決現(xiàn)有程序加載存在可靠性差和加載程序繁瑣的問題。
為解決上述問題,本發(fā)明提供以下技術(shù)方案一種程序在線加載方法,該方法包含下列步驟(1)系統(tǒng)上電運行存儲器中的加載程序;(2)通過加載程序讀取應(yīng)用程序的版本信息,并判斷其是否為最新版本;如果是,則調(diào)用并運行應(yīng)用程序;如果不是,則執(zhí)行步驟(3);(3)獲取最新版本的應(yīng)用程序文件并加載;(4)執(zhí)行加載的應(yīng)用程序,并在應(yīng)用程序正確執(zhí)行后更新所述版本信息。根據(jù)上述方法,將加載程序放置于單片機的程序存儲器的低端地址;用戶應(yīng)用程序放置于高地址段,其起始地址根據(jù)用戶程序大小而定。加載程序通過編程器燒錄或系統(tǒng)ISP功能加載到程序存儲器中,此部分程序可不用升級。
如果應(yīng)用程序加載失敗,當(dāng)系統(tǒng)調(diào)用應(yīng)用程序時使系統(tǒng)復(fù)位,重新進行加載程序。應(yīng)用程序的運行是通過在加載程序中直接調(diào)用應(yīng)用程序的起始地址來實現(xiàn)的。
本發(fā)明具有以下有益效果
1、可靠性大幅提高,在加載過程中若出現(xiàn)加載失敗的情況不會造成系統(tǒng)癱瘓,可以重新進行加載。
2、加載過程簡潔,實現(xiàn)容易。
3、不使用插座,由插座接觸不良帶來的可靠性隱患得到完全消除。
4、所有以flash或EEPROM為程序載體的單片機都可按此方法實現(xiàn)軟件的在線升級。
圖1是AT89C51RD2的軟件在線加載流程圖。
圖2是本發(fā)明系統(tǒng)啟動流程圖。
具體實施例方式
用戶程序包括兩部分定制的加載(bootloader)程序和用戶應(yīng)用程序。將加載程序放置于單片機的程序存儲器,如flash低端地址,即0000,系統(tǒng)每次上電都從加載程序開始;用戶應(yīng)用程序放置于程序存儲器的高地址段,其起始地址根據(jù)用戶程序大小而定,如0x2000。加載程序通過編程器燒錄或系統(tǒng)ISP功能加載到程序存儲器中,此部分程序可不用升級。
系統(tǒng)每次上電都從加載程序開始,根據(jù)是否有加載需求決定是運行加載程序還是跳轉(zhuǎn)到應(yīng)用程序。應(yīng)用程序的運行不是通過更改軟件啟動向量SBV來啟動的,而是通過在加載程序中直接調(diào)用應(yīng)用部分程序的起始地址實現(xiàn)的。
如果應(yīng)用程序加載失敗,當(dāng)系統(tǒng)調(diào)用應(yīng)用程序時會使看門狗動作,使系統(tǒng)復(fù)位,重新進行加載程序,可以再次完成加載操作。
程序版本信息存儲在程序存儲器的特定地址,如0xfffe,由應(yīng)用程序?qū)懭?,加載程序讀出。這樣,只有應(yīng)用程序加載正確,運行后才能正確的寫入版本信息,在加載程序中讀出此版本信息,若不是最新的版本即可啟動加載。
參閱圖2所示,具體的處理過程如下1、系統(tǒng)上電,開始執(zhí)行程序存儲器中的加載程序。
2、加載程序從程序存儲器的特定地址(如0xfffe)讀取當(dāng)前應(yīng)用程序的版本信息。
3、將應(yīng)用程序的版本信息與控制此系統(tǒng)的上位機(上位機的主要作用就是下發(fā)最新的版本和最新的程序文件)下發(fā)的最新的應(yīng)用程序版本信息進行比較,判斷當(dāng)前應(yīng)用程序是否為最新版本,如果是則進行步驟5,否則進行步驟4。
4、獲取最新版本的應(yīng)用程序文件并加載。
5、在加載程序中通過直接調(diào)用應(yīng)用程序的起始地址,跳轉(zhuǎn)到應(yīng)用程序開始運行。
6、應(yīng)用程序正確運行后更新應(yīng)用程序的版本信息,即將程序存儲器中特定地址的原版本信息修改為最新的版本信息。
7、運行主程序。
本發(fā)明可以實現(xiàn)程序的在線升級,不需要系統(tǒng)斷電,也不需要額外成本支出,可安全可靠地進行程序升級。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明的單片機軟件的在線加載方法進行各種改動和變型而不脫離本發(fā)明的精神和范圍。倘若對本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型。
權(quán)利要求
1.一種程序在線加載方法,其特征在于該方法包含如下步驟(1)系統(tǒng)上電運行存儲器中的加載程序;(2)通過加載程序讀取應(yīng)用程序的版本信息,并判斷應(yīng)用程序是否為最新版本;如果是,則調(diào)用并運行應(yīng)用程序;如果不是,則執(zhí)行步驟(3);(3)獲取最新版的應(yīng)用程序并加載;(4)執(zhí)行加載的應(yīng)用程序,并在應(yīng)用程序正確執(zhí)行后更新所述版本信息。
2.如權(quán)利要求1所述的方法,其特征在于,步驟(2),將應(yīng)用程序的版本信息與控制該系統(tǒng)的上位機下發(fā)的最新應(yīng)用程序的版本信息進行比較來判斷應(yīng)用程序是否為最新的版本。
3.如權(quán)利要求1所述的方法,其特征在于,所述加載程序置于程序存儲器的低端地址,使系統(tǒng)從該程序開始啟動。
4.如權(quán)利要求3所述的方法,其特征在于,所述用戶應(yīng)用程序置于程序存儲器高地址段,其起始地址根據(jù)用戶程序大小而定。
5.如權(quán)利要求1所述的方法,其特征在于,如果應(yīng)用程序加載失敗,則當(dāng)調(diào)用應(yīng)用程序時使系統(tǒng)復(fù)位而重新開始加載程序。
6.如權(quán)利要求1至5任一所述的方法,其特征在于,通過在加載程序中直接調(diào)用應(yīng)用程序的起始地址來運行。
7.如權(quán)利要求6所述的方法,其特征在于,程序版本信息存儲在程序存儲器的特定字節(jié),由應(yīng)用程序?qū)懭?,加載程序讀出。
8.如權(quán)利要求6所述的方法,其特征在于,加載程序通過編程器燒錄或通過在系統(tǒng)功能(ISP)加載到程序存儲器中。
全文摘要
本發(fā)明公開了一種程序在線加載方法,該方法為將加載程序放置于單片機的程序存儲器的低端地址,用戶應(yīng)用程序放置于較高地址;系統(tǒng)每次從加載程序啟動后,讀取當(dāng)前的版本信息,并判斷其是否為最新版本,如果當(dāng)前版本不是最新版本,則運行加載程序;調(diào)用應(yīng)用程序。采用該方法加載軟件時,不需系統(tǒng)斷電,不需額外成本支出,在軟件加載過程中若出現(xiàn)加載失敗的情況也不會造成系統(tǒng)癱瘓,并可以重新進行加載,而且加載過程簡潔,實現(xiàn)容易,可安全可靠地進行軟件升級。
文檔編號G06F9/445GK1783003SQ20041010091
公開日2006年6月7日 申請日期2004年12月2日 優(yōu)先權(quán)日2004年12月2日
發(fā)明者張冬艷, 方慶銀 申請人:華為技術(shù)有限公司