ru = 1,backup = I時(shí),即處于待提交狀態(tài),此時(shí)當(dāng)接收到提價(jià)命令commit時(shí),所述狀態(tài)機(jī)的狀態(tài)為Normal,即cru = 0,backup = O。且在需同步狀態(tài)下,如果發(fā)現(xiàn)新的軟件版本有缺陷,或者不滿足需求,那么網(wǎng)管模塊可以發(fā)送Backward命令,激活存儲(chǔ)舊軟件版本的備份分區(qū),即原非激活分區(qū),并重啟設(shè)備。從而使設(shè)備回到need reset狀態(tài),此時(shí)設(shè)備運(yùn)行的是舊的軟件版本。再通過sync命令,可以使設(shè)備回復(fù)到初始狀態(tài)。
[0039]請(qǐng)參閱圖5,顯示為本發(fā)明的一種軟件升級(jí)方法在一具體實(shí)施例中的流程示意圖。通常的嵌入式設(shè)備都是通過保存兩份系統(tǒng)軟件來實(shí)現(xiàn),他們分別存放在兩個(gè)不同的存儲(chǔ)設(shè)備分區(qū)上,或者兩片不同的物理存儲(chǔ)設(shè)備。其系統(tǒng)架構(gòu)和原理如圖2和圖3所示,例如圖2,顯示為現(xiàn)有技術(shù)中嵌入式設(shè)備的兩份系統(tǒng)軟件存放于同一存儲(chǔ)設(shè)備中的示意圖,其中所述系統(tǒng)軟件I存儲(chǔ)于當(dāng)前激活分區(qū),所述系統(tǒng)軟件2存儲(chǔ)于非激活分區(qū),即通常所述的備份分區(qū)。且如圖3所示,顯示為現(xiàn)有技術(shù)中嵌入式設(shè)備的兩份系統(tǒng)軟件存放于不同的存儲(chǔ)設(shè)備中的示意圖,其中所述系統(tǒng)軟件I存儲(chǔ)于存儲(chǔ)設(shè)備I (當(dāng)前激活分區(qū)),所述系統(tǒng)軟件2存儲(chǔ)于存儲(chǔ)設(shè)備2 (非激活分區(qū)),即通常所說的備份分區(qū)。
[0040]所述軟件升級(jí)方法,應(yīng)用于一嵌入式設(shè)備中,包括以下步驟:
[0041]Sll:根據(jù)檢測的激活分區(qū)的軟件版本獲得的激活分區(qū)版本標(biāo)識(shí)符以及根據(jù)檢測的非激活分區(qū)的軟件版本獲得的非激活分區(qū)版本標(biāo)識(shí)符,確定一狀態(tài)機(jī)所處的狀態(tài)。
[0042]例如,激活分區(qū)版本標(biāo)識(shí)符以及所述非激活分區(qū)版本標(biāo)識(shí)符包括O和I兩種狀態(tài),所述激活分區(qū)版本標(biāo)識(shí)符為O時(shí),標(biāo)識(shí)所述激活分區(qū)的所述軟件版本為正常版本,所述激活分區(qū)版本標(biāo)示符為I時(shí),標(biāo)識(shí)所述激活分區(qū)的所述軟件版本為新版本;當(dāng)所述非激活分區(qū)版本標(biāo)識(shí)符為O時(shí),標(biāo)識(shí)所述非激活分區(qū)的所述軟件版本為正常版本,當(dāng)所述非激活分區(qū)版本標(biāo)識(shí)符為I時(shí),標(biāo)識(shí)所述非激活分區(qū)的所述軟件版本為新版本,當(dāng)所述非激活分區(qū)版本標(biāo)識(shí)符為-1時(shí),標(biāo)識(shí)所述非激活分區(qū)的所述非激活分區(qū)不具有相關(guān)軟件。
[0043]且所述狀態(tài)機(jī)的狀態(tài)至少包括以下狀態(tài)中的一種或多種:
[0044]I)當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為O且所述非激活分區(qū)版本標(biāo)識(shí)符為O時(shí),所述狀態(tài)機(jī)處于正常狀態(tài);
[0045]2)當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為0,且所述非激活分區(qū)版本標(biāo)識(shí)符為I時(shí),所述狀態(tài)機(jī)處于需復(fù)位狀態(tài);
[0046]3)當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為1,且所述非激活分區(qū)版本標(biāo)識(shí)符為O時(shí),所述狀態(tài)機(jī)處于需同步狀態(tài);
[0047]4)當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為I,且所述非激活分區(qū)版本標(biāo)識(shí)符為I時(shí),所述狀態(tài)機(jī)處于待提交狀態(tài);
[0048]5)當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為0,且所述非激活分區(qū)版本標(biāo)識(shí)符為-1時(shí),或當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為1,且所述非激活分區(qū)版本標(biāo)識(shí)符為-1時(shí),所述狀態(tài)機(jī)處于異常狀態(tài)。
[0049]S12:根據(jù)檢測的所述狀態(tài)機(jī)的狀態(tài)或接收的外部控制命令,執(zhí)行所述激活分區(qū)或所述非激活分區(qū)的軟件的版本更新或回退操作。所述外部控制命令包括令所述嵌入式設(shè)備進(jìn)行軟件更新的命令,且當(dāng)所述狀態(tài)機(jī)處于所述正常狀態(tài)時(shí),接收到外部升級(jí)指令時(shí),令所述非激活分區(qū)根據(jù)預(yù)設(shè)通道獲取更新的軟件,以令所述狀態(tài)機(jī)處于所述需復(fù)位狀態(tài),其中,所述預(yù)設(shè)通道例如為ftp通道;當(dāng)檢測到所述狀態(tài)機(jī)處于所述需復(fù)位狀態(tài)時(shí),重啟所述嵌入式設(shè)備,令所述激活分區(qū)根據(jù)所述非激活分區(qū)的軟件執(zhí)行更新操作,以令所述狀態(tài)機(jī)處于所述需同步狀態(tài);當(dāng)檢測到所述狀態(tài)機(jī)處于所述需同步狀態(tài)時(shí),令所述非激活分區(qū)根據(jù)所述激活分區(qū)的軟件執(zhí)行更新操作,以令所述狀態(tài)機(jī)處于所述待提交狀態(tài),且當(dāng)檢測到所述激活分區(qū)中的軟件運(yùn)行異常時(shí),令所述激活分區(qū)根據(jù)所述非激活分區(qū)的軟件執(zhí)行回退操作,且令所述狀態(tài)機(jī)處于需復(fù)位狀態(tài);所述當(dāng)檢測到所述狀態(tài)機(jī)處于所述待提交狀態(tài)時(shí),確認(rèn)所述激活分區(qū)以及所述非激活分區(qū)的軟件升級(jí)完成,并令所述激活分區(qū)版本標(biāo)識(shí)符為O且所述非激活分區(qū)版本標(biāo)識(shí)符為0,所述狀態(tài)機(jī)處于正常狀態(tài)。且當(dāng)所述當(dāng)檢測到所述狀態(tài)機(jī)處于所述異常狀態(tài)時(shí),令所述非激活分區(qū)根據(jù)所述激活分區(qū)中的所述軟件執(zhí)行更新操作。
[0050]現(xiàn)結(jié)合圖4對(duì)本發(fā)明的應(yīng)用原理進(jìn)一步進(jìn)行說明,令cur表示激活分區(qū)版本標(biāo)識(shí)符,backup表示非激活分區(qū)版本標(biāo)識(shí)符,所述狀態(tài)機(jī)的狀態(tài)分別為,正常狀態(tài)(Normal),需復(fù)位狀態(tài)(need reset),需同步狀態(tài)(need sync),待提交狀態(tài)(need commit),以及當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為0,且所述非激活分區(qū)版本標(biāo)識(shí)符為-1時(shí)的異常狀態(tài)(Lostbackup)以及當(dāng)所述激活分區(qū)版本標(biāo)識(shí)符為1,且所述非激活分區(qū)版本標(biāo)識(shí)符為-1時(shí)的異常狀態(tài)(Lost backward),Normal 狀態(tài)下,cur = backup = O ;need reset 狀態(tài)下,cur =
0,backup = I ;need sync 狀態(tài)下,cur = 1,backup = 0 ;need commit 狀態(tài)下,cur = backup=I ;Lost backup 狀態(tài)下,cur = 0, backup = -1, Lost backward 狀態(tài)下,cur = I ,backup=-1。
[0051 ] 且網(wǎng)管模塊根據(jù)軟件更新命令令軟件進(jìn)行更新的操作為Update表示,且如圖4所示,在 Update 之前,cur = backup = 0,且 Update 之后:cur = O, backup = I ;所述網(wǎng)管模塊當(dāng)檢測到所述狀態(tài)機(jī)處于所述需復(fù)位狀態(tài)時(shí),根據(jù)reset命令,重啟所述嵌入式設(shè)備,令所述激活分區(qū)根據(jù)所述非激活分區(qū)的軟件執(zhí)行更新操作,以令所述狀態(tài)機(jī)處于所述需同步狀態(tài),即cur = I ,backup = O。所述軟件的同步操作以Sync表示,即令激活分區(qū)中的軟件同步到非激活分區(qū)中,所述Sync命令執(zhí)行前:cru = O,backup = I,命令執(zhí)行后:cur = O,backup = O ;或者,Sync 命令執(zhí)行前:cru = 1,backup = O ;命令執(zhí)行后:cur = 1,backup=1 或者,Sync 命令執(zhí)行前:cru = O, backup = -1,命令執(zhí)行后:cur = O, backup = O?;蛘?,Sync命令執(zhí)行前:cru = 1,backup = _1,命令執(zhí)行后:cur = 1,backup = I。且當(dāng)cru = 1,backup = I時(shí),即處于待提交狀態(tài),此時(shí)當(dāng)接收到提價(jià)命令commit時(shí),所述狀態(tài)機(jī)的狀態(tài)為Normal,即cru = 0,backup = O。且在需同步狀態(tài)下,如果發(fā)現(xiàn)新的軟件版本有缺陷,或者不滿足需求,那么網(wǎng)管模塊可以發(fā)送Backward命令,激活存儲(chǔ)舊軟件版本的備份分區(qū),即原非激活分區(qū),并重啟設(shè)備。從而使設(shè)備回到need reset狀態(tài),此時(shí)設(shè)備運(yùn)行的是舊的軟件版本。再通過sync命令,可以使設(shè)備回復(fù)到初始狀態(tài)。
[0052]綜上所述,本發(fā)明的一種嵌入式設(shè)備以及一種軟件升級(jí)方法,根據(jù)檢測的激活分區(qū)的軟件版本獲得的激活分區(qū)版本標(biāo)識(shí)符以及根據(jù)檢測的非激活分區(qū)的軟件版本獲得的非激活分區(qū)版本標(biāo)識(shí)符,確定一狀態(tài)機(jī)所處的狀態(tài);根據(jù)檢測的所述狀態(tài)機(jī)的