專利名稱:一種用于軟件升級且動態(tài)回滾的控制裝置以及控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機系統(tǒng)中的軟件升級控制,尤其是對嵌入式設(shè)備 的軟件版本升級進行控制的控制裝置以及相應(yīng)的控制方法。
背景技術(shù):
各種設(shè)備的升級問題是多數(shù)服務(wù)廠商都必須面對的問題,其中所 涉及的硬件升級問題必須由工作人員在設(shè)備現(xiàn)場來完成對硬件的更 換或更新,而軟件升級問題則可以通過多種途徑予以解決。例如最原
始的解決方案是通過CDROM來讀取CD中的升級軟件,而在網(wǎng)絡(luò)技 術(shù)日益成熟后則在條件允許的情況下考慮通過遠程控制的方式來完 成。目前,許多服務(wù)廠商提供以在線升級的方式對所屬的設(shè)備(中包 含的軟件)進行版本升級,這樣的升級方式大大方便了用戶的使用, 也節(jié)省了服務(wù)廠商的維護成本。
通常情況下,上述在線升級過程通過如下方式予以處理首先, 需要升級的設(shè)備向軟件升級服務(wù)器發(fā)送升級請求,然后升級服務(wù)器對 該升級請求進行驗證,驗證通過后將相應(yīng)的升級版本傳輸給設(shè)備;設(shè) 備將接收的版本存放在內(nèi)存或者其他的存儲器(如閃速存儲器)中, 接收完畢后對原版本進行替換。在此過程中, 一方面,這些解決方案 本身往往不對被下載的升級軟件進行校驗,通常會因為升級軟件不完 整導(dǎo)致問題出現(xiàn);另一方面,如果網(wǎng)絡(luò)發(fā)生異常導(dǎo)致設(shè)備接收的版本 有異常,或者設(shè)備在版本替換的過程中發(fā)生異常中斷(如斷電),都 會導(dǎo)致設(shè)備無法正常使用,從而造成軟件升級失敗。這些情況的出現(xiàn) 都會影響設(shè)備的正常使用。然而不幸的是,由于互聯(lián)網(wǎng)的性能并非一 直很穩(wěn)定,且升級版本軟件的數(shù)據(jù)量通常會比較大,所以上述軟件在 線升級失敗情況發(fā)生的概率比較高。因此,有必要提出一種解決方案,來解決軟件升級中的問題,尤 其是軟件在線升級失敗導(dǎo)致設(shè)備無法正常運轉(zhuǎn)的問題。
發(fā)明內(nèi)容
本發(fā)明的目的是通過對軟件在線升級過程進行控制來實現(xiàn)軟件在線 升級且動態(tài)回滾的控制裝置以及相應(yīng)的控制方法。
根據(jù)本發(fā)明的一個方面,提供一種在軟件所在設(shè)備中對所述軟件
進行升級及動態(tài)回滾的控制方法,其中,包括如下步驟a.獲取與所 述軟件的當(dāng)前版本相對應(yīng)的升級軟件;b.對所述升級軟件進行校驗; c.判斷所述升級軟件是否通過校驗;d.若所述升級軟件通過校驗, 則將所述升級軟件設(shè)置為所述軟件的當(dāng)前版本。
根據(jù)本發(fā)明的另 一個方面,還提供一種在軟件所在設(shè)備中對所述 軟件進行升級及動態(tài)回滾的控制裝置,其中,包括獲取裝置,用于 獲取與所述軟件的當(dāng)前版本相對應(yīng)的升級軟件;第一校驗裝置,用于 對所述升級軟件進行校驗;第一判斷裝置,用于判斷所述升級軟件是 否通過校驗;以及第一處理裝置,用于當(dāng)所述升級軟件通過校驗時將 所述升級軟件設(shè)置為所述軟件的當(dāng)前版本。
優(yōu)選地,所述第一處理裝置還包括第三處理裝置,用于將所述 軟件原當(dāng)前版本設(shè)置為備份軟件。
優(yōu)選地,所述設(shè)備為嵌入式設(shè)備。
本發(fā)明通過對軟件升級過程中進行多重校驗,可以提高軟件升級 的成功率,尤其是對于在線升級具有重要意義,降低了被升級軟件不 能正常運行的概率。同時,本發(fā)明在對軟件進行升級的過程中通過對 備份版本的處理,使得軟件升級失敗或者因為其他原因?qū)е萝浖o法 正常運行時可以快速地自動回滾,從而保證軟件正常運行。本發(fā)明尤 其適合于嵌入式設(shè)備的升級管理,可有效減少維護人員的工作。
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)
明的其它特征、目的和優(yōu)點將會變得更明顯
圖1示出根據(jù)本發(fā)明的一個具體實施方式
的,在軟件所在設(shè)備中 對所述軟件進行升級的控制方法的流程圖2示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述 軟件進行升級的控制方法的流程圖3示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述 軟件進行動態(tài)回滾的控制方法的流程圖4示出根據(jù)本發(fā)明的第二實施例的,在軟件所在設(shè)備中對所述 軟件進行升級的控制方法的流程圖5示出根據(jù)本發(fā)明的一個具體實施方式
的,在軟件所在設(shè)備中 對所述軟件進行升級及動態(tài)回滾的內(nèi)部邏輯結(jié)構(gòu)示意圖6示出根據(jù)本發(fā)明的第二實施例的,升級軟件中所包含的部分 信息的示意圖7示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述 軟件進行升級及動態(tài)回滾的控制裝置的結(jié)構(gòu)示意圖8示出根據(jù)本發(fā)明的第一實施例的,圖7所示獲取裝置41的 結(jié)構(gòu)示意圖;以及
圖9示出根據(jù)本發(fā)明的第二實施例的,圖7所示第一校驗裝置42 的結(jié)構(gòu)示意圖。
具體實施例方式
圖1示出根據(jù)本發(fā)明的一個具體實施方式
的,在軟件所在設(shè)備中 對所述軟件進行升級的控制方法的流程圖。在本實施例中,描述了設(shè) 備獲取對應(yīng)的升級軟件并對其作校驗的控制方法和整體流程。具體 地,首先執(zhí)行步驟S101,獲取與所述軟件的當(dāng)前版本相對應(yīng)的升級 軟件,例如,通過網(wǎng)絡(luò)獲取該升級軟件。然后進入步驟S102,對所 述升級軟件進行校驗,該校驗過程可以使用不同的校驗方式和算法來 實現(xiàn),對于簡單的應(yīng)用軟件,可以使用簡單的驗證算法對其進行校驗;而對于重要的系統(tǒng)軟件,可以使用復(fù)雜嚴格的校驗算法對其進行校
驗,例如圖4和圖6分別從不同角度闡述了校驗方式的實施例。本領(lǐng) 域技術(shù)人員理解,校驗的目的是保證被獲取的升級軟件是合適的軟 件,例如是與所述軟件的當(dāng)前版本所對應(yīng)的升級軟件,又例如該升級 軟件是完整的等等。接下來執(zhí)行步驟S103,判斷所述升級軟件是否 通過校驗。通常,執(zhí)行步驟S102后可以得出一個判斷結(jié)果,即校驗 是否通過的結(jié)論,在本步驟中,根據(jù)該判斷結(jié)果可以確定所述升級軟 件是否通過校驗。若所述步驟S103的判斷結(jié)果是肯定的,即所述升 級軟件通過校驗,則進入步驟S104,將所述升級軟件設(shè)置為所述軟 件的當(dāng)前版本;若所述步驟S103的判斷結(jié)果是否定的,即所述升級 軟沒有通過校驗,則沒有必要再進行升級工作,整個處理過程直接結(jié) 束。本領(lǐng)域技術(shù)人員理解,執(zhí)行上述步驟S104后,所述升級操作成 功,即所述軟件的原當(dāng)前版本不再被運行,取而代之的是所述步驟 S101中獲取的升級軟件,即最新的當(dāng)前版本。
結(jié)合上述圖1,其中,所述軟件指需要被升級的軟件;所述軟件 的當(dāng)前版本指所述軟件正在使用的軟件版本;所述軟件的原當(dāng)前版本 指所述軟件被升級之前的一個軟件版本,在本發(fā)明中還可能作為備份 軟件所存儲;升級軟件指用于對所述軟件的當(dāng)前版本進行升級的軟件 版本。
參考上述步驟SlOl,本領(lǐng)域技術(shù)人員理解,獲取所述升級軟件 的方式可以通過不同的傳輸方式和媒介實現(xiàn)。優(yōu)選地,在本實施例中, 所述軟件被運行于一個獨立的設(shè)備,例如一個嵌入式設(shè)備或一臺普通 的個人計算機(例如臺式計算機)中,可以通過網(wǎng)絡(luò)獲取該升級軟件, 例如所述設(shè)備與局域網(wǎng)(例如以太網(wǎng))或互聯(lián)網(wǎng)或無線網(wǎng)絡(luò)相連接并 可以通過這些網(wǎng)絡(luò)與軟件升級服務(wù)器或一個用于存儲升級軟件的裝 置(設(shè)備)相通訊,從而獲取該升級4欠件。在該優(yōu)選實施例中,通過 網(wǎng)絡(luò)獲取該升級軟件可以提高本發(fā)明的靈活性,尤其對于分散分布的 嵌入式設(shè)備而言。各設(shè)備分別通過網(wǎng)絡(luò)來進行升級操作,不再需要維 護人員一臺設(shè)備接一臺設(shè)備地進行手動升級,從而提高了維護效率,這對于大量嵌入式設(shè)備需要維護的情況下是非常有利的。在一個變化
例中,也可以使用串口通信來獲取該升級軟件;在又一個變化例中, 可以通過CDROM或DVDROM來讀取記錄于CD或DVD中的數(shù)據(jù) 來獲取該升級軟件。本領(lǐng)域技術(shù)人員理解,上述列舉的各種實現(xiàn)方式 并不影響發(fā)明內(nèi)容。進一步地,獲取該升級軟件可以通過不同的步驟 來實現(xiàn),例如在本實施例中,由需要對軟件進行升級的設(shè)備主動向一 個軟件升級服務(wù)器發(fā)出升級請求,例如優(yōu)選地,這個過程可以通過圖 8所示發(fā)送裝置414來完成,然后由該服務(wù)器根據(jù)升級請求來確定升 級軟件并將該升級軟件的下載地址通知所述需要升級的軟件所在設(shè) 備,從而由所述設(shè)備通過網(wǎng)絡(luò)下載該升級軟件;或者由所述服務(wù)器直 接向所述設(shè)備發(fā)送所述升級軟件。而在一個變化例中,所述軟件升級 服務(wù)器主動地向多個設(shè)備分別推送該升級軟件,并由每個設(shè)備分別確 認可以接收該升級軟件后通過網(wǎng)絡(luò)接收該升級軟件。
在本實施例中,通過步驟S101獲取了升級軟件后,首先將該升 級軟件臨時地存儲,例如優(yōu)選地將其存儲于臨時存儲空間(例如內(nèi) 存),在步驟S104中將該升級軟件從臨時存儲空間中剪切至永久存 儲空間中;在一個變化例中,將其存儲在永久存儲空間(例如閃速存 儲器,F(xiàn)lash),但在后續(xù)的處理過程中,若確定應(yīng)執(zhí)行升級操作,則 將該升級軟件在所述永久存儲空間中的存儲位置設(shè)置為所述軟件當(dāng) 前版本對應(yīng)的位置信息。
優(yōu)選地,在圖1所示實施例的一個變化例中,在所述步驟S104 之前還執(zhí)行將所述軟件的原當(dāng)前版本設(shè)置為備份軟件的步驟,即系統(tǒng) 提供對原軟件進行備份的功能。例如,在一個嵌入式系統(tǒng)上提供專門 存儲該備份軟件的存儲空間,或者采用 一個特定的方法來指示該備份 軟件(例如在不覆蓋也不刪除該備份軟件的前提下通過一個系統(tǒng)變量 來指示備份軟件)。本領(lǐng)域技術(shù)人員可以理解,在這樣的變化例中, 所述備^f分軟件可以用于軟件的動態(tài)回滾,例如圖3所示實施例那樣。
圖2示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述軟件進行升級的控制方法的流程圖。本實施例是圖1所示實施方式的 一個細化過程,其中對升級軟件版本的正確性進行校驗,并在校驗通
過后才執(zhí)行升級處理。具體地,首先執(zhí)行步驟SllO,對所述升級軟 件進行版本正確性校驗。與圖1所示步驟S102類似,所述校驗可以 通過多種方式實現(xiàn),例如可以參考圖4和/或圖6所示實施例來實現(xiàn), 在此不予贅述。然后進入步驟Slll,判斷所述升級軟件是否通過上 述版本正確性校驗,類似地,本步驟可以通過步驟S110中的校^r結(jié) 果來完成,在此不予贅述。若所述步驟Slll的判斷結(jié)果是否定的, 即所述升級軟件沒有通過版本正確性校驗,則不能執(zhí)行升級處理,整 個處理流程結(jié)束,因為不正確的升級軟件會導(dǎo)致所述被升級軟件運行 異常;若所述步驟Slll的判斷結(jié)果是肯定的,即所述升級軟件通過 版本正確性校驗,則進入步驟S112,通過網(wǎng)絡(luò)接收所述升級軟件, 本領(lǐng)域:技術(shù)人員理解,可以通過多種不同的網(wǎng)絡(luò)來實現(xiàn)本步驟,可以 4吏用不同的網(wǎng)絡(luò)才支術(shù)以適應(yīng)多種類型的網(wǎng)絡(luò)結(jié)構(gòu),例如,可以4吏用以 太網(wǎng)或互聯(lián)網(wǎng)。然后進入步驟S113,對所述升級軟件進行完整性校 驗,該校驗的目的是確保所述升級軟件所包含的相關(guān)軟件部分已經(jīng)全 部被下載,以免因為網(wǎng)絡(luò)問題或其它問題導(dǎo)致升級軟件不完整。該步 驟S113可以借助現(xiàn)有各種完整性校驗算法來實現(xiàn),也可以使用本發(fā) 明提供的軟件完整性校驗方式來實現(xiàn),例如圖6所示實施例。接下來, 執(zhí)行步驟S114,對所述軟件進行設(shè)備匹配校驗,檢測所下載的升級 軟件是否適用于下載了該升級軟件的設(shè)備,從而保證合適的升級軟件 被用于合適的設(shè)備。然后進入步驟S115,判斷所述升級軟件是否通 過校驗。在本實施例中,所述步驟S115根據(jù)上述步驟S113以及S114
兩個校驗結(jié)果中的任何一個為否定時確定步驟S115的判斷結(jié)果是否 定的;而在一個變化例中,只執(zhí)行所述步驟S113或步驟S114中的某 一個,此時在步驟S115中只需要根據(jù)被執(zhí)行的校驗步驟來確定步驟 S115的判斷結(jié)果;在又一個變化例中,還可以采用其他校驗步驟來 代替所述步驟S113和/或步驟S114,在此不予贅述。如果步驟S115的判斷結(jié)果是否定的,即所述升級軟件沒有通過 校驗,則整個處理流程結(jié)束;如果步驟S115的判斷結(jié)果是肯定的, 即所述升級軟件通過了上述步驟S113以及步驟S114的校驗,則進入 步驟S116,將所述升級軟件存儲至第一存儲位置;然后執(zhí)行步驟 S117,將所述備份軟件存儲至第二存儲位置,至此,本實施例提供的 處理流程結(jié)束。在本實施例中,第一存儲位置和第二存儲位置分別被 用來存儲所述軟件的當(dāng)前版本和備份軟件,以此來實現(xiàn)軟件升級過程 中的版本回滾,例如圖3所示實施例那樣。本領(lǐng)域技術(shù)人員理解,上 述備份軟件是所述軟件當(dāng)前版本的備份,通常是所述當(dāng)前版本的上一 個版本,從另一個角度說,升級操作完成后的所述當(dāng)前版本對應(yīng)了升 級操作完成前的升級版本,相應(yīng)地升級操作完成后的所述備份版本對 應(yīng)了升級操作完成前的所述當(dāng)前版本。
本領(lǐng)域技術(shù)人員理解,上述步驟S110以及步驟S113、 S114中的 校驗工作可以通過多種途徑完成。例如,在本實施例中,每個升級軟 件中均設(shè)置有該升級軟件的軟件名稱、版本號等,相應(yīng)地,在步驟 S110中,需要進行軟件升級的設(shè)備會對上述軟件名稱、版本號等進 行校驗,如果軟件名稱不正確或者該升級軟件的版本號不大(高)于 被升級的軟件的版本號,則確定該升級軟件未能通過所述正確性校 a^。而在一個變化例中,在步驟S110中還可以對其他可以確定或輔 助確定軟件版本正確性的內(nèi)容進行判斷,在此不予贅述。同樣,在本 實施例中,每個升級軟件中均設(shè)置有該升級軟件的各組成部分,例如 各模塊或子軟件的名稱、字節(jié)大小等信息,相應(yīng)地,在步驟S113中, 接收了全部升級軟件后,需要進行軟件升級的設(shè)備根據(jù)上述信息對已 經(jīng)下載的軟件各部分分別進行校驗,如果發(fā)現(xiàn)某一個模塊或子軟件未 被下載或者下載不完全,則確定該升級軟件未能通過完整性校驗。例 如,圖6示出了一個比較復(fù)雜的用于完整性檢驗的實施例,在此不予 贅述。類似地,在本實施例中,每個升級軟件中均設(shè)置有該升級軟件 所適用的設(shè)備名稱、類型等信息,相應(yīng)地,在步驟S114中,需要進 行軟件升級的設(shè)備判斷上述信息是否與該設(shè)備的信息相匹配,例如若發(fā)現(xiàn)設(shè)備名稱或類型不匹配,則確定該升級軟件未能通過設(shè)備匹配校 驗。本領(lǐng)域技術(shù)人員理解,在具體實現(xiàn)過程中,可以將該升級軟件適 用的設(shè)備名稱和類型進行編碼并存儲在 一 串比特中,然后由需要進行 軟件升級的設(shè)備讀取該比特串并相應(yīng)地獲取設(shè)備匹配校驗信息。在一 個變化例中,上述信息中還包括升級軟件所適用設(shè)備的序列號或其他
標(biāo)識信息,在這樣的變化例中,該步驟S114的校驗結(jié)果更加準(zhǔn)確, 因為升級軟件被設(shè)定為僅對一個或多個特定設(shè)備進行升級;在又一個 變化例中,也可以通過運行特定的設(shè)備匹配檢測軟件來實現(xiàn)設(shè)備匹配 校驗過程,在此不予贅述。
結(jié)合上述對圖1的解釋,并參考上述步驟S116、 S117,本領(lǐng)域 技術(shù)人員理解,可以通過多種途徑實現(xiàn)這兩個步驟。在本實施例中, 在接收了該升級軟件后,首先將該升級軟件置于臨時存儲空間中,并 在步驟S116中將該升級軟件存儲至永久存儲空間中,例如存儲至嵌 入式設(shè)備的Flash中,又例如存儲于臺式計算機的硬盤中。優(yōu)選地, 該升級軟件始終置于一個特定目錄(第一存儲位置)中,該特定目錄 用于存儲所述軟件的當(dāng)前版本,例如圖5所示51部分,因此,在升 級軟件被置于該特定目錄后,實際上完成了對所述軟件的升級操作, 即所述軟件在下一次運行時將讀取存儲于所述51部分的該升級軟件; 對應(yīng)地,在步驟S117中,通常會將所述軟件的原當(dāng)前版本存儲至另 一個特定目錄(第二存儲位置)中,即將原當(dāng)前版本從第一存儲位置
剪切至第二存儲位置,例如將圖5所示51部分中的內(nèi)容移動至52部 分,從而使得所述原當(dāng)前版本成為備份軟件。在一個變化例中,該升 級軟件被通過步驟S112接收后始終置于永久存儲空間中,在這樣的 變化例中,則使用 一個指示信息來指示所述軟件的當(dāng)前版本所在的位 置,并且在所述軟件重新啟動時根據(jù)該指示信息來讀取最新的軟件。 此時,在步驟S116中,將上述指示信息設(shè)置為所述升級軟件的位置 信息;對應(yīng)地,可以在步驟S117中將備份軟件的指示信息設(shè)置為所 述軟件的原當(dāng)前版本的位置信息,這樣的過程至少可以通過兩個指針 互換的方式來完成。本領(lǐng)域技術(shù)人員理解,通常上述步驟S117會在步驟S116之前被執(zhí)行,因為首先要保存原當(dāng)前版本的信息,然后再 使用升級軟件覆蓋原當(dāng)前版本作為新的當(dāng)前版本,在此不予贅述。
上述圖2與圖1相比較,至少存在如下變化第一,增加了獲取 升級軟件之前對該升級軟件的正確性校驗步驟;第二,增加了對備份 軟件的處理。而本領(lǐng)域技術(shù)人員可以理解,在圖2的一個變化例中, 如果不需要進行動態(tài)回滾處理,則可以省略上述步驟S117。
圖3示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述 軟件進行動態(tài)回滾的控制方法的流程圖,即軟件無法正常啟動時的基 本處理步驟。具體地,首先執(zhí)行步驟S121,判斷是否在預(yù)定時間內(nèi) 收到軟件正常啟動的反饋信息。所述軟件成功升級后,系統(tǒng)重新啟動 時執(zhí)行最新的當(dāng)前版本(即所述升級軟件),如果所述升級軟件能正 常啟動,在啟動之后能正常提供該升級軟件所應(yīng)提供的所有功能,并 且系統(tǒng)的所有組件均能正常工作,則該軟件視為能正常啟動,否則視 為升級失敗。優(yōu)選地,所述軟件是否正常啟動的檢驗過程可以通過自 動化的方式來實現(xiàn),由系統(tǒng)自動重啟并判斷所述軟件是否正常運行, 通常,根據(jù)所述軟件正常啟動后發(fā)出的反饋信息來完成這樣的檢驗過 程,本領(lǐng)域技術(shù)人員理解,發(fā)出該反饋信息的操作由所述軟件事先設(shè) 置的模塊進行控制,在此不予贅述。上述檢驗過程也可以通過人工的 方法來實現(xiàn),例如,由專門的測試人員檢測所述軟件在升級后是否正 常運轉(zhuǎn)。所述預(yù)設(shè)時間用來防止所述軟件不能正常啟動時無限制地等 待所述反饋信息,該預(yù)設(shè)時間可以被調(diào)整以適應(yīng)不同需求。
如果所述步驟S121的判斷結(jié)果是肯定的,即在預(yù)設(shè)時間內(nèi)收到 軟件正常啟動的反饋信息,則本流程結(jié)束,即不需要進行回滾操作。 如果步驟S121的判斷結(jié)果是否定的,即在預(yù)設(shè)時間內(nèi)沒有收到軟件 正常啟動的反饋信息,則進入步驟S122,將所述軟件的當(dāng)前版本的 路徑信息設(shè)置為所述第二存儲位置,然后執(zhí)行步驟S123,將存儲于 第一存儲位置的內(nèi)容全部刪除,最后進入步驟S124,將第一存儲位 置和第二存儲位置的標(biāo)識互換。通過步驟S122,原本存儲于第二存儲位置的備份軟件(重新)被恢復(fù)為所述軟件的當(dāng)前版本,即所述軟 件回滾至最近一次升級之前的情況。通常,由于該備份軟件僅僅在設(shè) 備內(nèi)進行一系列變動,例如從原當(dāng)前版本被設(shè)置為備份軟件,又從備 份軟件被恢復(fù)為當(dāng)前版本,所以使用該備份軟件卻無法正常啟動的概
率比較小。類似地,通過步驟S124,使得在軟件完成回滾后第一存 儲位置重新用來存儲所述軟件的當(dāng)前版本,并同時使得第二存儲位置 重新用來存儲備份軟件。本領(lǐng)域技術(shù)人員理解,第一存儲位置和第二 存儲位置的標(biāo)識信息的互換操作可以用多種方式來實現(xiàn),例如,當(dāng)存 儲位置采用指針時,只需交換兩個指針即可實現(xiàn)步驟S124。
在圖3所示步驟S123中,用于將無法正常啟動的軟件版本清除。
動,同時也為下次的軟件升級操作做準(zhǔn)備。本領(lǐng)域技術(shù)人員理解,可 以通過其它方式實現(xiàn)步驟S123,例如設(shè)置一個標(biāo)識信息指明備份軟 件不存在,又例如設(shè)置第一存儲位置使其指向其他存儲位置等等。在 另一個變化例中,所述步驟S123被省略,這并不影響本發(fā)明的實質(zhì)。
圖4示出了根據(jù)本發(fā)明的第二實施例的,在軟件所在設(shè)備中對所 述軟件進行升級的控制方法的流程圖,該流程更加復(fù)雜。具體地,首 先執(zhí)行步驟S131,從升級文件中讀取所述升級文件的校驗碼,該校 驗碼包含在該升級文件中,例如圖6所示。該校驗碼通常由升級服務(wù) 器通過不同的校驗算法對所述升級文件進行計算而得到。然后進入步 驟S132,需要進行軟件升級的設(shè)備對所述升級文件進行校驗,并判 斷所得到的校驗碼是否與上述步驟S131所讀取到的校驗碼相匹配。 本領(lǐng)域技術(shù)人員理解,該校驗所使用的校驗算法通常與所述升級服務(wù) 器所使用的校驗算法相同。經(jīng)過計算后,同樣得到一個校驗碼,如果
紐亡林^t hH紹服么哭搖勝1^斗^
一致,則兩個校驗碼應(yīng)該完全相周。若所述步驟S132的判斷結(jié)果是 否定的,表明被所述設(shè)備獲取的升級軟件存在錯誤,例如這可能是在 網(wǎng)絡(luò)下載過程中數(shù)據(jù)包被損壞,于是本次處理過程結(jié)束;否則執(zhí)行步驟S133對軟件繼續(xù)進行升級操作。本領(lǐng)域技術(shù)人員理解,所述步驟 S132可以被視為圖2步驟S113的一個具體實施例,在此不予贅述。
在步驟S133中,分別獲取所述升級文件中包含的各組成部分的 信息。在本實施例中, 一個完整的升級文件由uboot(啟動引導(dǎo)程序)、 OS (操作系統(tǒng))及APP (上層應(yīng)用程序)組成,因此應(yīng)分別獲取這 三部分內(nèi)容的相關(guān)信息,例如在本實施例中至少包括類型、大小、在 升級文件中的位置、校驗信息等。然后進入步驟S134,分別對uboot、 OS和APP進行校驗操作,該步驟可以參考上述步驟S132實現(xiàn),在 此不予贅述。接下來執(zhí)行步驟S135,判斷經(jīng)過步驟S134獲得的校驗 碼是否與從所述升級軟件中提取到的校驗碼相匹配。本領(lǐng)域技術(shù)人員 理解,在步驟S135中若任一個或任多個校驗信息不匹配,則導(dǎo)致該 步驟的判斷結(jié)果是否定的,此時整個處理流程結(jié)束,不再對所述軟件 進行升級操作。相反,如果所述步驟S135的判斷結(jié)果是肯定的,即 對uboot、 OS和APP的校驗結(jié)果和從所述升級文件中提取到的校驗 結(jié)果相匹配,則執(zhí)行步驟S136。
在步驟S136中,將所述升級文件中的uboot、 OS以及APP對應(yīng) 的數(shù)據(jù)文件分別寫入Flash中。本領(lǐng)域技術(shù)人員理解,優(yōu)選地,上述 數(shù)據(jù)文件被分別寫入指定存儲空間,這樣的情況可以結(jié)合上述圖2所 示步驟S116來實現(xiàn)。例如在圖6所示實施例中,將所述app.image 寫入上層應(yīng)用程序?qū)?yīng)的存儲空間中;類似地,將uboot.bin寫入啟 動引導(dǎo)程序?qū)?yīng)的存儲空間中。而在一個變化例中,所述三個數(shù)據(jù)文 件-陂分別寫入所述Flash分區(qū)中的任意位置,并相應(yīng)地更新指示 uboot、 OS以及APP的指示信息,以使得更新后的指示信息指向所述 數(shù)據(jù)文件被寫入的存儲位置。例如,在本實施例中,所述操作系統(tǒng)對 應(yīng)的數(shù)據(jù)文件具體包括cmemk.ko、 dsplinkk.ko、 mt.li薩,大小分另'j 為12K、 76K、 6997K;相應(yīng)地,所述上層應(yīng)用程序?qū)?yīng)的數(shù)據(jù)文件 具體包4舌MediaStart、 mtres.rc、 mt.image,大小分別為1168K、 5055K、 12439K。本領(lǐng)域技術(shù)人員可以理解,其中,所述ko為linux操作系統(tǒng) 調(diào)用的內(nèi)核文件,mt.linux為才喿作系統(tǒng)文件;MediaStart為開才幾畫面,mtres.rc為終端OSD (屏幕菜單式調(diào)節(jié)方式,on-screen display )菜單 的資源文件,mt.image為上層業(yè)務(wù)程序,對應(yīng)地可以分別讀取這些數(shù) 據(jù)文件并執(zhí)行寫入操作,結(jié)合現(xiàn)有技術(shù)可以實現(xiàn)該步驟,不予贅述。
然后,執(zhí)行步驟S137,判斷所述被寫入的數(shù)據(jù)文件是否與所述 升級文件中包括的內(nèi)容一致,即最終4皮寫入的uboot、 OS以及APP 的數(shù)據(jù)文件是否與所述升級文件中包括的相應(yīng)數(shù)據(jù)文件相一致。如果 任一部分內(nèi)容不一致的,則所述步驟S137的判斷結(jié)果是否定的,此 時進入步驟S139,撤銷對所述軟件的升級操作;否則,如果三部分 內(nèi)容都一皮正確地寫入,則所述步驟S137的判斷結(jié)果是肯定的,此時 進入步驟S138,發(fā)送升級成功的信息,以便其他設(shè)備(例如升級服 務(wù)器)可以知道本設(shè)備已經(jīng)完成升級。本領(lǐng)域技術(shù)人員理解,所述步 驟S139可以通過多種方式來實現(xiàn),優(yōu)選地,在本實施例中將已經(jīng)被 寫入的數(shù)據(jù)文件刪除;如果已經(jīng)更新了相關(guān)的指示信息,例如OS的 指示信息,則還要將這些指示信息恢復(fù)原狀。同樣,本領(lǐng)域技術(shù)人員 理解,所述步驟S138可以被省略,此時,有可能一個i殳備完成升級 的過程并不要被其他設(shè)備所知悉,也有可能其他設(shè)備可以通過其他途 徑來獲知一個特定設(shè)備完成升級的信息,不予贅述。
參考上述圖4,本領(lǐng)域技術(shù)人員可以理解,盡管在圖4所示步驟 中直接使用了 Flash,但該"Flash"同樣可以被理解為其他存儲設(shè)備, 例如硬盤、光盤或磁帶等等。本實施例優(yōu)選地適用于嵌入式設(shè)備,因 此Flash也優(yōu)選地作為存儲設(shè)備;而在其他變化例中,例如本發(fā)明適 用于臺式計算機時,則所述存儲設(shè)備可以采用硬盤,在此不予贅述。
圖5示出根據(jù)本發(fā)明的一個具體實施方式
的,在軟件所在設(shè)備中 對所述軟件進行升級及動態(tài)回滾的內(nèi)部邏輯結(jié)構(gòu)示意圖,本實施例是對 上述圖4所述實施例的進一步說明。其中,優(yōu)選地,所述軟件被置于 一個嵌入式設(shè)備中,從邏輯上看,該軟件包括啟動引導(dǎo)程序(Boot) 部分、操作系統(tǒng)(OS)部分、上層業(yè)務(wù)程序(App)部分以及用戶文 件(User)部分。本領(lǐng)域技術(shù)人員理解,這樣的組成是通常一個設(shè)備,,在此不予贅述。如上述對圖1 圖4 的解釋,在本實施例中,設(shè)置有兩份存儲空間分別存儲所述操作系統(tǒng) 以及上層應(yīng)用程序,其中第 一存儲空間中存儲所述軟件的當(dāng)前版本, 即正被所述軟件使用的版本,相應(yīng)地,第二存儲空間存儲所述軟件的 備份軟件,即在當(dāng)前版本啟動失敗后用于回滾的備份版本。優(yōu)選地, 所述第 一存儲空間與第二存儲空間設(shè)置于各自獨立的存儲設(shè)備上,例 如設(shè)置于不同的Flash上;次優(yōu)地,兩個存儲空間也可以設(shè)置于同一 個存儲設(shè)備上,但分別位于不同的區(qū)域,這并不影響本發(fā)明的實質(zhì)內(nèi) 容。
參考圖5,本領(lǐng)域技術(shù)人員理解,所述用戶數(shù)據(jù)部分53通常由用 戶手動或自動更新,因此通常并不需要本發(fā)明提供的控制方法。所述 啟動引導(dǎo)程序部分50可以使用本發(fā)明提供的控制方法進行升級。但 考慮到啟動引導(dǎo)程序升級的概率比較小,所以在本實施例中沒有對其 設(shè)置備份存儲空間,即在本實施例中針對啟動引導(dǎo)程序部分無法實現(xiàn) 上述的動態(tài)回滾操作。但本領(lǐng)域技術(shù)人員理解,在一個變化例中,也 可以針對啟動引導(dǎo)程序設(shè)置備份存儲空間。
本領(lǐng)域技術(shù)人員理解,上述圖5示出了一個設(shè)備內(nèi)的邏輯結(jié)構(gòu)。 而在實際應(yīng)用中,通過存在多個設(shè)備,每個設(shè)備中存在一個或多個需 要被升級的軟件,而所述多個設(shè)備分別與一個或多個軟件升級服務(wù)器 或其他存儲升級軟件的裝置(設(shè)備)相通訊以獲取對應(yīng)的升級軟件。 在這樣的實施例中,每個設(shè)備獲取一個升級軟件的過程都可以根據(jù)本 發(fā)明內(nèi)容以及對應(yīng)的實施例來實現(xiàn),在此不予贅述。
圖6示出根據(jù)本發(fā)明的第二實施例的,升級軟件中所包含的部分 信息的示意圖。在本實施例中,所述升級軟件6包括兩部分內(nèi)容校 驗信息以及數(shù)據(jù)內(nèi)容。其中,升級文件校驗碼61用于標(biāo)識所述升級 文件X反本的正確性,即標(biāo)識該升級文件可以被用于哪些軟件的更新。 例如,優(yōu)選地,校-驗碼61可以被用于上述圖2步驟S110中的版本正 確性校驗過程。類似地,升級文件冗余信息62用于記錄預(yù)先設(shè)置的冗余信息,該冗余信息可以用于上述正確性校驗以及其他驗證過程。
優(yōu)選地,所述冗余信息被預(yù)先設(shè)置為包含如下內(nèi)容的信息升級軟件 名稱、版本號、升級日期、開發(fā)商、所應(yīng)用的設(shè)備名稱、所應(yīng)用的設(shè) 備類型等。這些冗余信息同時被設(shè)置在所述升級軟件的數(shù)據(jù)內(nèi)容中, 例如在操作系統(tǒng)部分64中的特定位置也同時記錄了這些信息,當(dāng)所 述數(shù)據(jù)內(nèi)容^皮寫入了 Flash后,則可以通過讀取所述數(shù)據(jù)內(nèi)容中記錄 的這些信息并與所述冗余信息62進行比較,如果一致,則確定校驗 通過。例如上述圖2所示步驟S114可以借助冗余信息62來實現(xiàn)。
參考圖6,除了上述針對整個升級文件的信息,還包括所述升級 文件中各組成部分的各種信息。在本實施例中,所述信息部分63包 括多種信息,例如分別記錄在升級文件中各組成部分的類型、大小, 在升級文件中的位置、以及每個文件的校驗碼等。例如,可以采用如 下方式記錄上述信息[30k][260][30979][校驗碼][210k] [3 0980] [246019][校-驗碼]
通過上述信息63,至少可以獲得所述升級軟件所包括的組成部分 以及在升級軟件內(nèi)的哪個位置可以獲取該組成部分,從而可以將該組 成部分完整地讀出并寫入相應(yīng)的存儲位置。例如可以在升級軟件的第 260字節(jié)至30979處讀取所述操作系統(tǒng)的升級軟件。同時,通過上述 信息63,還可以分別獲取各組成部分的校驗碼。基于這些校驗碼,可 以在后續(xù)處理過程中分別對各組成部分是否完整、正確進行校驗,例 如假設(shè)上述校驗碼通過循環(huán)冗余校驗(CRC)方式獲得,則同樣可以 采用CRC校驗對上層應(yīng)用程序是否完整進行校驗。本領(lǐng)域技術(shù)人員 結(jié)合現(xiàn)有技術(shù)可以理解上述內(nèi)容,在此不予贅述。
進一步地,在本實施例中,所述升級文件6的數(shù)據(jù)內(nèi)容部分包括 了操作系統(tǒng)升級文件64、上層應(yīng)用程序鏡像65以及啟動引導(dǎo)程序升級文件66。本領(lǐng)域技術(shù)人員理解,這三部分數(shù)據(jù)內(nèi)容分別對應(yīng)于上述 信息部分63中的內(nèi)容,即信息63中記錄的升級文件的組成部分相應(yīng) 地存在著數(shù)據(jù)內(nèi)容,該部分數(shù)據(jù)內(nèi)容將被作為升級軟件以對所述軟件 的原當(dāng)前版本進行升級,在此不予贅述。
圖7示出根據(jù)本發(fā)明的第一實施例的,在軟件所在設(shè)備中對所述 軟件進行升級及動態(tài)回滾的控制裝置的結(jié)構(gòu)示意圖。在本實施例中,所 述控制裝置4包括獲取裝置41、第一校驗裝置42、第一判斷裝置43、 第一處理裝置44以及第二判斷裝置46、第二處理裝置47。其中,所 述獲取裝置41用于獲取與所述軟件的當(dāng)前版本相對應(yīng)的升級軟件; 所述第一校驗裝置42用于對所述升級軟件進行校驗,校驗的目的是 保證被獲取的升級軟件是合適的軟件,例如是與所述軟件的當(dāng)前版本 所對應(yīng)的升級軟件;所述第一判斷裝置43用于判斷所述升級軟件是 否通過校驗,并且當(dāng)判斷結(jié)果是肯定時調(diào)用裝置44;所述第一處理裝 置44用于當(dāng)所述升級軟件通過校驗時將所述升級軟件設(shè)置為所述軟 件的當(dāng)前版本。所述第二判斷裝置46用于判斷所述軟件是否能夠正 常啟動,并在判斷結(jié)果是否定時調(diào)用裝置47;所述第二處理裝置47 用于當(dāng)所述軟件不能正常啟動時將備份軟件設(shè)置為所述軟件的當(dāng)前 版本。
本領(lǐng)域技術(shù)人員可以理解,所述獲取裝置41可以通過多種方式 實現(xiàn),優(yōu)選地,通過網(wǎng)絡(luò)獲取所述升級軟件,例如通過局域網(wǎng)(例如 以太網(wǎng))或互聯(lián)網(wǎng)或無線網(wǎng)絡(luò);在一個變化例中,也可以使用串口通 信來獲取該升級軟件;在又一個變化例中,還可以通過CDROM或 DVDROM來讀取記錄于CD或DVD中的內(nèi)容來獲取該升級軟件。進 一步地,所述獲取裝置41可以主動獲取所述升級軟件,例如圖8所 示實施例那樣,也可以被動地接收所述升級軟件,在此不予贅述。
類似地,所述第一處理裝置44也可以通過多種方式實現(xiàn)。在本 實施例中,所述裝置41獲取了所述升級軟件后,首先將其存儲在臨 時存儲空間(例如內(nèi)存)內(nèi),然后在該升級軟件經(jīng)過校驗等過程后再將其存儲在永久存儲空間,例如Flash中的特定位置中,例如第一存 儲位置(例如圖5所示51部分),同時刪除存儲在臨時存儲空間中 的該升級軟件。而在又一個變化例中,該升級軟件被裝置41獲取后 始終置于永久存儲空間的某一個文件目錄中,例如第一存儲位置,并 在確定需要進行升級操作后將用于指示所述軟件的當(dāng)前版本所在的 位置的指示信息設(shè)置為該文件目錄(例如第一存儲位置),從而使得
升級軟件,從而完成升級操作。
優(yōu)選地,在本實施例中,所述第一處理裝置44還包括第三處理 裝置441,其用于將所述軟件原當(dāng)前版本設(shè)置為備份軟件,即所述控 制裝置4還提供對原軟件進行備份的功能,從而用于軟件的動態(tài)回滾。 結(jié)合上述對第一處理裝置44的描述,本領(lǐng)域技術(shù)人員理解,優(yōu)選地, 所述裝置441可以將所述軟件的原當(dāng)前版本存儲至另一個特定目錄 (第二存儲位置)中,例如將圖5所示51部分中的內(nèi)容移動至52部 分,從而使得所述原當(dāng)前版本成為了備份軟件。
在本實施例中,所述裝置46在預(yù)定時間內(nèi)未收到所述軟件正常 啟動的反饋信息則確定所述軟件啟動失敗。本領(lǐng)域技術(shù)人員理解,由 所述軟件事先設(shè)置的模塊控制發(fā)出該反饋信息。所述預(yù)設(shè)時間用來防 止所述軟件不能正常啟動時無限制地等待所述反饋信息,該預(yù)設(shè)時間 可以被調(diào)整以適應(yīng)不同需求。如果所述裝置46確定所述軟件正常啟 動,則不再調(diào)用其它裝置進行任何處理;否則,調(diào)用裝置47。裝置 47的主要目的是使得所迷軟件可以使用備份軟件來啟動,從而保證所 述軟件可以正常運行,通常將所述軟件回滾至最近一次升級之前的情 況。在本實施例中,所述裝置47將所述軟件的當(dāng)前版本的路徑信息 設(shè)置為所述第二存儲位置,可以理解,該第二存儲位置下存儲的內(nèi)容 即為所述軟件的備份版本。在一個變化例中,該裝置47還將存儲于 第 一存儲位置的內(nèi)容全部刪除以避免該軟件版本再次導(dǎo)致所述軟件 無法正常啟動,并將第一存儲位置和第二存儲位置的標(biāo)識互換。
本領(lǐng)域技術(shù)人員理解,優(yōu)選地,上述第一存儲位置與第二存儲位置可以分別是獨立的存儲設(shè)備,例如兩塊獨立的Flash;而在一個變 化例中,也可以是同一個存儲設(shè)備上的不同的存儲空間,例如兩個不 同的目錄。在前一種情況下,即使其中一塊存儲設(shè)備發(fā)生了物理損壞, 也不會影響另一塊存儲設(shè)備的使用,因此更大程度上增加了備份軟件 的可靠性,在此不予贅述。
圖8示出根據(jù)本發(fā)明的第一實施例的,圖7所示獲取裝置41的 結(jié)構(gòu)示意圖。在本實施例中,所述獲取裝置41包括第二校驗裝置411 、 第三判斷裝置412、第三接收裝置413以及發(fā)送裝置414。其中,所 述第二校驗裝置411用于對所述升級軟件進行版本正確性校驗;所述 第三判斷裝置412用于判斷所述升級軟件是否通過版本正確性校驗; 所述第三接收裝置413用于當(dāng)所述升級軟件通過版本正確性校驗時通 過網(wǎng)絡(luò)接收所述升級軟件;所述發(fā)送裝置414用于向存儲有所述升級 軟件的服務(wù)器發(fā)送軟件升級請求。具體地,經(jīng)過裝置411的校驗操作 后,若所述裝置412確定所述升級軟件沒有通過版本正確性校驗,則 不能執(zhí)行升級處理,就不再調(diào)用任何裝置執(zhí)行任何操作;否則,裝置 412調(diào)用裝置413接收所述升級軟件。
本領(lǐng)域技術(shù)人員理解,在一個優(yōu)選實施例中,每個升級軟件中均 設(shè)置有該升級軟件的軟件名稱、版本號等,相應(yīng)地,上述第二校驗裝 置411對上述軟件名稱、版本號等進行校驗,如果軟件名稱不正確或 者該升級軟件的版本號不大(高)于被升級的軟件的版本號,則所述 第三接收裝置413確定該升級軟件未能通過所述正確性校驗。
在本實施例中,所述裝置413通過網(wǎng)絡(luò)接收所述升級軟件,而如 前所述,在一個變化例中,也可以通過其他方式接收所述升級軟件, 例如通過串口通信等,在此不予贅述。
進一步地,所述裝置411 413可以與所述發(fā)送裝置414來配合完 成獲取升級軟件的操作,即首先由裝置414主動向一個軟件升級服務(wù) 器發(fā)出升級請求,并由該服務(wù)器根據(jù)升級請求來確定升級軟件并將該 升級軟件的下載地址通知所述需要升級的軟件所在設(shè)備,從而由所述設(shè)備通過網(wǎng)絡(luò)下載該升級軟件。而在一個變化例中,所述發(fā)送裝置414 可以被省略,此時,所述軟件升級服務(wù)器主動地向多個控制裝置4分 別推送該升級軟件,并由每個控制裝置4分別確認可以接收該升級軟 件后通過網(wǎng)絡(luò)接收該升級軟件。
圖9示出根據(jù)本發(fā)明的第二實施例的,圖7所示第一校驗裝置42 的結(jié)構(gòu)示意圖,本實施例是裝置42的一個具體實施方式
。在本實施例 中,所述第一校驗裝置42包括第三校驗裝置421以及第四校驗裝置 422。其中,所述第三校驗裝置421用于對所述升級軟件進行完整性 校驗,以確定所述升級軟件是否包括所有必需的內(nèi)容,該裝置用于確 保所述升級軟件所包含的相關(guān)軟件部分已經(jīng)全部被下載,以免因為網(wǎng) 絡(luò)問題或其它問題導(dǎo)致升級軟件不完整;所述第四校驗裝置422用于 對所述升級軟件進行設(shè)備匹配校驗,以確定所述升級軟件是否與所述 軟件所在設(shè)備相匹配,從而保證合適的升級軟件被用于合適的設(shè)備。 具體地,每個升級軟件中可以均設(shè)置該升級軟件所適用的設(shè)備名稱、 類型等信息,則裝置422判斷上述信息是否與該裝置所在設(shè)備的信息 相匹配,例如若發(fā)現(xiàn)設(shè)備名稱或類型不匹配,則確定該升級軟件未能 通過^殳備匹配4交-驗。
本領(lǐng)域技術(shù)人員理解,所述裝置421可以通過多種方式實現(xiàn),例 如可以參考圖6所示實施例。具體地,在本實施例中,所述第三校驗 裝置421包括冗余信息獲取裝置4211,其用于獲取所述升級軟件中包 含的冗余信息,例如圖6所示62部分;以及第一確定裝置4212,其 用于根據(jù)所述冗余信息確定所述升級軟件是否包括所有必需的內(nèi)容。 優(yōu)選地,所述冗余信息被預(yù)先設(shè)置為包含如下內(nèi)容的信息升級軟件 名稱、版本號、升級日期、開發(fā)商、所應(yīng)用的設(shè)備名稱、所應(yīng)用的設(shè) 備類型等。這些冗余信息同時被設(shè)置在所述升級軟件的數(shù)據(jù)內(nèi)容中, 例如在操作系統(tǒng)部分64中的特定位置也同時記錄了這些信息,當(dāng)所 述數(shù)據(jù)內(nèi)容被寫入了 Flash后,則可以通過讀取所述數(shù)據(jù)內(nèi)容中記錄 的這些信息并與所述冗余信息62進行比較,如果一致,則裝置4212可以確定才交-驗通過。
在圖9所示實施例的一個變化例中,所述第三校驗裝置4211或 第四校驗裝置4212可以被省略,即只根據(jù)其中的一個裝置來進行校 驗,此時,被省略的裝置的功能則不被執(zhí)行,這并不影響本發(fā)明的實 質(zhì)內(nèi)容。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明 并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范 圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。
權(quán)利要求
1. 一種在軟件所在設(shè)備中對所述軟件進行升級及動態(tài)回滾的控制方法,其中,包括如下步驟a. 獲取與所述軟件的當(dāng)前版本相對應(yīng)的升級軟件;b. 對所述升級軟件進行校驗;c. 判斷所述升級軟件是否通過校驗;d. 若所述升級軟件通過校驗,則將所述升級軟件設(shè)置為所述軟件的當(dāng)前版本。
2. 根據(jù)權(quán)利要求1所述的方法,其中,所述步驟d還包括如下步驟 -將所述軟件原當(dāng)前版本設(shè)置為備份軟件。
3. 根據(jù)權(quán)利要求1所述的方法,其中,還包括步驟i. 判斷所述軟件是否能夠正常啟動;ii. 若所述軟件不能正常啟動,則將備份軟件設(shè)置為所述軟件的 當(dāng)前版本。
4. 根據(jù)權(quán)利要求1至3中任一項所述的方法,其中,所述步驟a包 括步驟-通過網(wǎng)絡(luò)接收所述升級軟件。
5. 根據(jù)權(quán)利要求1至4中任一項所述的方法,其中,所述步驟a包 括步驟-al.對所述升級軟件進行版本正確性校驗; -a2.判斷所述升級軟件是否通過版本正確性校驗; -a3.若所述升級軟件通過版本正確性校驗,則通過網(wǎng)絡(luò)接收所 述升級軟件。
6. 根據(jù)權(quán)利要求5所述的方法,其中,所述步驟al之前還包括步驟 -向存儲有所述升級軟件的裝置發(fā)送軟件升級請求。
7. 根據(jù)權(quán)利要求1至6中任一項所述的方法,其中,所述步驟b包 括如下步驟中的任一個或任多個-bl.對所述升級軟件進行完整性校驗,以確定所述升級軟件是 否包括所有必需的內(nèi)容;以及-b2.對所述升級軟件進行設(shè)備匹配校驗,以確定所述升級軟件 是否與所述軟件所在設(shè)備相匹配。
8. 根據(jù)權(quán)利要求7所述的方法,其中,所述步驟bl包括如下步驟 -獲取所述升級軟件中包含的冗余信息;-根據(jù)所述冗余信息確定所述升級軟件是否包括所有必需的內(nèi)容。
9. 根據(jù)權(quán)利要求1至8中任一項所述的方法,其中,所述步驟d中 的將所述升級軟件設(shè)置為所述軟件的當(dāng)前版本的步驟包括如下步驟-將所述升級軟件存儲至第一存儲位置。
10. 根據(jù)權(quán)利要求9所述的方法,其中,所述步驟d中的將所述升 級軟件設(shè)置為所述軟件的當(dāng)前版本的步驟包括如下步驟-將所述軟件的當(dāng)前版本的路徑信息設(shè)置為所述第一存儲位置。
11. 根據(jù)權(quán)利要求1至10中任一項所述的方法,其中,所述步驟d 中的將所述軟件原當(dāng)前版本設(shè)置為備份軟件的步驟包括如下步驟-將所述備份軟件存儲至第二存儲位置。
12. 根據(jù)權(quán)利要求3至11中任一項所述的方法,其中,所述步驟i 包括如下步驟-判斷在預(yù)設(shè)時間內(nèi)是否收到所述軟件正常啟動的反饋信息; -若在預(yù)設(shè)時間內(nèi)未收到所述軟件正常啟動的反饋信息,則確定 所述軟件不能正常啟動。
13. 根據(jù)權(quán)利要求3至12中任一項所述的方法,其中,所述步驟 ii中的將備份軟件設(shè)置為所述軟件的當(dāng)前版本的步驟包括如下步驟-將所述軟件的當(dāng)前版本的路徑信息設(shè)置為所述第二存儲位置。
14. 一種在軟件所在設(shè)備中對所述軟件進行升級及動態(tài)回滾的控 制裝置,其中,包括獲取裝置,用于獲取與所述軟件的當(dāng)前版本相對應(yīng)的升級軟件; 第一校驗裝置,用于對所述升級軟件進行校驗; 第一判斷裝置,用于判斷所述升級軟件是否通過校驗;以及 第 一處理裝置,用于當(dāng)所述升級軟件通過校驗時將所述升級軟件設(shè)置為所述軟件的當(dāng)前版本。
15. 根據(jù)權(quán)利要求14所述的控制裝置,其中,所述第一處理裝置 還包括第三處理裝置,用于將所述軟件原當(dāng)前版本設(shè)置為備份軟件。
16. 根據(jù)權(quán)利要求14所述的控制裝置,其中,還包括 第二判斷裝置,用于判斷所述軟件是否能夠正常啟動;以及第二處理裝置,用于當(dāng)所述軟件不能正常啟動時將備份軟件設(shè)置 為所述軟件的當(dāng)前版本。
17. 根據(jù)權(quán)利要求14至16中任一項所述的控制裝置,其中,所述 獲取裝置包括第一接收裝置,用于通過網(wǎng)絡(luò)接收所述升級軟件。
18. 根據(jù)權(quán)利要求14至17中任一項所述的控制裝置,其中,所述 獲取裝置包括第二校驗裝置,用于對所述升級軟件進行版本正確性校驗; 第三判斷裝置,用于判斷所述升級軟件是否通過版本正確性校 驗;以及第三接收裝置,用于當(dāng)所述升級軟件通過版本正確性校驗時通過 網(wǎng)絡(luò)接收所述升級軟件。
19. 根據(jù)權(quán)利要求18所述的控制裝置,其中,所述獲取裝置還包括發(fā)送裝置,用于向存儲有所述升級軟件的裝置發(fā)送軟件升級請求。
20. 根據(jù)權(quán)利要求14至19中任一項所述的控制裝置,其中,所述 第 一校驗裝置包括如下裝置中的任一個或任多個第三校驗裝置,用于對所述升級軟件進行完整性校驗,以確定所 述升級軟件是否包括所有必需的內(nèi)容;以及第四校驗裝置,用于對所述升級軟件進行設(shè)備匹配校驗,以確定 所述升級軟件是否與所述軟件所在設(shè)備相匹配。
21. 根據(jù)權(quán)利要求20所述的控制裝置,其中,所述第三校驗裝置包括冗余信息獲取裝置,用于獲取所述升級軟件中包含的冗余信息; 第 一確定裝置,用于根據(jù)所述冗余信息確定所述升級軟件是否包 括所有必需的內(nèi)容。
22. 根據(jù)權(quán)利要求14至21中任一項所述的控制裝置,其中,所述 第一處理裝置包括第一存儲裝置,用于將所述升級軟件存儲至第一存儲位置。
23. 根據(jù)權(quán)利要求22所述的控制裝置,其中,所述第一處理裝置 包括第三存儲裝置,用于將所述軟件的當(dāng)前版本的路徑信息設(shè)置為所 述第一存儲位置。
24. 根據(jù)權(quán)利要求14至23中任一項所述的控制裝置,其中,所述 第一處理裝置包括第二存儲裝置,用于將所述備份軟件存儲至第二存儲位置。
25. 根據(jù)權(quán)利要求16至24中任一項所述的控制裝置,其中,所述 第二判斷裝置包括第四判斷裝置,用于判斷在預(yù)設(shè)時間內(nèi)是否收到所述軟件正常啟 動的反饋信息;以及第二確定裝置,用于在預(yù)設(shè)時間內(nèi)未收到所述軟件正常啟動的反 饋信息時確定所述軟件不能正常啟動。
26. 根據(jù)權(quán)利要求16至25中任一項所述的控制裝置,其中,所述 第二處理裝置包括第四處理裝置,用于將所述軟件的當(dāng)前版本的路徑信息設(shè)置為所 述第二存儲位置。
27. 根據(jù)權(quán)利要求9至13中任一項所述的控制方法和/或權(quán)利要求 22至26中任一項所述的控制裝置,其中,所述第一存儲位置為第一存 儲器,所述第二存儲位置為第二存儲器。
28. 根據(jù)上述任一項權(quán)利要求所述的控制方法或控制裝置,其中, 所述設(shè)備為嵌入式設(shè)備,所述第一存儲器和/或第二存儲器為Flash。
全文摘要
本發(fā)明提供一種在軟件所在設(shè)備中對所述軟件進行升級及動態(tài)回滾的控制方法,包括獲取升級軟件的步驟、對升級軟件進行校驗的步驟、判斷是否通過校驗的步驟,以及將升級軟件設(shè)置為所述軟件當(dāng)前版本的步驟。對應(yīng)地,還提供在軟件所在設(shè)備中對所述軟件進行升級及動態(tài)回滾的控制裝置,并包括獲取裝置、第一校驗裝置、第一判斷裝置以及第一處理裝置。優(yōu)選地,所述設(shè)備為嵌入式設(shè)備。本發(fā)明在軟件升級過程中多次校驗,可以提高軟件升級的成功率,尤其是在線升級;通過對備份版本的處理,使得軟件無法正常運行時可以自動回滾。本發(fā)明尤其適合于嵌入式設(shè)備的升級管理,可有效減少維護人員的工作。
文檔編號G06F11/14GK101436138SQ200710170510
公開日2009年5月20日 申請日期2007年11月16日 優(yōu)先權(quán)日2007年11月16日
發(fā)明者賈正輝 申請人:蘇州科達通信技術(shù)發(fā)展有限公司;蘇州科達科技有限公司