程序升級方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種程序升級方法和裝置。
【背景技術(shù)】
[0002]現(xiàn)有的程序升級技術(shù)采用直接升級的方法,該方法在程序升級過程中出現(xiàn)異常的情況時(shí),如升級過程中斷電、升級不成功等情況沒有具體的處理辦法,會導(dǎo)致升級之后程序運(yùn)行不正常,出現(xiàn)亂跑亂飛的現(xiàn)象;另外,當(dāng)程序升級過程中出現(xiàn)異常情況,需要恢復(fù)原來的程序,但是原來的程序已經(jīng)丟失或者被刪除,無法使其恢復(fù)。
[0003]針對現(xiàn)有的由于程序升級失敗導(dǎo)致程序升級之后運(yùn)行異常的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實(shí)施例提供了一種程序升級方法和裝置,以至少解決由于程序升級失敗導(dǎo)致程序升級之后運(yùn)行異常的技術(shù)問題。
[0005]根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種程序升級方法,該程序升級方法包括:在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài);若判斷出上述程序的升級狀態(tài)為待升級狀態(tài),則在升級程序區(qū)內(nèi)升級上述程序;若上述程序升級完成,則變更升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)為無升級狀態(tài);若上述程序升級未完成,則保留上述升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)。
[0006]進(jìn)一步地,在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài)之后,上述方法還包括:若判斷出上述程序的升級狀態(tài)為上述無升級狀態(tài),則在程序運(yùn)行區(qū)運(yùn)行上述程序;在上述程序運(yùn)行區(qū)運(yùn)行上述程序的過程中,上述方法還包括:若接收到升級指令,在升級狀態(tài)區(qū)內(nèi)設(shè)置升級標(biāo)志位,以記錄上述程序的升級狀態(tài)為上述待升級狀態(tài)。
[0007]進(jìn)一步地,在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài)包括:獲取升級狀態(tài)區(qū)內(nèi)的升級標(biāo)志位;在上述程序引導(dǎo)區(qū)判斷上述升級標(biāo)志位所指示的上述程序的升級狀態(tài);若上述升級標(biāo)志位的屬性值為第一預(yù)設(shè)值,則判斷出上述程序的升級狀態(tài)為上述待升級狀態(tài);若上述升級標(biāo)志位的屬性值為第二預(yù)設(shè)值,則判斷出上述程序的升級狀態(tài)為上述無升級狀態(tài)。
[0008]進(jìn)一步地,在升級程序區(qū)內(nèi)升級上述程序包括:獲取上述程序的升級數(shù)據(jù);擦除上述程序的當(dāng)前數(shù)據(jù)并寫入上述升級數(shù)據(jù)。
[0009]進(jìn)一步地,在擦除上述程序的當(dāng)前數(shù)據(jù)之前,上述方法還包括:將上述程序的當(dāng)前數(shù)據(jù)保存入上述程序備份區(qū),并將上述程序備份區(qū)中保留的時(shí)間最早的版本數(shù)據(jù)刪除。
[0010]進(jìn)一步地,在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài)之前,方法還包括:將芯片至少劃分為下述區(qū)域:程序引導(dǎo)區(qū)、升級程序區(qū)、升級狀態(tài)區(qū)、程序運(yùn)行區(qū)以及程序備份區(qū)。
[0011]根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種程序升級裝置,該裝置包括:判斷模塊,用于在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài);升級模塊,用于若判斷出上述程序的升級狀態(tài)為待升級狀態(tài),則在升級程序區(qū)內(nèi)升級上述程序;變更模塊,用于若上述程序升級完成,則變更升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)為無升級狀態(tài);保留模塊,用于若上述程序升級未完成,則保留上述升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)。
[0012]進(jìn)一步地,上述裝置還包括:運(yùn)行模塊,用于在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài)之后,若判斷出上述程序的升級狀態(tài)為上述無升級狀態(tài),則在程序運(yùn)行區(qū)運(yùn)行上述程序;設(shè)置模塊,用于在上述程序運(yùn)行區(qū)運(yùn)行上述程序的過程中,若接收到升級指令,在升級狀態(tài)區(qū)內(nèi)設(shè)置升級標(biāo)志位,以記錄上述程序的升級狀態(tài)為上述待升級狀態(tài)。
[0013]進(jìn)一步地,上述判斷模塊包括:第一獲取子模塊,用于獲取升級狀態(tài)區(qū)內(nèi)的升級標(biāo)志位;判斷子模塊,用于在上述程序引導(dǎo)區(qū)判斷上述升級標(biāo)志位所指示的上述程序的升級狀態(tài);第一確定子模塊,用于若上述升級標(biāo)志位的屬性值為第一預(yù)設(shè)值,則判斷出上述程序的升級狀態(tài)為上述待升級狀態(tài);第二確定子模塊,用于若上述升級標(biāo)志位的屬性值為第二預(yù)設(shè)值,則判斷出上述程序的升級狀態(tài)為上述無升級狀態(tài)。
[0014]進(jìn)一步地,上述升級模塊包括:第二獲取子模塊,用于獲取上述程序的升級數(shù)據(jù);擦除子模塊,用于擦除上述程序的當(dāng)前數(shù)據(jù)并寫入上述升級數(shù)據(jù)。
[0015]進(jìn)一步地,上述裝置還包括:備份模塊,用于在擦除上述程序的當(dāng)前數(shù)據(jù)之前,將上述程序的當(dāng)前數(shù)據(jù)保存入上述程序備份區(qū),并將上述程序備份區(qū)中保留的時(shí)間最早的版本數(shù)據(jù)刪除。
[0016]采用本發(fā)明實(shí)施例,在程序引導(dǎo)區(qū)判斷出程序需要升級的情況下,在升級程序區(qū)升級該程序,若升級完成,變更升級狀態(tài);若升級不成功,不變更升級狀態(tài),則在下次開機(jī)程序引導(dǎo)區(qū)判斷時(shí),認(rèn)為該程序需要升級,進(jìn)入升級程序區(qū)升級該程序,而不是進(jìn)入程序運(yùn)行區(qū)運(yùn)行該程序。通過上述實(shí)施例,在程序升級不成功時(shí)記錄該程序的狀態(tài)仍為待升級狀態(tài),從而避免了升級不成功而進(jìn)入程序運(yùn)行,導(dǎo)致程序運(yùn)行混亂的情況,解決了現(xiàn)有技術(shù)中,由于程序升級失敗導(dǎo)致程序升級之后運(yùn)行異常的技術(shù)問題,實(shí)現(xiàn)了程序升級失敗在下次開機(jī)時(shí)仍會升級該程序的效果。
【附圖說明】
[0017]此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0018]圖1是根據(jù)本發(fā)明實(shí)施例的一種程序升級方法的方法流程圖;
[0019]圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的芯片程序區(qū)域的示意圖;
[0020]圖3是根據(jù)本發(fā)明實(shí)施例的一種程序升級裝置的示意圖。
【具體實(shí)施方式】
[0021]為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0022]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0023]根據(jù)本發(fā)明實(shí)施例,提供了一種程序升級方法的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0024]圖1是根據(jù)本發(fā)明實(shí)施例的程序升級方法的方法流程圖,如圖1所示,該方法包括如下步驟:
[0025]步驟S102,在程序引導(dǎo)區(qū)判斷程序的升級狀態(tài)。
[0026]步驟S104,若判斷出上述程序的升級狀態(tài)為待升級狀態(tài),則在升級程序區(qū)內(nèi)升級上述程序。
[0027]其中,若上述程序升級完成,則執(zhí)行步驟S106 ;若上述程序升級未完成,則執(zhí)行步驟 S108。
[0028]步驟S106,若程序升級完成,則變更升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)為無升級狀態(tài)。
[0029]步驟S108,若程序升級未完成,則保留上述升級狀態(tài)區(qū)中記錄的上述程序的升級狀態(tài)。
[0030]采用本發(fā)明實(shí)施例,在程序引導(dǎo)區(qū)判斷出程序需要升級的情況下,在升級程序區(qū)升級該程序,若升級完成,變更升級狀態(tài);若升級不成功,不變更升級狀態(tài),則在下次開機(jī)程序引導(dǎo)區(qū)判斷時(shí),認(rèn)為該程序需要升級,進(jìn)入升級程序區(qū)升級該程序,而不是進(jìn)入程序運(yùn)行區(qū)運(yùn)行該程序。通過上述實(shí)施例,在程序升級不成功時(shí)記錄該程序的狀態(tài)仍為待升級狀態(tài),從而避免了升級不成功而進(jìn)入程序運(yùn)行,導(dǎo)致程序運(yùn)行混亂的情況,解決了現(xiàn)有技術(shù)中,由于程序升級失敗導(dǎo)致程序升級之后運(yùn)行異常的技術(shù)問題,實(shí)現(xiàn)了程序升級失敗在下次開機(jī)時(shí)仍會升級該程序的效果。
[0031]需要說明的是,通過升級狀態(tài)區(qū)實(shí)時(shí)記錄升級狀態(tài),