本申請涉及嵌入式系統(tǒng)設計領域,尤其涉及一種升級BootLoader程序的方法及裝置。
背景技術:
在嵌入式技術方案中,嵌入式設備啟動后通常會先運行一段BootLoader程序,該程序可以對系統(tǒng)做最小初始化,準備后續(xù)系統(tǒng)軟件的運行環(huán)境并最終引導系統(tǒng)軟件。
在實際的工作過程中,由于一些新特性的添加,需要對嵌入式設備的BootLoader程序進行升級,然而,如果在嵌入式設備中升級了不適配該嵌入式設備的BootLoader程序,就會導致該嵌入式設備宕機。
技術實現要素:
有鑒于此,本申請?zhí)峁┮环N升級BootLoader程序的方法及裝置,可以避免在嵌入式設備升級BootLoader程序時,因升級了不適配該嵌入式設備的BootLoader程序而導致該嵌入式設備宕機的問題。
為實現上述目的,本申請?zhí)峁┘夹g方案如下:
根據本申請的第一方面,提出了一種升級BootLoader程序的方法,應用于嵌入式設備;所述方法包括:
當檢測到對所述嵌入式設備中的當前BootLoader程序的升級觸發(fā)操作時,獲取升級文件,所述升級文件中包含最新版本的BootLoader程序;
確定所述最新版本的BootLoader程序是否適配于所述嵌入式設備;
當所述最新版本的BootLoader程序適配于所述嵌入式設備時,通過所述最新版本的BootLoader程序更新所述嵌入式設備中的當前BootLoader程序;
當所述最新版本的BootLoader程序不適配于所述嵌入式設備時,放棄通過所述最新版本的BootLoader程序更新所述當前BootLoader程序的操作。
根據本申請的第二方面,提出了一種升級BootLoader程序的裝置,應用于嵌入式設備;所述裝置包括:
獲取單元,當檢測到對所述嵌入式設備中的當前BootLoader程序的升級觸發(fā)操作時,獲取升級文件,所述升級文件中包含最新版本的BootLoader程序;
第一確定單元,確定所述最新版本的BootLoader程序是否適配于所述嵌入式設備;
更新單元,當所述最新版本的BootLoader程序適配于所述嵌入式設備時,通過所述最新版本的BootLoader程序更新所述嵌入式設備中的當前BootLoader程序;
處理單元,當所述最新版本的BootLoader程序不適配于所述嵌入式設備時,放棄通過所述最新版本的BootLoader程序更新所述當前BootLoader程序的操作。
由以上技術方案可見,本申請通過在嵌入式設備升級BootLoader程序時,對最新版本的BootLoader程序是否適配于該嵌入式設備進行判斷,從而保證該嵌入式設備不會出現因升級了錯誤的BootLoader程序導致宕機的問題。
附圖說明
圖1是本申請一示例性實施例提供的一種升級BootLoader程序的方法的流程圖。
圖2是本申請一示例性實施例提供的打包升級文件的流程圖。
圖3是本申請一示例性實施例提供的升級文件的結構示意圖。
圖4是本申請一示例性實施例提供的另一種升級BootLoader程序的方法的流程圖。
圖5是本申請一示例性實施例提供的一種電子設備的結構示意圖。
圖6是本申請一示例性實施例提供的一種升級BootLoader程序的裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
圖1是本申請一示例性實施例示出的一種升級BootLoader程序的方法的流程圖,如圖1所示,該方法可以包括以下步驟:
步驟101,當檢測到對所述嵌入式設備中的當前BootLoader程序的升級觸發(fā)操作時,獲取升級文件,所述升級文件中包含最新版本的BootLoader程序。
步驟102,確定所述最新版本的BootLoader程序是否適配于所述嵌入式設備。
在本實施例中,所述升級文件中包含所述最新版本的BootLoader程序的第一類型標識,因此,當所述當前BootLoader程序的第二類型標識與所述第一類型標識一致時,確定所述最新版本的BootLoader程序適配于所述嵌入式設備;當所述當前BootLoader程序的第二類型標識與所述第一類型標識不一致時,確定所述最新版本的BootLoader程序不適配于所述嵌入式設備。其中,所述第二類型標識與所述嵌入式設備的處理器架構相對應。
步驟103A,當所述最新版本的BootLoader程序適配于所述嵌入式設備時,通過所述最新版本的BootLoader程序更新所述嵌入式設備中的當前BootLoader程序。
步驟103B,當所述最新版本的BootLoader程序不適配于所述嵌入式設備時,放棄通過所述最新版本的BootLoader程序更新所述當前BootLoader程序的操作。
在本實施例中,需要確定所述最新版本的BootLoader程序是否存在數據錯誤,以確保嵌入式設備升級的BootLoader程序是正確的。當所述最新版本的BootLoader程序不存在數據錯誤時,允許通過所述最新版本的BootLoader程序對所述當前BootLoader程序進行更新操作;否則不允許所述更新操作。其中,通過以下方式確定所述最新版本的BootLoader程序是否存在數據錯誤:
計算所述最新版本的BootLoader程序的校驗值,以得到第一校驗值;
提取所述升級文件中包含的所述最新版本的BootLoader程序對應的第二校驗值;其中,所述第二校驗值由生成所述升級文件的設備計算得到;
當所述第一校驗值與所述第二校驗值相等時,確定所述最新版本的BootLoader程序不存在數據錯誤,否則確定所述最新版本的BootLoader程序存在數據錯誤。
由以上技術方案可見,本申請通過在嵌入式設備獲取包含最新版本的BootLoader程序的升級文件時,對該最新版本的BootLoader程序進行校驗,以確保該最新版本的BootLoader程序適配于該嵌入式設備,以及該最新版本的BootLoader程序不存在數據錯誤,從而保證升級BootLoader程序的過程順利進行。
為了便于理解,下面結合圖2-4,對本申請的技術方案進行詳細說明。請參見圖2,圖2是本申請一示例性實施例的打包升級文件的流程圖,打包升級文件的過程可以包括以下步驟:
步驟201,檢測最新版本的BootLoader程序是否存在,若存在,則轉入步驟202,否則,結束本次打包升級文件的過程。
步驟202,計算最新版本的BootLoader程序的長度,并將得到的長度填寫至文件頭部中。
步驟203,計算最新版本的BootLoader程序的校驗值,以得到第二校驗值,并將該第二校驗值填寫至文件頭部中。
在本實施例中,可以采取CRC校驗的方式來校驗最新版本的BootLoader程序,也可以采取其他校驗方式,本申請并不對此進行限制。
步驟204,獲取最新版本的BootLoader程序的第一類型標識,并將該第一類型標識填寫至文件頭部中。
在本實施例中,該第一類型標識與嵌入式設備的處理器架構相對應,針對不同類型的處理器架構,與之對應的第一類型標識也不同,即處理器架構與第一類型標識為一一對應的關系。
步驟205,獲取結尾標識,并將該結尾標識填寫至文件頭部中。
步驟206,打包形成升級文件。
在本實施例中,升級文件的結構如圖3所示,請參見圖3,本申請將最新版本的BootLoader程序和文件頭部打包成一升級文件,其中,該文件頭部包含最新版本的BootLoader程序的第二校驗值、該最新版本的BootLoader程序的第一類型標識、該最新版本的BootLoader程序的長度以及結尾標識。在生成最新版本的BootLoader程序(例如,由PC機生成)后,通過調用打包工具,將步驟202-步驟205得到的數據(長度、第二校驗值、第一類型標識和結尾標識),填寫至文件頭部中,再將文件頭部追加到該最新版本的BootLoader程序的末尾位置,形成升級文件。
圖4是本申請一示例性實施例的升級BootLoader程序的方法的流程圖。如圖4所示,該方法可以包括以下步驟:
步驟401,獲取升級文件。
在本實施例中,可以通過網絡或者串口將升級文件下載到嵌入式設備的內存中。
步驟402,解析文件頭部。
在本實施例中,嵌入式設備讀取升級文件中的文件頭部,通過解析該文件頭部,進而獲取該文件頭部中包含的長度、第二校驗值、第一類型標識。
步驟403,判斷嵌入式設備中的當前BootLoader程序的第二類型標識,與該第一類型標識是否相同,若相同,則轉入步驟404,否則轉入步驟406B。
在本實施例中,通過比較該第一類型標識與該第二類型標識是否相同,來確定升級文件中的最新版本的BootLoader程序是否適配于該嵌入式設備,從而避免了在升級BootLoader程序時,因升級了不適配該嵌入式設備的BootLoader程序而導致該嵌入式設備宕機的問題。舉例而言,假定該第一類型標識為0x1,若該第二類型標識也為0x1,則說明該最新版本的BootLoader程序適配于該嵌入式設備;若該第二類型標識為0x2或其他任意不為0x1的標識,則說明該最新版本的BootLoader程序不適配于該嵌入式設備,即不能通過該最新版本的BootLoader程序更新該嵌入式設備中的當前BootLoader程序。
步驟404,計算獲取的升級文件中最新版本的BootLoader程序的校驗值,以得到第一校驗值。
步驟405,比較該第一校驗值與文件頭部中記錄的第二校驗值是否相等,若相等,則轉入步驟406A,否則轉入步驟406B。
在本實施例中,由于在生成最新版本的BootLoader程序時,就計算得到第二校驗值,并將該第二校驗值與該最新版本的BootLoader程序綁定在一起,從而保證了該第二校驗值能夠正確反映該最新版本的BootLoader程序在傳輸和下載過程中是否存在數據錯誤,即該第二校驗值為不存在數據錯誤的BootLoader程序的校驗值。舉例而言,假定設備A生成最新版本的BootLoader程序,然后設備A將該最新版本的BootLoader程序傳輸至設備B,而設備B對接收到的BootLoader程序進行了修改(即此時設備B中的該BootLoader程序存在數據錯誤了),并針對修改后的BootLoader程序計算了校驗值。當設備C由于某些原因,例如無法與設備A連接,或者與設備A的傳輸速度太慢,進而選擇從設備B中下載所需升級的BootLoader程序時,即便設備C在下載后利用設備B提供的校驗值進行了校驗,設備C通過設備B得到的BootLoader程序也不是正確的。而本申請通過在生成最新版本的BootLoader程序時,就將第二校驗值與該最新版本的BootLoader程序綁定在一起(即打包成升級文件),在后續(xù)的傳輸過程中,該第二校驗值始終與該最新版本的BootLoader程序綁定在一起,當嵌入式設備利用獲取的最新版本的BootLoader程序來更新當前BootLoader程序時,只需通過與該最新版本的BootLoader程序綁定在一起的第二校驗值,即可確定該最新版本的BootLoader程序在傳輸和下載過程中是否存在數據錯誤,從而確保升級過程順利完成。
步驟406A,通過升級文件中最新版本的BootLoader程序,更新嵌入式設備中的當前BootLoader程序。
步驟406B,提示用戶文件不合法。
在本實施例中,在承接步驟403的情況下,由于升級文件中最新版本的BootLoader程序不適配于嵌入式設備,所以該最新版本的BootLoader程序不能用于更新當前BootLoader程序;在承接步驟405的情況下,由于最新版本的BootLoader程序存在數據錯誤,所以該最新版本的BootLoader程序也不能用于更新當前BootLoader程序。
嵌入式設備可以直接在顯示屏上輸出文件不合法的通知,以使用戶及時發(fā)現該異常狀況;或者,嵌入式設備可以通過向用戶的手機、PC等電子設備發(fā)送異常通知,以使用戶在任意場景下,均能夠及時發(fā)現該異常狀況;當然,本申請并不限制該異常信息的輸出方式。
由以上技術方案可見,本申請將最新版本的BootLoader程序的第二校驗值和第一類型標識記錄在文件頭部中,然后將該文件頭部與該最新版本的BootLoader程序打包為一升級文件,在升級BootLoader程序時,利用該第二校驗值來確定獲取的最新版本的BootLoader程序是否存在數據錯誤,利用該第一類型標識來確定獲取的最新版本的BootLoader程序是否適配于嵌入式設備,一方面,保證了該嵌入式設備不會出現因升級了錯誤的BootLoader程序導致宕機的問題,另一方面,整個過程無需人為操作,提升了對該嵌入式設備中當前BootLoader程序的升級更新效率。
圖5示出了根據本申請的一示例性實施例的電子設備的示意結構圖。請參考圖5,在硬件層面,該電子設備包括處理器502、內部總線504、網絡接口506、內存508以及非易失性存儲器510,當然還可能包括其他業(yè)務所需要的硬件。處理器502從非易失性存儲器510中讀取對應的計算機程序到內存502中然后運行,在邏輯層面上形成升級BootLoader程序的裝置。當然,除了軟件實現方式之外,本申請并不排除其他實現方式,比如邏輯器件抑或軟硬件結合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個邏輯單元,也可以是硬件或邏輯器件。
請參考圖6,在軟件實施方式中,該升級BootLoader程序的裝置可以包括獲取單元601、第一確定單元602、更新單元603、處理單元604、第二確定單元605和控制單元606。其中:
獲取單元601,當檢測到對所述嵌入式設備中的當前BootLoader程序的升級觸發(fā)操作時,獲取升級文件,所述升級文件中包含最新版本的BootLoader程序;
第一確定單元602,確定所述最新版本的BootLoader程序是否適配于所述嵌入式設備;
更新單元603,當所述最新版本的BootLoader程序適配于所述嵌入式設備時,通過所述最新版本的BootLoader程序更新所述嵌入式設備中的當前BootLoader程序;
處理單元604,當所述最新版本的BootLoader程序不適配于所述嵌入式設備時,放棄通過所述最新版本的BootLoader程序更新所述當前BootLoader程序的操作。
可選的,所述升級文件中包含所述最新版本的BootLoader程序的第一類型標識;所述第一確定單元602具體用于:
當所述當前BootLoader程序的第二類型標識與所述第一類型標識一致時,確定所述最新版本的BootLoader程序適配于所述嵌入式設備;
當所述當前BootLoader程序的第二類型標識與所述第一類型標識不一致時,確定所述最新版本的BootLoader程序不適配于所述嵌入式設備。
可選的,所述第二類型標識與所述嵌入式設備的處理器架構相對應。
可選的,還包括:
第二確定單元605,確定所述最新版本的BootLoader程序是否存在數據錯誤;
控制單元606,當所述最新版本的BootLoader程序不存在數據錯誤時,允許所述更新單元通過所述最新版本的BootLoader程序對所述當前BootLoader程序進行更新操作;否則不允許所述更新操作。
可選的,所述第二確定單元具體用于:
計算所述最新版本的BootLoader程序的校驗值,以得到第一校驗值;
提取所述升級文件中包含的所述最新版本的BootLoader程序對應的第二校驗值;其中,所述第二校驗值由生成所述升級文件的設備計算得到;
當所述第一校驗值與所述第二校驗值相等時,確定所述最新版本的BootLoader程序不存在數據錯誤,否則確定所述最新版本的BootLoader程序存在數據錯誤。
上述裝置中各個單元的功能和作用的實現過程具體詳見上述方法中對應步驟的實現過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。