專利名稱:一種Boot軟件升級方法和一種Boot軟件恢復(fù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件升級技術(shù),特別是指一種Boot軟件升級方法和一種Boot軟件恢復(fù)方法。
背景技術(shù):
一般而言,軟件的版本越高,提供的功能越多越強(qiáng),所以大多數(shù)軟件都提供升級功能。軟件的升級,可以在不改變硬件設(shè)備的條件下,修改原有軟件版本的缺陷,實(shí)現(xiàn)更多的功能。升級時,需要升級的功能文件通常都是集合成一個文件,以二進(jìn)制的形式存在。
對于軟件來說,通常將整體軟件根據(jù)功能的不同,存儲在不同的ROM空間,軟件存儲區(qū)的劃分使得整體軟件依賴物理存儲而分開,從而實(shí)現(xiàn)了升級部分軟件功能。以手持設(shè)備軟件存儲區(qū)為例,一般軟件存儲區(qū)的劃分如圖1所示,圖1中的軟件存儲區(qū)分為四個部分Boot存儲區(qū)、App可執(zhí)行文件區(qū)、文件系統(tǒng)區(qū)和保留的專用數(shù)據(jù)存儲區(qū)。各個部分的功能如下Boot存儲區(qū)存儲的是Boot軟件,Boot軟件是整個軟件的引導(dǎo),有三個功能1、軟件啟動時,引導(dǎo)軟件的啟動過程;2、軟件升級時,通過PC端的相關(guān)軟件與PC建立通信,并把PC上的App代碼下載到手持設(shè)備中;3、在App軟件損壞時,引導(dǎo)重新加載App的可執(zhí)行二進(jìn)制文件到“App可執(zhí)行文件區(qū)”。
App可執(zhí)行文件區(qū),用于存儲軟件運(yùn)行程序。
文件系統(tǒng)區(qū),用于存儲文件,如攝像頭獲取的圖片文件、通過網(wǎng)絡(luò)獲取的MP3文件等。
保留的專用數(shù)據(jù)存儲區(qū),用于保留一些關(guān)鍵參數(shù),包括某些參數(shù)的備份。
通常所說的軟件升級,主要是指升級App可執(zhí)行文件區(qū)中的軟件,升級方法為Boot軟件通過和PC端的相關(guān)軟件與PC建立通信,并把PC中的App軟件下載到手持設(shè)備中。
由于軟件的升級需要運(yùn)行Boot軟件,以和PC端建立連接,所以不能夠以直接下載軟件的方式實(shí)現(xiàn)對Boot軟件自身的升級。一旦Boot軟件遭到破壞或需要升級時,只能通過專用的讀寫工具,如JTAG,由專業(yè)人員將新的Boot軟件重新寫到原Boot存儲區(qū),覆蓋掉原先的軟件,才能夠?qū)崿F(xiàn)Boot軟件的升級。
在PC或其他Boot軟件存儲在專用的Boot芯片中的設(shè)備中,對Boot的升級,采用的方法是,將Boot芯片從設(shè)備中取出,然后使用專用的讀寫工具,將升級軟件寫入到Boot芯片中,然后再將Boot芯片放回設(shè)備中;當(dāng)Boot芯片中的Boot程序遭到破壞時,也只能用上述辦法,恢復(fù)Boot軟件。
由以上技術(shù)方案可以看出,Boot軟件的升級必須由專業(yè)人員使用專用的讀寫工具進(jìn)行,對于普通用戶來說,實(shí)現(xiàn)困難,無法像升級其它軟件那樣,直接獲取升級軟件,實(shí)現(xiàn)Boot軟件的升級;并且在Boot軟件的升級過程中,由于使用了新的Boot軟件覆蓋了原有Boot軟件,導(dǎo)致了在升級失敗時,無法直接恢復(fù)原有Boot軟件;此外,當(dāng)Boot軟件遭到破壞后,必須由專業(yè)人員使用專用的讀寫工具才能恢復(fù),實(shí)現(xiàn)起來比較困難。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的第一目的在于提供一種Boot軟件的升級方法,該方法實(shí)現(xiàn)容易,能夠直接獲取升級軟件對Boot軟件升級;本發(fā)明的第二目的在于提供一種Boot軟件的恢復(fù)方法,該方法實(shí)現(xiàn)容易,不必由專業(yè)人員使用專用的讀寫工具進(jìn)行恢復(fù),能夠直接恢復(fù)遭到損壞的Boot軟件。
為了達(dá)到上述第一目的,本發(fā)明提供了一種Boot軟件的升級方法,該方法包括以下步驟A、系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,系統(tǒng)啟動完成后,下載Boot升級軟件,將Boot升級軟件存儲到Boot存儲備區(qū);B、系統(tǒng)重新啟動,運(yùn)行Boot存儲備區(qū)中Boot升級軟件。
較佳地,步驟A中,下載Boot升級軟件的方法為下載Boot升級軟件到非Boot存儲區(qū);將Boot升級軟件存儲到Boot存儲備區(qū)的方法為將Boot升級軟件從非Boot存儲區(qū)讀出后存儲到Boot存儲備區(qū)。
較佳地,步驟B后,進(jìn)一步包括C、判斷Boot存儲備區(qū)中的Boot升級軟件運(yùn)行是否正常,如果運(yùn)行不正常,系統(tǒng)重新啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件。
較佳地,步驟C中,進(jìn)一步包括如果運(yùn)行正常,系統(tǒng)將Boot升級軟件存儲到Boot存儲主區(qū);上述步驟C中,運(yùn)行Boot存儲主區(qū)中的Boot軟件后,進(jìn)一步包括系統(tǒng)啟動完成后,將Boot存儲主區(qū)中的Boot軟件存儲到Boot存儲備區(qū)。
較佳地,該方法進(jìn)一步包括預(yù)先設(shè)置Boot啟動標(biāo)志,該標(biāo)志有兩個值,分別對應(yīng)于運(yùn)行Boot存儲主區(qū)中的Boot軟件和Boot存儲備區(qū)中的Boot軟件;系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,根據(jù)Boot啟動標(biāo)志的值運(yùn)行Boot存儲主區(qū)中的Boot軟件或Boot存儲備區(qū)中的Boot軟件;則步驟A后,進(jìn)一步包括系統(tǒng)將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
較佳地,該方法進(jìn)一步包括預(yù)先設(shè)置預(yù)引導(dǎo)程序;則上述查詢Boot啟動標(biāo)志為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志。
較佳地,步驟B后,進(jìn)一步包括C1、預(yù)引導(dǎo)程序判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行不正常,則升級失敗,預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲主區(qū)中Boot軟件的值,然后重新啟動系統(tǒng)。
較佳地,該方法進(jìn)一步包括預(yù)先在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器,則上述的判斷Boot軟件運(yùn)行是否正常的方法為如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常。
較佳地,步驟C1中,進(jìn)一步包括如果運(yùn)行正常,系統(tǒng)將Boot升級軟件存儲到Boot存儲主區(qū);在系統(tǒng)重新啟動后,進(jìn)一步包括將Boot存儲主區(qū)中的Boot軟件存儲到Boot存儲備區(qū)。
為了達(dá)到上述第二目的,本發(fā)明提供了一種Boot軟件的恢復(fù)方法,該方法包括以下步驟a、系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常則繼續(xù)運(yùn)行;否則,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件。
較佳地,步驟a中,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件后,進(jìn)一步包括b、系統(tǒng)啟動完成后,將Boot存儲備區(qū)中的Boot軟件存儲到Boot存儲主區(qū)。
較佳地,該方法進(jìn)一步包括預(yù)先設(shè)置Boot啟動標(biāo)志,該標(biāo)志有兩個值,分別對應(yīng)于運(yùn)行Boot存儲主區(qū)中的Boot軟件和Boot存儲備區(qū)中的Boot軟件;系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,根據(jù)Boot啟動標(biāo)志的值運(yùn)行Boot存儲主區(qū)中的Boot軟件或Boot存儲備區(qū)中的Boot軟件;則步驟a中,重新啟動系統(tǒng)前,進(jìn)一步包括將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
較佳地,該方法進(jìn)一步包括預(yù)先設(shè)置預(yù)引導(dǎo)程序,上述查詢Boot啟動標(biāo)志為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志;上述將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
較佳地,該方法進(jìn)一步包括預(yù)先在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器,則上述判斷Boot軟件運(yùn)行是否正常的方法為如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常。
由以上技術(shù)方案可以看出,本發(fā)明中的Boot軟件升級方法,通過設(shè)置兩個Boot存儲區(qū),使得升級時可以將升級軟件存儲到當(dāng)前沒有運(yùn)行的Boot存儲區(qū),實(shí)現(xiàn)了不必使用專用的讀寫工具進(jìn)行Boot的升級,大大降低了升級的難度;并且由于本發(fā)明中了設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū)兩個Boot存儲區(qū),并設(shè)置了Boot啟動標(biāo)志和預(yù)引導(dǎo)程序,使得在Boot軟件升級失敗時,重新運(yùn)行Boot存儲主區(qū)中的Boot軟件,并將其復(fù)制到Boot存儲備區(qū),實(shí)現(xiàn)了在升級失敗后,可以恢復(fù)原有Boot軟件;此外,本發(fā)明中的Boot軟件的恢復(fù)方法,通過設(shè)置兩個Boot存儲區(qū),實(shí)現(xiàn)了在Boot存儲主區(qū)遭到破壞后,運(yùn)行Boot存儲備區(qū)的Boot軟件,然后對遭到破壞的Boot存儲主區(qū)中的Boot軟件進(jìn)行恢復(fù),不必由專業(yè)人員使用專用讀寫工具來實(shí)現(xiàn)Boot軟件的恢復(fù),大大降低了Boot軟件恢復(fù)的難度。
圖1為現(xiàn)有技術(shù)手持設(shè)備存儲區(qū)示意圖;圖2為本發(fā)明實(shí)施例中的手持設(shè)備Boot存儲區(qū)示意圖;圖3為本發(fā)明中Boot軟件升級方法實(shí)施例的流程圖;圖4為本發(fā)明中Boot軟件恢復(fù)方法實(shí)施例的流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述。
本發(fā)明包括一種Boot軟件的升級方法,該方法在存儲區(qū)中,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括以下步驟A、系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,系統(tǒng)啟動完成后,下載Boot升級軟件,將Boot升級軟件存儲到Boot存儲備區(qū);B、系統(tǒng)重新啟動,運(yùn)行Boot存儲備區(qū)中Boot升級軟件。
本發(fā)明還包括一種Boot軟件恢復(fù)方法,該方法中,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括步驟系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常則繼續(xù)運(yùn)行;否則,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件。
Boot軟件的升級方法在手持設(shè)備中的應(yīng)用為本發(fā)明的第一實(shí)施例,以下對其進(jìn)行詳細(xì)說明。
如圖2所示,在本實(shí)施例中,預(yù)先在手持設(shè)備的存儲區(qū)中設(shè)置兩個Boot存儲區(qū),其中,一個為Boot存儲主區(qū),另一個為Boot存儲備區(qū),分別存儲完整的Boot升級軟件;并設(shè)置Boot啟動標(biāo)志,該標(biāo)志為1時,運(yùn)行Boot存儲主區(qū)中的Boot軟件;為0時,運(yùn)行Boot存儲備區(qū)中的Boot軟件,Boot啟動標(biāo)志也可以設(shè)置為其他的具體值,在此只是以1和0為例說明;此外,還設(shè)置查詢Boot標(biāo)志的預(yù)引導(dǎo)程序,預(yù)引導(dǎo)程序在系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,并在檢測到Boot軟件運(yùn)行不正常時,修改Boot啟動標(biāo)志;為判斷Boot軟件運(yùn)行是否正常,還在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器;正常狀態(tài)下,Boot啟動標(biāo)志默認(rèn)為1。
在手持設(shè)備或非手持設(shè)備的其他設(shè)備中,如果Boot軟件存儲于設(shè)備的存儲區(qū)中,可以與上述方法一樣,在存儲區(qū)中設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),但將預(yù)引導(dǎo)程序和Boot啟動標(biāo)志設(shè)置于單獨(dú)的芯片之中,或?qū)㈩A(yù)引導(dǎo)程序設(shè)置于單獨(dú)的芯片中,而Boot啟動標(biāo)志設(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0;如果Boot軟件與其它軟件分開存儲,不存儲于設(shè)備的存儲區(qū)中,而存儲在單獨(dú)的芯片中,則可以設(shè)置兩個存儲Boot軟件的芯片,一個芯片為Boot存儲主區(qū),另一個為Boot存儲備區(qū);預(yù)引導(dǎo)程序可以單獨(dú)設(shè)置在預(yù)引導(dǎo)芯片中;Boot啟動標(biāo)志可以設(shè)置在預(yù)引導(dǎo)芯片中,或?qū)⑵湓O(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0;在Boot軟件存儲在單獨(dú)的芯片中的設(shè)備中,還可以在一個Boot芯片中,設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū);對于預(yù)引導(dǎo)程序,可以單獨(dú)設(shè)置在預(yù)引導(dǎo)芯片中,也可以設(shè)置在Boot芯片中;Boot啟動標(biāo)志可以設(shè)置在預(yù)引導(dǎo)芯片中,或Boot芯片中,或?qū)⑵湓O(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0。
在進(jìn)行了上述設(shè)置后,本實(shí)施例流程如圖3所示,具體步驟如下步驟301、系統(tǒng)啟動時,預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志,正常狀態(tài)下,該標(biāo)志為1,運(yùn)行Boot存儲主區(qū)中的Boot軟件,系統(tǒng)啟動完成后,與升級媒介建立連接,獲得升級軟件,將其存儲在非Boot存儲區(qū);本步驟中,通過升級媒介獲得升級軟件的方法,對于手持設(shè)備來說,可以是通過有線或無線接口從PC、其它手持設(shè)備或互聯(lián)網(wǎng)獲得;對于PC或其他設(shè)備來說,可以是通過有線或無線接口從互聯(lián)網(wǎng)、其他PC或PC的其他存儲設(shè)備中獲得;步驟302、系統(tǒng)將升級軟件復(fù)制到Boot存儲備區(qū),然后將Boot啟動標(biāo)志更改為0;步驟303、重新啟動系統(tǒng),預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志,該標(biāo)志為0,運(yùn)行Boot存儲備區(qū)中的Boot軟件,啟動過程中,預(yù)引導(dǎo)程序判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常執(zhí)行步驟304、305;否則執(zhí)行步驟306、307;判斷Boot軟件運(yùn)行是否正常,是這樣進(jìn)行的如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常;步驟304、系統(tǒng)將升級軟件復(fù)制到Boot存儲主區(qū),升級成功;本步驟中,可以是存儲在非Boot存儲區(qū)中的Boot升級軟件存儲到Boot存儲主區(qū),也可以是將Boot存儲備區(qū)中的Boot升級軟件復(fù)制到Boot存儲主區(qū);步驟305、系統(tǒng)將Boot啟動標(biāo)志更改為1,然后重新啟動系統(tǒng);步驟306、預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志更改為1,然后重新啟動系統(tǒng),預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志,該標(biāo)志為1,運(yùn)行Boot存儲主區(qū)中的Boot軟件;步驟307、系統(tǒng)將Boot存儲主區(qū)中的Boot軟件復(fù)制到Boot存儲備區(qū),升級失敗。
本實(shí)施例中,通過設(shè)置兩個Boot存儲區(qū),實(shí)現(xiàn)了不必使用專用的讀寫工具進(jìn)行Boot的升級,大大降低了升級的難度;并且由于設(shè)置了Boot啟動標(biāo)志和預(yù)引導(dǎo)程序,使得在Boot軟件升級失敗時,可以重新運(yùn)行Boot存儲主區(qū)的Boot軟件,并將其存儲到Boot存儲備區(qū),實(shí)現(xiàn)了升級失敗后,可以恢復(fù)原有Boot軟件。
Boot軟件恢復(fù)方法在手持設(shè)備中的應(yīng)用為本發(fā)明的第二實(shí)施例,以下對其進(jìn)行詳細(xì)說明。
如圖2所示,在本實(shí)施例中,預(yù)先在手持設(shè)備的存儲區(qū)中設(shè)置兩個Boot存儲區(qū),其中,一個為Boot存儲主區(qū),另一個為Boot存儲備區(qū),分別存儲完整的Boot升級軟件;并設(shè)置Boot啟動標(biāo)志,該標(biāo)志為1時,運(yùn)行Boot存儲主區(qū)中的Boot軟件;為0時,運(yùn)行Boot存儲備區(qū)中的Boot軟件,Boot啟動標(biāo)志也可以設(shè)置為其他的具體值,在此只是以1和0為例說明;還設(shè)置查詢Boot標(biāo)志的預(yù)引導(dǎo)程序,預(yù)引導(dǎo)程序在系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,并且在檢測到Boot軟件運(yùn)行不正常時,修改Boot啟動標(biāo)志;預(yù)引導(dǎo)程序可以存儲于Boot存儲區(qū)中,也可以單獨(dú)存儲于預(yù)引導(dǎo)芯片中;為判斷Boot運(yùn)行是否正常,在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器;正常狀態(tài)下,Boot啟動標(biāo)志默認(rèn)為1。
在手持設(shè)備或非手持設(shè)備的其他設(shè)備中,如果Boot軟件存儲于設(shè)備的存儲區(qū)中,可以與上述方法一樣,在存儲區(qū)中設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),但將預(yù)引導(dǎo)程序和Boot啟動標(biāo)志設(shè)置于單獨(dú)的芯片之中,或?qū)㈩A(yù)引導(dǎo)程序設(shè)置于單獨(dú)的芯片中,而Boot啟動標(biāo)志設(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0;如果Boot軟件與其它軟件分開存儲,不存儲于設(shè)備的存儲區(qū)中,而Boot軟件存儲在單獨(dú)的芯片中,可以設(shè)置兩個存儲Boot軟件的芯片,一個芯片為Boot存儲主區(qū),另一個為Boot存儲備區(qū);對于預(yù)引導(dǎo)程序可以單獨(dú)設(shè)置在預(yù)引導(dǎo)芯片中;Boot啟動標(biāo)志可以設(shè)置在預(yù)引導(dǎo)芯片中,或?qū)⑵湓O(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0;在Boot軟件存儲在單獨(dú)的芯片中的設(shè)備中,還可以在一個Boot芯片中,設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū);對于預(yù)引導(dǎo)程序,可以單獨(dú)設(shè)置在預(yù)引導(dǎo)芯片中,也可以設(shè)置在Boot芯片中;Boot啟動標(biāo)志可以設(shè)置在預(yù)引導(dǎo)芯片中,或Boot芯片中,或?qū)⑵湓O(shè)置為有高低電平的硬件,系統(tǒng)啟動時判斷該硬件電平狀態(tài),電平高為1,電平低為0。
在進(jìn)行了上述設(shè)置后,Boot軟件恢復(fù)方法流程如圖4所示,具體步驟如下步驟401~403、系統(tǒng)啟動,預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志,正常狀態(tài)下,該標(biāo)志為1,運(yùn)行Boot存儲主區(qū)的Boot軟件,判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常則繼續(xù)運(yùn)行;否則,預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志更改為0,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件;判斷Boot軟件運(yùn)行是否正常,是這樣進(jìn)行的如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常;步驟404、重新啟動系統(tǒng),啟動完成后,系統(tǒng)將Boot存儲備區(qū)中的Boot軟件復(fù)制到Boot存儲主區(qū);步驟405、系統(tǒng)更改Boot啟動標(biāo)志為1,重新啟動系統(tǒng)。
本實(shí)施例中,通過設(shè)置兩個Boot存儲區(qū)、Boot啟動標(biāo)志和預(yù)引導(dǎo)程序,實(shí)現(xiàn)了在Boot存儲主區(qū)遭到破壞后,能夠運(yùn)行Boot存儲備區(qū)的Boot軟件,然后對遭到破壞的Boot存儲主區(qū)進(jìn)行恢復(fù),不必由專業(yè)人員使用專用讀寫工具來實(shí)現(xiàn)Boot軟件的恢復(fù),大大降低了Boot軟件恢復(fù)的難度。
在具體的實(shí)施過程中可對根據(jù)本發(fā)明的方法進(jìn)行適當(dāng)?shù)母倪M(jìn),以適應(yīng)具體情況的具體需要。因此可以理解,根據(jù)本發(fā)明的具體實(shí)施方式
只是起示范作用,并不用以限制本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種Boot軟件升級方法,其特征在于,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括以下步驟A、系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,系統(tǒng)啟動完成后,下載Boot升級軟件,將Boot升級軟件存儲到Boot存儲備區(qū);B、系統(tǒng)重新啟動,運(yùn)行Boot存儲備區(qū)中Boot升級軟件。
2.如權(quán)利要求1所述的方法,其特征在于,所述步驟A中,下載Boot升級軟件的方法為下載Boot升級軟件到非Boot存儲區(qū);將Boot升級軟件存儲到Boot存儲備區(qū)的方法為將Boot升級軟件從非Boot存儲區(qū)讀出后存儲到Boot存儲備區(qū)。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述步驟B后,進(jìn)一步包括C、判斷Boot存儲備區(qū)中的Boot升級軟件運(yùn)行是否正常,如果運(yùn)行不正常,系統(tǒng)重新啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件。
4.如權(quán)利要求3所述的方法,其特征在于,所述步驟C中,進(jìn)一步包括如果運(yùn)行正常,系統(tǒng)將Boot升級軟件存儲到Boot存儲主區(qū);所述步驟C中,運(yùn)行Boot存儲主區(qū)中的Boot軟件后,進(jìn)一步包括系統(tǒng)啟動完成后,將Boot存儲主區(qū)中的Boot軟件存儲到Boot存儲備區(qū)。
5.如權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先設(shè)置Boot啟動標(biāo)志,該標(biāo)志有兩個值,分別對應(yīng)于運(yùn)行Boot存儲主區(qū)中的Boot軟件和Boot存儲備區(qū)中的Boot軟件;系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,根據(jù)Boot啟動標(biāo)志的值運(yùn)行Boot存儲主區(qū)中的Boot軟件或Boot存儲備區(qū)中的Boot軟件;所述步驟A后,進(jìn)一步包括系統(tǒng)將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
6.如權(quán)利要求5所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先設(shè)置預(yù)引導(dǎo)程序;則所述的查詢Boot啟動標(biāo)志為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志。
7.如權(quán)利要求6所述的方法,其特征在于,所述步驟B后,進(jìn)一步包括C1、預(yù)引導(dǎo)程序判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行不正常,則升級失敗,預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲主區(qū)中Boot軟件的值,然后重新啟動系統(tǒng)。
8.如權(quán)利要求7所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器,則所述的判斷Boot軟件運(yùn)行是否正常的方法為如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常。
9.如權(quán)利要求7或8所述的方法,其特征在于,所述步驟C1中,進(jìn)一步包括如果運(yùn)行正常,系統(tǒng)將Boot升級軟件存儲到Boot存儲主區(qū);在系統(tǒng)重新啟動后,進(jìn)一步包括將Boot存儲主區(qū)中的Boot軟件存儲到Boot存儲備區(qū)。
10.一種Boot軟件恢復(fù)方法,其特征在于,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括以下步驟a、系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常則繼續(xù)運(yùn)行;否則,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件。
11.如權(quán)利要求10所述的方法,其特征在于,所述步驟a中,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件后,進(jìn)一步包括b、系統(tǒng)啟動完成后,將Boot存儲備區(qū)中的Boot軟件存儲到Boot存儲主區(qū)。
12.如權(quán)利要求10或11所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先設(shè)置Boot啟動標(biāo)志,該標(biāo)志有兩個值,分別對應(yīng)于運(yùn)行Boot存儲主區(qū)中的Boot軟件和Boot存儲備區(qū)中的Boot軟件;系統(tǒng)啟動時,查詢Boot啟動標(biāo)志,根據(jù)Boot啟動標(biāo)志的值運(yùn)行Boot存儲主區(qū)中的Boot軟件或Boot存儲備區(qū)中的Boot軟件;所述步驟a中,重新啟動系統(tǒng)前,進(jìn)一步包括將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
13.如權(quán)利要求12所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先設(shè)置預(yù)引導(dǎo)程序,所述的查詢Boot啟動標(biāo)志為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序查詢Boot啟動標(biāo)志;所述的將Boot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值為,預(yù)先設(shè)置的預(yù)引導(dǎo)程序?qū)oot啟動標(biāo)志設(shè)置為運(yùn)行Boot存儲備區(qū)中Boot軟件的值。
14.如權(quán)利要求13所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)先在預(yù)引導(dǎo)程序中設(shè)置Boot啟動定時器,則所述的判斷Boot軟件運(yùn)行是否正常的方法為如果預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時前有參數(shù)返回,且返回參數(shù)正確,則Boot軟件運(yùn)行正常;如果預(yù)引導(dǎo)程序檢測到Boot軟件運(yùn)行過程中,初始化返回參數(shù)出現(xiàn)錯誤,或預(yù)引導(dǎo)程序檢測到Boot啟動定時器超時,且Boot軟件沒有返回參數(shù),則Boot軟件運(yùn)行不正常。
全文摘要
本發(fā)明公開了一種Boot軟件升級方法,該方法中,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括以下步驟A.系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,系統(tǒng)啟動完成后,下載Boot升級軟件,將Boot升級軟件存儲到Boot存儲備區(qū);B.系統(tǒng)重新啟動,運(yùn)行Boot存儲備區(qū)中Boot升級軟件。本發(fā)明還公開了一種Boot軟件恢復(fù)方法,該方法中,預(yù)先設(shè)置Boot存儲主區(qū)和Boot存儲備區(qū),分別存儲完整的Boot軟件,該方法還包括步驟a.系統(tǒng)啟動,運(yùn)行Boot存儲主區(qū)中的Boot軟件,判斷Boot軟件運(yùn)行是否正常,如果運(yùn)行正常則繼續(xù)運(yùn)行;否則,重新啟動系統(tǒng),運(yùn)行Boot存儲備區(qū)中的Boot軟件。本發(fā)明中,不必由專業(yè)人員使用專用軟件來實(shí)現(xiàn)Boot軟件的升級和恢復(fù),大大降低了Boot軟件恢復(fù)的難度。
文檔編號G06F9/445GK1749963SQ200410074749
公開日2006年3月22日 申請日期2004年9月14日 優(yōu)先權(quán)日2004年9月14日
發(fā)明者楊鵬亮 申請人:華為技術(shù)有限公司