專利名稱:引導(dǎo)程序的升級(jí)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種引導(dǎo)程序的升級(jí)方法和裝置。
背景技術(shù):
早期的嵌入式設(shè)備中,引導(dǎo)程序(B00TR0M) —般是一次性寫入只讀存儲(chǔ)器(ROM或 FLASH),不考慮在線升級(jí)。為了應(yīng)對(duì)復(fù)雜的應(yīng)用需求,嵌入式設(shè)備開始支持引導(dǎo)程序的在線升級(jí)。目前支持引導(dǎo)程序升級(jí)的嵌入式設(shè)備采用的方案大致上有以下共同點(diǎn)1、設(shè)置兩個(gè)或多個(gè)弓I導(dǎo)程序存儲(chǔ)區(qū)。2、設(shè)置一個(gè)公用的參數(shù)區(qū)。3、由硬件提供引導(dǎo)程序存儲(chǔ)區(qū)地址的切換,并可由引導(dǎo)程序控制。上面第3個(gè)特點(diǎn)說明目前通用的雙引導(dǎo)程序或多引導(dǎo)程序升級(jí)方案都需要硬件提供地址切換的能力。對(duì)硬件有這一要求的原因在于,嵌入式引導(dǎo)程序在編譯時(shí)必須指定其運(yùn)行時(shí)所處的地址,引導(dǎo)程序編譯好后,必須把它存放到正確的地址上工作。這樣在一般升級(jí)方案種造成兩個(gè)弓I導(dǎo)程序都需要在一個(gè)地址上運(yùn)行的局面。所以需要引入硬件提供地址切換的配合來解決哪個(gè)引導(dǎo)程序被選中工作,那個(gè)引導(dǎo)程序所在的存儲(chǔ)區(qū)域就被切換到正確的地址上。這一類方案因?yàn)閷?duì)硬件有特殊要求,增加了硬件復(fù)雜度,應(yīng)用場(chǎng)合也受到了限制。
發(fā)明內(nèi)容
針對(duì)相關(guān)技術(shù)中第一引導(dǎo)程序和第二引導(dǎo)程序都需要在一個(gè)地址上運(yùn)行從而需要引入硬件提供地址切換的問題而提出本發(fā)明,為此,本發(fā)明的主要目的在于提供一種引導(dǎo)程序的升級(jí)方法和裝置,以解決上述問題。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種引導(dǎo)程序的升級(jí)方法。根據(jù)本發(fā)明的引導(dǎo)程序的升級(jí)方法包括在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū),其中第一引導(dǎo)程序區(qū)中存儲(chǔ)有用于正常引導(dǎo)的第一引導(dǎo)程序,第二引導(dǎo)程序區(qū)中存儲(chǔ)有待升級(jí)的第二引導(dǎo)程序;確定使用第二引導(dǎo)程序引導(dǎo)成功;確定第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。進(jìn)一步地,第一引導(dǎo)程序的起始地址為第一引導(dǎo)程序區(qū)開始的位置,第二引導(dǎo)程序的起始地址為第二引導(dǎo)程序區(qū)開始的位置。進(jìn)一步地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之前,上述方法還包括判斷第二引導(dǎo)程序的版本號(hào)是否高于第一引導(dǎo)程序的版本號(hào);如果判斷結(jié)果為是,則使用第二引導(dǎo)程序引導(dǎo)。進(jìn)一步地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之前,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中引導(dǎo)失敗標(biāo)志用于指示使用第二引導(dǎo)程序引導(dǎo)失??;如果判斷結(jié)果為否,則使用第二引導(dǎo)程序引導(dǎo)。
進(jìn)一步地,在使用第二引導(dǎo)程序引導(dǎo)之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)等待標(biāo)志,其中引導(dǎo)等待標(biāo)志用于指示等待使用第二引導(dǎo)程序引導(dǎo); 如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo)。進(jìn)一步地,在使用第二引導(dǎo)程序引導(dǎo)之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中引導(dǎo)失敗標(biāo)志用于指示使用第二引導(dǎo)程序引導(dǎo)失敗。進(jìn)一步地,在設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志之后,上述方法還包括重啟并使用第一引導(dǎo)程序進(jìn)行引導(dǎo)。進(jìn)一步地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)成功標(biāo)志,其中引導(dǎo)成功標(biāo)志用于指示使用第二引導(dǎo)程序弓I導(dǎo)成功。進(jìn)一步地,第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均為512KByte。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個(gè)方面,提供了一種引導(dǎo)程序的升級(jí)裝置。根據(jù)本發(fā)明的引導(dǎo)程序的升級(jí)裝置包括劃分模塊,用于在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū);第一存儲(chǔ)模塊,用于在第一引導(dǎo)程序區(qū)中存儲(chǔ)用于正常引導(dǎo)的第一引導(dǎo)程序;第二存儲(chǔ)模塊,用于在第二引導(dǎo)程序區(qū)中存儲(chǔ)待升級(jí)的第二引導(dǎo)程序;第一確定模塊,用于確定使用第二引導(dǎo)程序引導(dǎo)成功;第二確定模塊,用于確定第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。通過本發(fā)明,第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均具有明確的地址,從而使得第一引導(dǎo)程序和第二引導(dǎo)程序具有互不相同的地址,解決了相關(guān)技術(shù)中第一引導(dǎo)程序和第二引導(dǎo)程序都需要在一個(gè)地址上運(yùn)行從而需要引入硬件提供地址切換的問題,進(jìn)而可以避免硬件地址切換的引入,降低硬件復(fù)雜度,提高用戶體驗(yàn)。
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的升級(jí)方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的文件編譯合并過程的示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的選擇控制方法的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的FLASH空間劃分的示意圖;圖5是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序在線升級(jí)方法的流程圖;圖6是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的升級(jí)裝置的結(jié)構(gòu)框圖。
具體實(shí)施例方式需要說明的是,在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。
本發(fā)明實(shí)施例提供了一種引導(dǎo)程序的升級(jí)方法。圖1是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的升級(jí)方法的流程圖,如圖1所示,包括如下的步驟S102至步驟S106。步驟S102,在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū),其中第一引導(dǎo)程序區(qū)中存儲(chǔ)有用于正常引導(dǎo)的第一引導(dǎo)程序,第二引導(dǎo)程序區(qū)中存儲(chǔ)有待升級(jí)的第二引導(dǎo)程序。步驟S104,確定使用第二引導(dǎo)程序弓I導(dǎo)成功。步驟S106,確定第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。相關(guān)技術(shù)中,第一引導(dǎo)程序和第二引導(dǎo)程序都需要在一個(gè)地址上運(yùn)行,從而需要引入硬件提供地址切換。本發(fā)明實(shí)施例中,第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均具有明確的地址,從而使得第一引導(dǎo)程序和第二引導(dǎo)程序具有互不相同的地址,進(jìn)而可以避免硬件地址切換的引入,降低硬件復(fù)雜度,提高用戶體驗(yàn)。需要說明的是,上述可擦除存儲(chǔ)器可以優(yōu)選的為FLASH。優(yōu)選地,第一引導(dǎo)程序的起始地址為第一引導(dǎo)程序區(qū)開始的位置,第二引導(dǎo)程序的起始地址為第二引導(dǎo)程序區(qū)開始的位置。圖2是根據(jù)本發(fā)明實(shí)施例的文件編譯合并過程的示意圖,如圖2所示,可以通過如下的第一步至第三步進(jìn)行文件的編譯合并。第一步,指定B00TR0M工作地址(后面稱為R0M_BASE_ADRS)為第一 B00TR0M區(qū)起始地址(后面稱為R0M_ADRS_1ST),編譯生成二進(jìn)制的B00T1. bin。 第二步,指定R0M_BASE_ADRS為第二 B00TR0M區(qū)起始地址(后面稱為R0M_ ADRS_2ND),編譯生成二進(jìn)制的B00T2. bin。第三步,把上兩步生成的B00TR0M合并成一個(gè)二進(jìn)制文件B00TR0M. bin。B00T1. bin被填充到起始地址為0開始的位置,B00T2. bin被填充到起始地址為512KBbyte開始的位置。需要說明的是,在本發(fā)明的實(shí)現(xiàn)過程中,上述第一引導(dǎo)程序區(qū)可以為第一 B00TR0M 區(qū),也可以為第二 B00TR0M區(qū)。具體地,當(dāng)?shù)谝灰龑?dǎo)程序區(qū)為第一 B00TR0M區(qū)或第二 B00TR0M 區(qū)時(shí),第二引導(dǎo)程序區(qū)相應(yīng)的為第二 B00TR0M區(qū)或第一 B00TR0M區(qū)。優(yōu)選地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之前,上述方法還包括判斷第二引導(dǎo)程序的版本號(hào)是否高于第一引導(dǎo)程序的版本號(hào);如果判斷結(jié)果為是,則使用第二引導(dǎo)程序引導(dǎo)。優(yōu)選地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之前,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中引導(dǎo)失敗標(biāo)志用于指示使用第二引導(dǎo)程序引導(dǎo)失敗;如果判斷結(jié)果為否,則使用第二引導(dǎo)程序引導(dǎo)。優(yōu)選地,在使用第二引導(dǎo)程序引導(dǎo)之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)等待標(biāo)志,其中引導(dǎo)等待標(biāo)志用于指示等待使用第二引導(dǎo)程序引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo)。優(yōu)選地,在使用第二引導(dǎo)程序引導(dǎo)之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中引導(dǎo)失敗標(biāo)志用于指示使用第二引導(dǎo)程序引導(dǎo)失敗。優(yōu)選地,在設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志之后,上述方法還包括重啟并使用第一引導(dǎo)程序進(jìn)行引導(dǎo)。優(yōu)選地,在確定使用第二引導(dǎo)程序引導(dǎo)成功之后,上述方法還包括判斷是否設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)成功標(biāo)志,其中引導(dǎo)成功標(biāo)志用于指示使用第二引導(dǎo)程序弓I導(dǎo)成功。具體地,上述對(duì)第一引導(dǎo)程序和第二引導(dǎo)程序的選擇控制可以通過選擇控制程序?qū)崿F(xiàn),該選擇控制程序可以存儲(chǔ)在由上述FLASH劃分出的選擇控制區(qū)中,該選擇控制區(qū)可以獨(dú)自占用一個(gè)FLASH塊。另外,上述選擇控制程序中可以包含上述第一引導(dǎo)程序和第二引導(dǎo)程序的存在標(biāo)志、版本號(hào)、試運(yùn)行狀態(tài)、起始地址等信息。具體地,第一引導(dǎo)程序和第二引導(dǎo)程序的試運(yùn)行狀態(tài)包括“等待試運(yùn)行”、“正在試運(yùn)行”、“試運(yùn)行成功”、“試運(yùn)行失敗”4種值。下面分別對(duì)典型情況下第一引導(dǎo)程序和第二弓I導(dǎo)程序試運(yùn)行狀態(tài)的變化情況進(jìn)行描述。1、在線升級(jí)B00TR0M后,設(shè)置試運(yùn)行狀態(tài)為“等待試運(yùn)行”。2、設(shè)備啟動(dòng)時(shí),如果發(fā)現(xiàn)B00TR0M試運(yùn)行狀態(tài)為“等待試運(yùn)行”則選擇該B00TR0M 運(yùn)行,并將其改為“正在試運(yùn)行”。3、設(shè)備啟動(dòng)時(shí),如果發(fā)現(xiàn)B00TR0M試運(yùn)行狀態(tài)為“正在試運(yùn)行”,則將其修改為“試運(yùn)行失敗”。4、設(shè)備引導(dǎo)成功后,檢查試運(yùn)行狀態(tài),如果發(fā)現(xiàn)B00TR0M試運(yùn)行狀態(tài)為“正在試運(yùn)行”,則將其修改為“試運(yùn)行成功”。圖3是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的選擇控制方法的流程圖,如圖3所示,包括如下的步驟S302至步驟S324。步驟S302,上電啟動(dòng)基本配置(romlnit. s中)。步驟S304,設(shè)置堆棧指針(這步后可以調(diào)用C函數(shù))。步驟S306,讀取引導(dǎo)選擇控制區(qū)。步驟S308,檢查第一、第二引導(dǎo)程序參數(shù)區(qū)的試運(yùn)行狀態(tài),如果為“正在試運(yùn)行”即改為“試運(yùn)行失敗”。步驟S310,判斷第二引導(dǎo)程序區(qū)的存在標(biāo)志是否有效,如果是,則進(jìn)行步驟S312, 否則進(jìn)行步驟S324。步驟S312,判斷第二引導(dǎo)程序區(qū)試運(yùn)行標(biāo)志是否為“等待試運(yùn)行”,如果是,則進(jìn)行步驟S314,否則進(jìn)行步驟S316。步驟S314,把第二引導(dǎo)程序試運(yùn)行標(biāo)志改為“正在試運(yùn)行”,然后進(jìn)行步驟S322。步驟S316,判斷第一引導(dǎo)程序區(qū)試運(yùn)行標(biāo)志是否為“等待試運(yùn)行”,如果是,則進(jìn)行步驟S318,否則進(jìn)行步驟S320。步驟S318,判斷第二引導(dǎo)程序區(qū)版本號(hào)是否大于第一區(qū)版本號(hào),如果是,則進(jìn)行步驟S322,否則進(jìn)行步驟S324。步驟S320,把第一引導(dǎo)程序試運(yùn)行標(biāo)志改為“正在試運(yùn)行”,然后進(jìn)行步驟S324。步驟S322,從第二引導(dǎo)程序啟動(dòng)。
步驟S324,從第一引導(dǎo)程序啟動(dòng)。本優(yōu)選實(shí)施例在嵌入式設(shè)備上實(shí)現(xiàn)了基于兩個(gè)引導(dǎo)程序的安全的可回退的引導(dǎo)程序升級(jí)。優(yōu)選地,第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均為512KByte。 圖4是根據(jù)本發(fā)明實(shí)施例的FLASH空間劃分的示意圖,如圖4所示,包括第一引導(dǎo)程序區(qū)、第二引導(dǎo)程序區(qū)和引導(dǎo)選擇控制區(qū),其中第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均為 512Kbyte,引導(dǎo)選擇控制區(qū)為128Kbyte。需要說明的是,新設(shè)備初次使用時(shí),需要使用特殊工具將引導(dǎo)程序?qū)懭隖LASH。需要先擦除FLASH,然后把B00TR0M. bin文件寫入第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)的空間。 此時(shí)因?yàn)橐龑?dǎo)選擇控制區(qū)為空,第二引導(dǎo)程序區(qū)的內(nèi)容會(huì)被忽略。本發(fā)明還提供了一種在線升級(jí)引導(dǎo)程序的方法。圖5是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序在線升級(jí)方法的流程圖,如圖5所示,包括如下的步驟S502至步驟S516。步驟S502,在線升級(jí)。步驟S504,讀取引導(dǎo)選擇控制區(qū)。步驟S506,判斷第二引導(dǎo)程序版本號(hào)是否大于第一引導(dǎo)程序版本號(hào),如果是,則進(jìn)行步驟S512,否則進(jìn)行步驟S508。步驟S508,選擇BOOT, bin文件的前半部分寫入第一引導(dǎo)程序區(qū)。步驟S510,設(shè)置第一引導(dǎo)程序的試運(yùn)行狀態(tài)為“等待試運(yùn)行”,然后進(jìn)行步驟 S516。步驟S512,選擇BOOT, bin文件的后半部分寫入第二引導(dǎo)程序區(qū)。步驟S514,設(shè)置第二引導(dǎo)程序的試運(yùn)行狀態(tài)為“等待試運(yùn)行”。步驟S516,結(jié)束。根據(jù)引導(dǎo)選擇控制區(qū)選擇從B00TR0M. bin文件中選擇B00T1. bin或B00T2. bin寫入對(duì)應(yīng)的第一引導(dǎo)程序區(qū)或第二引導(dǎo)程序區(qū),并重新設(shè)置引導(dǎo)選擇控制區(qū)。下面將結(jié)合實(shí)例對(duì)本發(fā)明實(shí)施例的實(shí)現(xiàn)過程進(jìn)行詳細(xì)描述。某嵌入式設(shè)備中,采用了本方法實(shí)現(xiàn)了可安全升級(jí)、可回退的雙B00TR0M。硬件上,該設(shè)備采用64MByte FLASH作為啟動(dòng)芯片(由片選0信號(hào)選中)。首先,在FLASH中分配了片內(nèi)地址為0 512KByte的區(qū)間作為第一 B00TR0M區(qū), 片內(nèi)地址為512K IMByte的區(qū)間作為第二 B00TR0M區(qū),片內(nèi)地址為IM (1M+128K)Byte 區(qū)間作為BOOT選擇控制區(qū)。然后,在軟件上加入圖3和圖5中的實(shí)現(xiàn)。本系統(tǒng)軟件上基于vxWorks系統(tǒng)。包括以下幾點(diǎn)第一、BOOT區(qū)選擇功能代碼在匯編代碼romlnit. s中增加,具體位置為初始化好 SP指針之后和跳轉(zhuǎn)到romStart函數(shù)之前。此處堆棧指針已配置可以調(diào)用C函數(shù),本功能部分代碼由匯編實(shí)現(xiàn),如讀寫判斷狀態(tài)字,復(fù)雜的部分由C函數(shù)實(shí)現(xiàn),如改寫“試運(yùn)行狀態(tài)”等字段。實(shí)現(xiàn)細(xì)節(jié)如圖3。第二、在B00TR0M加載image映像成功之后和跳轉(zhuǎn)到image運(yùn)行之前,增加修改 “試運(yùn)行狀態(tài)”的代碼。能運(yùn)行至此處說明B00TR0M是功能正常的,在這里直接把“試運(yùn)行狀態(tài)”修改為“試運(yùn)行成功”即可。
第三、應(yīng)用程序(即image映像)中增加在線升級(jí)B00TR0M的代碼。該部分代碼對(duì)位置無特殊要求,以一個(gè)函數(shù)形式增加到sysLib. c中。函數(shù)實(shí)現(xiàn)如圖5。最后,修改編譯腳本,以編譯出兩個(gè)文件合并?;谠瓉淼腗akefiIe新增兩個(gè)makefile 文件,分別為 mkbootl,mkboot2。Mkbootl 中指定 R0M_BASE_ADRS 為 R0MADRS_1ST,Mkboot2 中指定 R0M_BASE_ADRS 為 R0MADRS_2ND。再增加一個(gè)批處理文件,mkboot. bat,該文件中主要由3條命令使用mkbootl作為 makefile 編譯 B00TR0M,使用 mkboot2 作為 makefile 編譯 B00TR0M,文件合并。文件合并的工具為在VC下自行編寫。新設(shè)備初次使用時(shí),使用特殊的FLASH在線燒錄工具把B00TR0M. bin寫入到FLASH 的第一 B00TR0M區(qū)和第二 B00TR0M區(qū),不用設(shè)置BOOT選擇參數(shù)區(qū)。啟動(dòng)后,設(shè)備從第一 B00TR0M區(qū)啟動(dòng)。進(jìn)行第一次升級(jí)后,設(shè)備從第二 B00TR0M區(qū)啟動(dòng)。此過程為一次正常的升級(jí)過程。進(jìn)行第二次升級(jí)后,設(shè)備從第一 B00TR0M區(qū)啟動(dòng)。此過程為一次正常的升級(jí)過程。繼續(xù)進(jìn)行第三次升級(jí),重啟設(shè)備10秒鐘后(此時(shí)正從第二 B00TR0M區(qū)啟動(dòng)中)再次重啟,設(shè)備從第一 B00TR0M區(qū)啟動(dòng),查看第二 B00TR0M區(qū)試運(yùn)行狀態(tài)被設(shè)置為“試運(yùn)行失敗”。此過程為一次升級(jí)失敗及回退的過程。使用情況完全符合預(yù)期。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。本發(fā)明實(shí)施例提供了一種引導(dǎo)程序的升級(jí)裝置,該引導(dǎo)程序的升級(jí)裝置可以用于實(shí)現(xiàn)上述引導(dǎo)程序的升級(jí)方法。圖6是根據(jù)本發(fā)明實(shí)施例的引導(dǎo)程序的升級(jí)裝置的結(jié)構(gòu)框圖,包括劃分模塊61,第一存儲(chǔ)模塊62,第二存儲(chǔ)模塊63,第一確定模塊64,第二確定模塊 65。下面對(duì)其結(jié)構(gòu)進(jìn)行詳細(xì)描述。劃分模塊61,用于在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū);第一存儲(chǔ)模塊62,連接至劃分模塊61,用于在劃分模塊61劃分的第一引導(dǎo)程序區(qū)中存儲(chǔ)用于正常引導(dǎo)的第一引導(dǎo)程序;第二存儲(chǔ)模塊63,連接至劃分模塊61,用于在劃分模塊61劃分的第二引導(dǎo)程序區(qū)中存儲(chǔ)待升級(jí)的第二引導(dǎo)程序;第一確定模塊64,連接至第二存儲(chǔ)模塊 63,用于確定使用第二存儲(chǔ)模塊63存儲(chǔ)的第二引導(dǎo)程序引導(dǎo)成功;第二確定模塊65,連接至第一確定模塊64和第二存儲(chǔ)模塊63,用于在第一確定模塊64確定第二引導(dǎo)程序引導(dǎo)成功之后,確定第二存儲(chǔ)模塊63存儲(chǔ)的第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。需要說明的是,上述可擦除存儲(chǔ)器可以優(yōu)選的為FLASH。綜上所述,根據(jù)本發(fā)明的上述實(shí)施例,提供了一種引導(dǎo)程序的升級(jí)方法和裝置。由于第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū)均具有明確的地址,從而使得第一引導(dǎo)程序和第二引導(dǎo)程序具有互不相同的地址,解決了相關(guān)技術(shù)中第一引導(dǎo)程序和第二引導(dǎo)程序都需要在一個(gè)地址上運(yùn)行從而需要引入硬件提供地址切換的問題,進(jìn)而可以避免硬件地址切換的引入,降低硬件復(fù)雜度,提高用戶體驗(yàn)需要說明的是,裝置實(shí)施例中描述的引導(dǎo)程序的升級(jí)裝置對(duì)應(yīng)于上述的方法實(shí)施例,其具體的實(shí)現(xiàn)過程在方法實(shí)施例中已經(jīng)進(jìn)行過詳細(xì)說明,在此不再贅述。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種引導(dǎo)程序的升級(jí)方法,其特征在于,包括在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū),其中所述第一引導(dǎo)程序區(qū)中存儲(chǔ)有用于正常引導(dǎo)的第一引導(dǎo)程序,所述第二引導(dǎo)程序區(qū)中存儲(chǔ)有待升級(jí)的第二引導(dǎo)程序;確定使用所述第二引導(dǎo)程序引導(dǎo)成功;確定所述第二引導(dǎo)程序?yàn)樯?jí)后的弓I導(dǎo)程序。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一引導(dǎo)程序的起始地址為所述第一引導(dǎo)程序區(qū)開始的位置,所述第二引導(dǎo)程序的起始地址為所述第二引導(dǎo)程序區(qū)開始的位置。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在確定使用所述第二引導(dǎo)程序引導(dǎo)成功之前,所述方法還包括判斷所述第二引導(dǎo)程序的版本號(hào)是否高于所述第一引導(dǎo)程序的版本號(hào);如果判斷結(jié)果為是,則使用所述第二引導(dǎo)程序引導(dǎo)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在確定使用所述第二引導(dǎo)程序引導(dǎo)成功之前,所述方法還包括判斷是否設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中所述引導(dǎo)失敗標(biāo)志用于指示使用所述第二引導(dǎo)程序引導(dǎo)失敗;如果判斷結(jié)果為否,則使用所述第二引導(dǎo)程序引導(dǎo)。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,在使用所述第二引導(dǎo)程序引導(dǎo)之后, 所述方法還包括判斷是否設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)等待標(biāo)志,其中所述引導(dǎo)等待標(biāo)志用于指示等待使用所述第二引導(dǎo)程序引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中所述引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用所述第二弓I導(dǎo)程序進(jìn)行引導(dǎo)。
6.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,在使用所述第二引導(dǎo)程序引導(dǎo)之后, 所述方法還包括判斷是否設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中所述引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用所述第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志,其中所述引導(dǎo)失敗標(biāo)志用于指示使用所述第二引導(dǎo)程序弓I導(dǎo)失敗。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)失敗標(biāo)志之后,所述方法還包括重啟并使用所述第一引導(dǎo)程序進(jìn)行引導(dǎo)。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,在確定使用所述第二引導(dǎo)程序引導(dǎo)成功之后,所述方法還包括判斷是否設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)進(jìn)行標(biāo)志,其中所述引導(dǎo)進(jìn)行標(biāo)志用于指示正在使用所述第二引導(dǎo)程序進(jìn)行引導(dǎo);如果判斷結(jié)果為是,則設(shè)置與所述第二引導(dǎo)程序?qū)?yīng)的引導(dǎo)成功標(biāo)志,其中所述引導(dǎo)成功標(biāo)志用于指示使用所述第二引導(dǎo)程序弓I導(dǎo)成功。
9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一引導(dǎo)程序區(qū)和所述第二引導(dǎo)程序區(qū)均為512KByte。
10.一種引導(dǎo)程序的升級(jí)裝置,其特征在于,包括劃分模塊,用于在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū); 第一存儲(chǔ)模塊,用于在所述第一引導(dǎo)程序區(qū)中存儲(chǔ)用于正常引導(dǎo)的第一引導(dǎo)程序; 第二存儲(chǔ)模塊,用于在所述第二引導(dǎo)程序區(qū)中存儲(chǔ)待升級(jí)的第二引導(dǎo)程序; 第一確定模塊,用于確定使用所述第二引導(dǎo)程序引導(dǎo)成功; 第二確定模塊,用于確定所述第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。
全文摘要
本發(fā)明公開了一種引導(dǎo)程序的升級(jí)方法及裝置,該方法包括在可擦除存儲(chǔ)器中劃分第一引導(dǎo)程序區(qū)和第二引導(dǎo)程序區(qū),其中第一引導(dǎo)程序區(qū)中存儲(chǔ)有用于正常引導(dǎo)的第一引導(dǎo)程序,第二引導(dǎo)程序區(qū)中存儲(chǔ)有待升級(jí)的第二引導(dǎo)程序;確定使用第二引導(dǎo)程序引導(dǎo)成功;確定第二引導(dǎo)程序?yàn)樯?jí)后的引導(dǎo)程序。本發(fā)明可以避免硬件地址切換的引入,降低硬件復(fù)雜度,提高用戶體驗(yàn)。
文檔編號(hào)G06F9/445GK102486733SQ201010572320
公開日2012年6月6日 申請(qǐng)日期2010年12月3日 優(yōu)先權(quán)日2010年12月3日
發(fā)明者陳久松 申請(qǐng)人:中興通訊股份有限公司