文件和根文件系統(tǒng)文件分別對設備固件中的內核和根文件系統(tǒng)進行升級;
[0134]步驟326、當對設備固件中的內核和根文件系統(tǒng)升級完畢后,執(zhí)行步驟330 ;
[0135]步驟328、通過當前運行的引導分區(qū)向啟動標識分區(qū)中寫入一個啟動標識;
[0136]步驟330、讀取內核分區(qū)中的內核文件,并啟動內核;
[0137]步驟332、判斷內核啟動是否成功,如果是,則執(zhí)行步驟334 ;如果否,則重新啟動并返回步驟300 ;
[0138]步驟334、讀取根文件系統(tǒng)分區(qū)中的根文件系統(tǒng)文件,并啟動根文件系統(tǒng);
[0139]步驟336、判斷根文件系統(tǒng)啟動是否成功,如果是,則執(zhí)行步驟338 ;如果否,則重新啟動并返回步驟300 ;
[0140]步驟338、清除啟動標識分區(qū)中寫入的最后一個啟動標識。
[0141]上述方法是對下面所描述的設備的固件進行升級。
[0142]設備的固件包括:一個bootloader分區(qū),I個以上引導分區(qū)(U-Boot分區(qū)),I個以上啟動標識分區(qū),I個以上配置分區(qū),其它還有內核分區(qū)(kernel分區(qū))和根文件系統(tǒng)分區(qū)(rootfs分區(qū))等,每個分區(qū)按物理塊為單位存儲。
[0143]bootloader 一般是簡化版本的U_Boot,負責校驗并加載正確的U_Boot,功能比較簡單,無需升級。
[0144]U-Boot分區(qū)負責檢測啟動標識分區(qū),當檢測到連續(xù)啟動標識超出規(guī)定數(shù)量(如10次)時停止啟動系統(tǒng),并啟動網(wǎng)絡升級服務程序,當超出一定時間(如5分鐘)仍未開始升級時再次嘗試啟動系統(tǒng)。
[0145]每次U-Boot啟動系統(tǒng)(加載kernel)前都啟用看門狗并追加啟動標識,系統(tǒng)啟動后由網(wǎng)絡升級服務或相關應用判定正常后再關閉或接管喂狗及清除最后一個啟動標識。
[0146]若需要升級U-Boot,則必須保證有2個以上的U-Boot分區(qū)(當使用NAND Flash時為避免出現(xiàn)壞塊,最好使用3個以上的u-boot分區(qū)),升級時一個接一個的升級,而不要一同升級(多個分區(qū)一同擦除一起寫),避免斷電后沒有正確U-Boot分區(qū)可用;若無需升級U-Boot,也可以僅使用一個可用U-Boot分區(qū)。
[0147]使用NAND Flash時,每個U-Boot分區(qū)應使用固定存儲位置,而不是跳過壞塊,以避免新壞塊的影響bootloader校驗及升級的復雜度。
[0148]設備中各分區(qū)的升級方法:讀分區(qū)升級數(shù)據(jù)到內存、擦除整個分區(qū)、寫數(shù)據(jù)到整個分區(qū)。
[0149]可選地,在對設備中的固件進行升級時,還可以每次僅升級U-Boot分區(qū)二(就是流程中的第二引導分區(qū)),bootloader分區(qū)只要通過校驗判定該分區(qū)正常時即使用此分區(qū),否則使用U-Boot分區(qū)一(就是流程中的第一引導分區(qū)),如此仍然可以達到既能夠多數(shù)情況下使用新分區(qū)又可以兼顧到升級失敗造成的風險。
[0150]綜上所述,本實施例提供的設備固件升級方法,當獲取到設備的啟動指令時,運行設備的多個引導分區(qū)中確定正常的引導分區(qū),然后通過運行確定的引導分區(qū)判斷設備的固件是否需要升級,在確定設備的固件需要升級時,就可以下載固件的鏡像文件對設備的固件進行升級;即使在對設備的固件進行升級的過程中,由于異常情況斷電關機而導致設備的固件升級失敗的情況下,只要設備的固件中設置的多個引導分區(qū)中有一個可以正常使用,就可以引導設備進行固件的升級,完成固件的升級操作,而完整的固件就可以正常引導設備中的應用程序/操作系統(tǒng)等軟件啟動,使用戶可以正常使用設備,而無需將設備返回廠商進行維修,從而緩解固件升級過程中出現(xiàn)斷電給用戶帶來的影響,提升用戶體驗度。
[0151]實施例3
[0152]參見圖4,本實施例提出一種設備固件升級裝置,用于執(zhí)行上述實施例中描述的設備固件升級方法,該裝置包括:正常引導分區(qū)確定模塊400、固件升級判斷模塊402和固件升級模塊404。
[0153]其中,正常引導分區(qū)確定模塊400,用于當獲取到設備的啟動指令時,從設備的多個引導分區(qū)中確定正常的引導分區(qū);固件升級判斷模塊402,與正常引導分區(qū)確定模塊400連接,用于通過運行確定的引導分區(qū)判斷設備的固件是否需要升級;固件升級模塊404,與固件升級判斷模塊402連接,用于固件升級判斷模塊的判斷結果為是時,下載固件的鏡像文件,使用下載的鏡像文件對設備的固件升級。
[0154]相對于現(xiàn)有技術的固件中只設置有一個引導分區(qū)且不能對引導分區(qū)進行升級的情況,固件升級模塊404通過設置的未運行引導分區(qū)獲取單元、未運行引導分區(qū)升級單元、運行引導分區(qū)升級單元和內核根文件系統(tǒng)升級單元對固件中的多個引導分區(qū)進行升級,固件升級模塊404具體包括:
[0155]未運行引導分區(qū)獲取單元,用于從多個引導分區(qū)中選取除正在運行的引導分區(qū)以外的引導分區(qū);
[0156]未運行引導分區(qū)升級單元,用于使用鏡像文件逐一對選取的引導分區(qū)升級;
[0157]運行引導分區(qū)升級單元,用于當選取的引導分區(qū)均升級完畢時,使用鏡像文件對正在運行的引導分區(qū)升級;
[0158]內核根文件系統(tǒng)升級單元,用于當正在運行的引導分區(qū)升級完畢時,使用鏡像文件中的內核分區(qū)文件和根文件系統(tǒng)分區(qū)文件,分別對固件中的內核分區(qū)和根文件系統(tǒng)分區(qū)升級。
[0159]通過以上的描述,先對未使用的引導分區(qū)進行升級,并在對未使用的引導分區(qū)升級完畢后,升級當前使用的引導分區(qū),可以保證在對引導分區(qū)升級的過程中出現(xiàn)升級終斷的情況時,也可以保證設備固件中有可以使用的引導分區(qū),從而在重新啟動設備時,可以通過設備固件中可以使用的引導分區(qū),對設備固件進行升級操作,確保了設備可以完成升級并被正常使用。
[0160]由于當內核分區(qū)和根文件系統(tǒng)分區(qū)中的數(shù)據(jù)和文件有損壞時,設備的固件就不能對設備中的操作系統(tǒng)中的文件和服務進行啟動和掛載,就不能完成系統(tǒng)的啟動,那么在這種情況下,固件升級判斷模塊402通過設置的啟動標識數(shù)量確定單元、啟動標識數(shù)量判斷單元、升級確定單元、啟動單元和設備重啟單元對設備的固件進行升級,固件升級判斷模塊402具體包括:
[0161 ]啟動標識數(shù)量確定單元,用于通過運行確定的引導分區(qū)讀入啟動標識分區(qū)中記錄的啟動標識,并統(tǒng)計讀入的啟動標識的數(shù)量;
[0162]啟動標識數(shù)量判斷單元,用于判斷啟動標識的數(shù)量是否達到預設的啟動標識閾值;
[0163]升級確定單元,用于啟動標識數(shù)量判斷單元的判斷結果為是時,確定設備的固件需要升級;
[0164]啟動單元,用于啟動標識數(shù)量判斷單元的判斷結果為否時,通過運行確定的引導分區(qū)向啟動標識分區(qū)中寫入一個啟動標識,以及啟動固件的內核和根文件系統(tǒng);
[0165]設備重啟單元,用于當內核或根文件系統(tǒng)啟動失敗時,重啟設備;
[0166]啟動標識清除單元,用于當根文件系統(tǒng)啟動成功時,擦除當前啟動標識分區(qū)的最后一個啟動標識。
[0167]通過以上的描述可以看出,通過對啟動標識的數(shù)量進行判斷,就可以確定設備的固件是否需要升級,具有操作簡單方便且容易實施的特點。
[0168]由于通過設置多個引導分區(qū)就保證了設備可以正常使用,所以本實施例中的設備的固件中就無需像某些具有雙系統(tǒng)的設備固件一樣,固件中分別包括兩個內核分區(qū)和兩個根文件系統(tǒng)分區(qū)。而只需要在設備的固件中分別設置一個內核分區(qū)和一個根文件系統(tǒng)分區(qū)。由于本實施例的固件中分別只設置有一個內核分區(qū)和一個根文件系統(tǒng)分區(qū),具有節(jié)省了存儲空間和降低了固件的開發(fā)成本的特點。
[0169]相關技術中設備在啟動時需要對固件中的引導分區(qū)、內核分區(qū)和根文件系統(tǒng)分區(qū)都進行校驗,所以啟動的時間較長,所以正常引導分區(qū)確定模塊400通過設置的引導分區(qū)數(shù)據(jù)校驗單元和正確引導分區(qū)確定單元來縮短固件的校驗時間,正常引導分區(qū)確定模塊400具體包括:
[0170]引導分區(qū)數(shù)據(jù)校驗單元,用于從設備的多個引導分區(qū)中讀取一個引導分區(qū)的數(shù)據(jù),對讀取的引導分區(qū)的數(shù)據(jù)進行校驗;
[0171]正確引導分區(qū)確定單元,用于當讀取的引導分區(qū)的數(shù)據(jù)校驗正確時,確定數(shù)據(jù)校驗正確的引導分區(qū)為正常的引導分區(qū)。
[0172]通過以上的描述可以看出,通過校驗數(shù)據(jù)的方式確定哪個引導分區(qū)正常,然后通過正常的引導分區(qū)啟動系統(tǒng),以快捷可靠的方式來對系統(tǒng)進行啟動,而無需對內核和根文件系統(tǒng)進行進一步的校驗,從而減少了系統(tǒng)校驗的時間,使設備在正常情況下,可以快速啟動。
[0173]在從網(wǎng)路上下載固件的鏡像文件時,可能由于網(wǎng)絡忙,導致長時間下載不到固件的鏡像文件的情況的出現(xiàn),所以固件升級模塊404,通過設置的鏡像文件下載判斷單元、鏡像文件保存單元和設備啟動單元來縮短設備的啟動時間,固件升級模塊404具體包括:
[0174]鏡像文件下載判斷單元,用于判斷預設時長內是否開始通過網(wǎng)絡下載固件的鏡像文件;
[0175]鏡像文件保存單元,用于鏡像文件下載判斷單元的判斷結果為是時,保存下載得到的固件