嵌入式系統升級的方法、裝置及設備的制作方法
【專利摘要】本公開是關于一種嵌入式系統升級的方法、裝置及設備,屬于計算機【技術領域】。方法包括:在已存在的至少兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統;在第一嵌入式系統下獲取系統升級包,將系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對第二嵌入式系統的升級。本發明在已存在的至少兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統后,將在第一嵌入式系統下獲取的系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對第二嵌入式系統的升級,擴展了嵌入式系統升級的方式。
【專利說明】嵌入式系統升級的方法、裝置及設備
【技術領域】
[0001]本公開是關于計算機【技術領域】,尤其是一種嵌入式系統升級的方法、裝置及設備。【背景技術】
[0002]隨著社會的不斷進步,植入嵌入式系統的嵌入式設備憑借其具有的高可靠性及高壽命期限等特點,已廣泛應用于交通、水利等領域。在計算機技術迅猛發展的當下,各領域對嵌入式設備的系統性能要求也在日益提高。因此,如何對嵌入式設備的嵌入式系統進行升級,以滿足各領域對嵌入式設備日益提高的系統性能要求,成為了本領域技術人員較為關注的一個問題。
[0003]相關技術在對嵌入式系統進行升級之前,在嵌入式設備的存儲媒質中植入單個嵌入式系統。在對嵌入式系統進行升級時,首先確定嵌入式設備是否已同遠端的開發主機(host)建立網絡連接;在確定嵌入式設備已同遠端的開發主機建立網絡連接后,通過串口或網口從開發主機上獲取嵌入式系統的升級包;之后,將獲取到的嵌入式系統的升級包寫入到嵌入式設備的存儲媒質中,并啟動升級后的嵌入式系統。
[0004]在實現本發明的過程中,發明人發現相關技術至少存在以下問題:
[0005]相關技術提供的嵌入式系統升級方式中僅在嵌入式設備的存儲媒質中植入單個嵌入式系統,因此要求在升級過程中不能存在異常情況,比如,在升級過程中嵌入式設備不能斷電或升級包本身不能存在異常;若在升級過程中存在異常情況,則可能導致嵌入式系統升級失敗,甚至導致整個嵌入式設備不可用,所以該種嵌入式系統的升級方式具有很強的局限性。
【發明內容】
[0006]為克服相關技術中存在的問題,本公開提供一種嵌入式系統升級的方法、裝置及設備。
[0007]一方面,本公開提供了一種嵌入式系統升級的方法;所述方法包括:
[0008]在已存在的至少兩個嵌入式系統中,確定當如具有啟動能力的系統版本號最聞的嵌入式系統作為待啟動的第一嵌入式系統,并啟動所述第一嵌入式系統;
[0009]在所述第一嵌入式系統下獲取系統升級包,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對所述第二嵌入式系統的升級。
[0010]可選地,還包括:
[0011]為不同的嵌入式系統邏輯劃分對應的存儲媒質分區,并在對應的存儲媒質分區中植入對應的嵌入式系統。
[0012]可選地,所述第一嵌入式系統包括內核映像文件及根文件系統映像文件,且所述第一嵌入式系統包括的內核映像文件及根文件系統映像文件存儲在所述第一嵌入式系統對應的存儲媒質分區中;
[0013]所述啟動所述第一嵌入式系統,包括:[0014]將所述第一嵌入式系統對應的存儲媒質分區中存儲的所述第一嵌入式系統的內核映像文件加載到內存中運行,并掛載所述第一嵌入式系統的根文件系統映像文件。
[0015]可選地,所述系統升級包包括升級后的內核映像文件及根文件系統映像文件;
[0016]所述將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,包括:將所述系統升級包包括的升級后的內核映像文件及根文件系統映像文件寫入所述第二嵌入式系統對應的存儲媒質分區中。
[0017]可選地,還包括:
[0018]對所述系統升級包進行校驗;
[0019]校驗成功后,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中。
[0020]可選地,所述在已存在的至少兩個嵌入式系統中,確定當如具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括:
[0021]根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;
[0022]如果在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級,則根據第二啟動標識確定上一次升級的嵌入式系統,并將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統;
[0023]其中,所述第一啟動標識用于標識在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;所述第二啟動標識用于標識上一次啟動的嵌入式系統。
[0024]可選地,還包括:
[0025]如果在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級,則將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
[0026]可選地,所述在已存在的至少兩個嵌入式系統中,確定當如具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括:
[0027]如果具有所述已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動,則根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統;
[0028]其中,所述第三啟動標識用于標識當前啟動的嵌入式系統。
[0029]另一方面,本公開提供了一種嵌入式系統升級的裝置;所述裝置包括:
[0030]確定I吳塊,用于在已存在的至少兩個嵌入式系統中確定當如具有啟動能力的待啟動的第一嵌入式系統;
[0031]啟動模塊,用于啟動所述確定模塊確定的第一嵌入式系統;
[0032]獲取模塊,用于在所述啟動模塊啟動的第一嵌入式系統下獲取系統升級包;
[0033]升級模塊,用于將所述獲取模塊獲取到的系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對所述第二嵌入式系統的升級。
[0034]可選地,所述裝置還包括:
[0035]劃分模塊,用于為不同的嵌入式系統邏輯劃分對應的存儲媒質分區;
[0036]植入模塊,用于在所述劃分模塊劃分的對應的存儲媒質分區中植入對應的嵌入式系統。[0037]可選地,所述第一嵌入式系統包括內核映像文件及根文件系統映像文件,且所述第一嵌入式系統包括的內核映像文件及根文件系統映像文件存儲在所述第一嵌入式系統對應的存儲媒質分區中;
[0038]所述啟動模塊,包括:
[0039]加載單元,用于將所述第一嵌入式系統對應的存儲媒質分區中存儲的所述第一嵌入式系統的內核映像文件加載到內存中運行;
[0040]掛載單元,用于掛載所述第一嵌入式系統的根文件系統映像文件。
[0041]可選地,所述系統升級包包括升級后的內核映像文件及根文件系統映像文件;
[0042]所述升級模塊,用于將所述系統升級包包括的升級后的內核映像文件及根文件系統映像文件寫入所述第二嵌入式系統對應的存儲媒質分區中。
[0043]可選地,所述裝置還包括:
[0044]校驗模塊,用于對所述系統升級包進行校驗;
[0045]所述升級模塊,用于當所述校驗模塊校驗成功后,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中。
[0046]可選地,所述確定模塊包括:
[0047]第一確定單元,用于根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;
[0048]第二確定單元,用于當所述第一確定單元確定在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級后,根據第二啟動標識確定上一次升級的嵌入式系統,并將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統;
[0049]其中,所述第一啟動標識用于標識在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;所述第二啟動標識用于標識上一次啟動的嵌入式系統。
[0050]可選地,所述確定模塊還包括:
[0051]第三確定單元,用于當所述第一確定單元確定在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級后,將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
[0052]可選地,所述確定模塊包括:
[0053]第四確定單元,用于當具有所述已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動時,根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統;
[0054]其中,所述第三啟動標識用于標識當前啟動的嵌入式系統。
[0055]再一方面,本公開提供了一種設備;所述設備包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經配置以由一個或者一個以上處理器執行,所述一個或者一個以上程序包含用于進行以下操作的指令:
[0056]在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動所述第一嵌入式系統;
[0057]在所述第一嵌入式系統下獲取系統升級包,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對所述第二嵌入式系統的升級。
[0058]本公開的一些有益效果可以包括:
[0059]在已存在的至少兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統后,在第一嵌入式系統下獲取系統升級包,且將系統升級包寫入第二嵌入式系統對應的存儲媒質中,從而擴展了嵌入式系統升級的方式,達到了嵌入式系統升級的目的。
[0060]應當理解的是,以上的一般描述和后文的細節描述僅是示例性的,并不能限制本公開。
【專利附圖】
【附圖說明】
[0061]此處所說明的附圖用來提供對本公開的進一步理解,構成本申請的一部分,并不構成對本公開的限定。在附圖中:
[0062]圖1是本公開一個實施例提供的一種嵌入式系統升級的方法的示例性流程圖;
[0063]圖2是本公開另一個實施例提供的一種嵌入式系統升級的方法的示例性流程圖;
[0064]圖3是本公開另一個實施例提供的第一種嵌入式系統升級的裝置的示例性結構示意圖;
[0065]圖4是本公開另一個實施例提供的第二種嵌入式系統升級的裝置的示例性結構示意圖;
[0066]圖5是本公開另一個實施例提供的一種啟動模塊的示例性內部結構示意圖;
[0067]圖6是本公開另一個實施例提供的第三種嵌入式系統升級的裝置的示例性結構示意圖;
[0068]圖7是本公開另一個實施例提供的第一種確定模塊的示例性內部結構示意圖;
[0069]圖8是本公開另一個實施例提供的第二種確定模塊的示例性內部結構示意圖;
[0070]圖9是本公開另一個實施例提供的第三種確定模塊的示例性內部結構示意圖;
[0071]圖10是本公開另一個實施例提供的一種終端設備的示例性結構示意圖。
[0072]通過上述附圖,已示出本公開明確的實施例,后文中將有更詳細的描述。這些附圖和文字描述并不是為了通過任何方式限制本公開構思的范圍,而是通過參考特定實施例為本領域技術人員說明本公開的概念。
【具體實施方式】
[0073]為使本公開的目的、技術方案和優點更加清楚明白,下面結合實施方式和附圖,對本公開做進一步詳細說明。在此,本公開的示意性實施方式及其說明用于解釋本公開,但并不作為對本公開的限定。
[0074]本公開實施例提供一種嵌入式系統升級的方法,應用于植入有嵌入式系統的嵌入式設備或終端。在嵌入式系統中,包含有BootLoader (系統啟動加載器),其位于嵌入式設備或終端的閃存的起始處,王要用來啟動系統。BootLoader在嵌入式系統的內核運彳丁之ill運行。可以初始化硬件設備、建立內存空間映射圖,從而將嵌入式系統的軟硬件環境帶到一個合適的狀態,以便為最終調用嵌入式系統的內核準備好正確的環境。以下結合附圖及上述內容對本公開進行詳細說明。[0075]在一個實施例中,如圖1所示,嵌入式系統升級的方法包括:
[0076]在步驟SlOl中,在已存在的至少兩個嵌入式系統中,確定當如具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統;
[0077]在另一個實施例中,還包括:
[0078]為不同的嵌入式系統邏輯劃分對應的存儲媒質分區,并在對應的存儲媒質分區中植入對應的嵌入式系統。
[0079]在另一個實施例中,在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括但不限于:
[0080]根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;
[0081]如果在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級,則根據第二啟動標識確定上一次升級的嵌入式系統,并將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統;
[0082]其中,第一啟動標識用于標識在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;第二啟動標識用于標識上一次啟動的嵌入式系統。
[0083]在另一個實施例中,還包括:
[0084]如果在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級,則將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
[0085]在另一個實施例中,在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括但不限于:
[0086]如果具有已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動,則根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統;
[0087]其中,第三啟動標識用于標識當前啟動的嵌入式系統。
[0088]在另一個實施例中,第一嵌入式系統包括內核映像文件及根文件系統映像文件,且第一嵌入式系統包括的內核映像文件及根文件系統映像文件存儲在第一嵌入式系統對應的存儲媒質分區中;
[0089]啟動第一嵌入式系統,包括但不限于:
[0090]將第一嵌入式系統對應的存儲媒質分區中存儲的第一嵌入式系統的內核映像文件加載到內存中運行,并掛載第一嵌入式系統的根文件系統映像文件;
[0091]在步驟S102中,在第一嵌入式系統下獲取系統升級包,將系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對第二嵌入式系統的升級。
[0092]在另一個實施例中,系統升級包包括升級后的內核映像文件及根文件系統映像文件;
[0093]將系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,包括:
[0094]將系統升級包包括的升級后的內核映像文件及根文件系統映像文件寫入第二嵌入式系統對應的存儲媒質分區中。
[0095]在另一個實施例中,還包括:[0096]對系統升級包進行校驗;
[0097]校驗成功后,將系統升級包寫入第二嵌入式系統對應的存儲媒質分區中。
[0098]本實施例提供的方法,在已存在的至少兩個嵌入式系統中確定當前具有啟動能力的系統版本最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統后,將在第一嵌入式系統下獲取到的系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,從而完成第二嵌入式系統的升級,達到嵌入式系統升級的目的。該種方法下,即便在第一嵌入式系統下未獲取到系統升級包,也可繼續運行第一嵌入式系統,所以即使第二嵌入式系統升級失敗,也不會導致整個嵌入式設備不可用,因此,該種嵌入式系統的升級方式具有良好的擴展性。
[0099]在另一個實施例中,以嵌入式設備中存在兩個嵌入式系統為例,對本公開提供的嵌入式系統升級的方法進行詳細地解釋說明。如圖2所示,嵌入式系統升級的方法包括:
[0100]在步驟S201中,在已存在的兩個嵌入式系統中確定當如具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動第一嵌入式系統;
[0101]針對該步驟,在執行本步驟之前,預先對嵌入式設備的存儲媒質進行邏輯分區,以得到待植入的兩個嵌入式系統各自對應的存儲媒質分區,從而在對應的存儲媒質分區中分別植入對應的嵌入式系統。
[0102]其中,在對嵌入式設備的存儲媒質進行邏輯分區時,得到的存儲媒質分區的數量具體可為8個,當然,存儲媒質的分區數量除數值8外,還可以為其他數值,例如,16或32等等,本實施例對存儲媒質分區的數量不作具體限定,可視待植入的嵌入式系統的個數而定。此外,每個存儲媒質分區的大小可以相同也可以不同。例如,可劃分存儲空間較小的存儲媒質分區,用來存儲一類啟動標識;還可劃分存儲空間較大的存儲媒質分區,用來存儲兩個嵌入式系統的相關文件。其中,存儲空間較小的存儲媒質分區的大小可為64千字節;存儲空間較大的存儲媒質分區的大小具體可為4千兆。當然,存儲空間小的存儲媒質分區及存儲空間大的存儲媒質分區的大小除上述數值外,還可以為其他數值,例如32千字節或2千兆,本實施例對每個存儲媒質分區的大小同樣不作具體限定。
[0103]在另一個實施例中,在嵌入式設備的不同存儲媒質分區分別植入對應的嵌入式系統的實現方式,包括但不限于:將兩個嵌入式系統的內核映像文件及根文件系統映像文件分別寫入對應的存儲媒質分區;并在其他存儲媒質分區中寫入兩個嵌入式系統的BootLoader0
[0104]其中,嵌入式系統的內核在嵌入式設備中以文件的形式存在(保存成磁盤文件形式),即內核映像文件;根文件系統在嵌入式設備中同樣以文件的形式存在(保存成磁盤文件形式),即根文件系統映像文件。此外,由于每個嵌入式系統的BootLoader的作用及程序代碼均一致,因此,在寫入兩個嵌入式系統的內核映像文件及根文件系統映像文件時,僅需寫入一個BootLoader,便可對寫入的兩個嵌入式系統的啟動進行控制,從而達到節省存儲空間的目的。
[0105]除上述在嵌入式設備的不同存儲媒質分區寫入對應的嵌入式系統的方式外,還可以采取其他寫入方式,本實施例對此不作具體限定。
[0106]在另Iv實施例中,為了能夠在已存在的兩個嵌入式系統中確定當如具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,本實施例提供的方法還包括設置第一啟動標識、第二啟動標識及第三啟動標識,并將第一啟動標識、第二啟動標識及第三啟動標識分別寫入嵌入式設備的存儲媒質分區中的步驟。
[0107]其中,第一啟動標識,可以符號flag_where_reboot進行標識,針對當前次系統啟動來說,用于表示在上一次啟動的嵌入式系統中是否進行了系統升級;本實施例以flag_where_reboot=l表示“在上一次啟動的嵌入式系統中進行了系統升級” ;flag_where_reboot=0表示“在上一次啟動的嵌入式系統中未進行系統升級”。
[0108]第二啟動標識,可以符號flag_laSt_SUCCeSS進行標識,針對當前次系統啟動來說,用于標識上一次成功啟動的系統是兩個嵌入式系統中的哪個系統;例如,如果以系統I和系統2分別標識寫入的兩個嵌入式系統,本實施例中可以flag_last_success=0標識上一次成功啟動的系統是系統I ;以flag_last_success=l標識上一次成功啟動的系統是系統2。
[0109]第三啟動標識,可以符號flag_last_b00t_try進行標識,針對嵌入式系統初次啟動來說,可以根據第三啟動標識確定嵌入式系統初次啟動時應該啟動哪一個嵌入式系統。例如,如果以系統I和系統2分別標識寫入的兩個嵌入式系統,本實施例中可以flag_last_boot_try=0表示嵌入式系統初次啟動時應啟動系統I ;以flag_last_boot_try=0表示嵌入式系統初次啟動時應啟動系統2。
[0110]需要說明的是,上述第三啟動標識在嵌入式系統升級成功或嵌入式系統正常啟動時,均不會起到作用。當嵌入式系統初次啟動時或嵌入式系統啟動故障時,才會起到作用。其是為了確定首次啟動時應啟動哪個系統,以及在確定該系統啟動失敗時來繼續啟動另一個系統,為防止反復啟動故障嵌入式系統而設置的。其具體作用會在后續步驟中結合程序代碼予以說明。
[0111]在另一個實施例中,在設置好上述三個啟動標識后,分別為三個啟動標識賦初值
O。在向嵌入式設備的存儲媒質分區寫入上述三個啟動標識時,為了防止在向存儲媒質分區中寫入啟動標識過程中發生故障,從而導致成功寫入的啟動標識失效,所以將上述三個啟動標識分別寫在三個不同于存儲兩個嵌入式系統的文件的存儲媒質分區中。
[0112]基于上述設置的三個啟動標識,在已存在的兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統的實現方式,包括但不限于:
[0113]根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;
[0114]如果在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級,則根據第二啟動標識確定上一次升級的嵌入式系統,并將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
[0115]如果在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級,則將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
[0116]在另一實施例中,在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括但不限于:[0117]如果具有已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動,則根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統。
[0118]現以系統I和系統2分別標識兩個嵌入式系統,第一啟動標識為flag_where_reboot,且 flag_where_reboot 白勺值為 O 或 I,第二啟動標識為 flag_last_ success,且flag_last_success 的值為 O 或 I,第三啟動標識 flag_last_boot_try,且 flag_last_boot_try的值為O或I為例,對上述在已存在的兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統進行形象地解釋說明。其中,各個啟動標識的數值表示的具體含義已在本步驟的前面部分予以介紹,此處不再贅述。具體步驟如下:
[0119]第一步:確定第一啟動標識flag_where_reboot的當前值;
[0120]第二步:如果f lag_where_reboot 的當前值為 1,則將 f lag_where_reboot 的當前值賦O,并繼續確定第二啟動標識flag_last_success的當前值;
[0121]第三步:在第二步中,如果flag_last_success的當前值為1,則確定當前待啟動的第一嵌入式系統為系統I ;如果flag_last_success的當前值為O,則確定當前待啟動的第一嵌入式系統為系統2 ;
[0122]第四步:在第一步中,如果flag_where_reboot的當前值為O,則繼續確定第二啟動標識flag_last_success的當前值;
[0123]第五步:在第四步中,如果第二啟動標識flag_last_success的當前值為1,則啟動系統2 ;如果第二啟動標識flag_last_success的當前值為O,則繼續確定第三啟動標識flag_last_boot_try 的當前值;
[0124]第六步:在第五步中,如果第三啟動標識flag_last_boot_try的當前值為O,則啟動系統I,并將flag_last_boot_try賦I ;如果第三啟動標識flag_last_boot_try的當前值為I,則啟動系統2。
[0125]上述第一步至第六步的實現方式,還可通過程序代碼加以實現,程序代碼具體如下:
[0126]
【權利要求】
1.一種嵌入式系統升級的方法,其特征在于,所述方法包括: 在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動所述第一嵌入式系統; 在所述第一嵌入式系統下獲取系統升級包,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對所述第二嵌入式系統的升級。
2.根據權利要求1所述的方法,其特征在于,還包括: 為不同的嵌入式系統邏輯劃分對應的存儲媒質分區,并在對應的存儲媒質分區中植入對應的嵌入式系統。
3.根據權利要求1所述的方法,其特征在于,所述第一嵌入式系統包括內核映像文件及根文件系統映像文件,且所述第一嵌入式系統包括的內核映像文件及根文件系統映像文件存儲在所述第一嵌入式系統對應的存儲媒質分區中; 所述啟動所述第一嵌入式系統,包括: 將所述第一嵌入式系統對應的存儲媒質分區中存儲的所述第一嵌入式系統的內核映像文件加載到內存中運行,并掛載所述第一嵌入式系統的根文件系統映像文件。
4.根據權利要求1所述的方法,其特征在于,所述系統升級包包括升級后的內核映像文件及根文件系統映像文 件; 所述將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,包括: 將所述系統升級包包括的升級后的內核映像文件及根文件系統映像文件寫入所述第二嵌入式系統對應的存儲媒質分區中。
5.根據權利要求1所述的方法,其特征在于,還包括: 對所述系統升級包進行校驗; 校驗成功后,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中。
6.根據權利要求1所述的方法,其特征在于,所述在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括: 根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級; 如果在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級,則根據第二啟動標識確定上一次升級的嵌入式系統,將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統; 其中,所述第一啟動標識用于標識在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;所述第二啟動標識用于標識上一次啟動的嵌入式系統。
7.根據權利要求6所述的方法,其特征在于,還包括: 如果在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級,則將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
8.根據權利要求1所述的方法,其特征在于,所述在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,包括: 如果具有所述已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動,則根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統; 其中,所述第三啟動標識用于標識當前啟動的嵌入式系統。
9.一種嵌入式系統升級的裝置,其特征在于,所述裝置包括: 確定模塊,用于在已存在的至少兩個嵌入式系統中確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統; 啟動模塊,用于啟動所述確定模塊確定的第一嵌入式系統; 獲取模塊,用于在所述啟動模塊啟動的第一嵌入式系統下獲取系統升級包; 升級模塊,用于將所述獲取模塊獲取到的系統升級包寫入第二嵌入式系統對應的存儲媒質分區中,完成對所述第二嵌入式系統的升級。
10.根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 劃分模塊,用于為不同的嵌入式系統邏輯劃分對應的存儲媒質分區; 植入模塊,用于在所述劃分模塊劃分的對應的存儲媒質分區中植入對應的嵌入式系統。
11.根據權利要求9所述的裝置,其特征在于,所述第一嵌入式系統包括內核映像文件及根文件系統映像文件,且所述第一嵌入式系統包括的內核映像文件及根文件系統映像文件存儲在所述第一嵌入式系統對應的存儲媒質分區中; 所述啟動模塊,包括: 加載單元,用于將所述第一嵌入式系統對應的存儲媒質分區中存儲的所述第一嵌入式系統的內核映像文件加載到內存中運行; 掛載單元,用于掛 載所述第一嵌入式系統的根文件系統映像文件。
12.根據權利要求9所述的裝置,其特征在于,所述系統升級包包括升級后的內核映像文件及根文件系統映像文件; 所述升級模塊,用于將所述系統升級包包括的升級后的內核映像文件及根文件系統映像文件寫入所述第二嵌入式系統對應的存儲媒質分區中。
13.根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 校驗模塊,用于對所述系統升級包進行校驗; 所述升級模塊,用于當所述校驗模塊校驗成功后,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質分區中。
14.根據權利要求9所述的裝置,其特征在于,所述確定模塊包括: 第一確定單元,用于根據第一啟動標識確定在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級; 第二確定單元,用于當所述第一確定單元確定在上一次啟動的嵌入式系統下對其他未啟動的嵌入式系統進行了升級后,根據第二啟動標識確定上一次升級的嵌入式系統,并將上一次升級后的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統; 其中,所述第一啟動標識用于標識在上一次啟動的嵌入式系統下是否對其他未啟動的嵌入式系統進行了升級;所述第二啟動標識用于標識上一次啟動的嵌入式系統。
15.根據權利要求14所述的裝置,其特征在于,所述確定模塊還包括: 第三確定單元,用于當所述第一確定單元確定在上一次啟動的嵌入式系統下未對其他未啟動的嵌入式系統進行升級后,將上一次啟動的嵌入式系統確定為當前具有啟動能力的系統版本號最高的嵌入式系統,并將當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統。
16.根據權利要求9所述的裝置,其特征在于,所述確定模塊包括: 第四確定單元,用于當具有所述已存在的至少兩個嵌入式系統的嵌入式設備為初次啟動時,根據第三啟動標識的當前值確定當前待啟動的第一嵌入式系統; 其中,所述第三啟動標識用于標識當前啟動的嵌入式系統。
17.一種設備,其特征在于,所述設備包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經配置以由一個或者一個以上處理器執行,所述一個或者一個以上程序包含用于進行以下操作的指令: 在已存在的至少兩個嵌入式系統中,確定當前具有啟動能力的系統版本號最高的嵌入式系統作為待啟動的第一嵌入式系統,并啟動所述第一嵌入式系統; 在所述第一嵌入式系統下獲取系統升級包,將所述系統升級包寫入第二嵌入式系統對應的存儲媒質中,完成 對所述第二嵌入式系統的升級。
【文檔編號】G06F9/445GK103810004SQ201310598439
【公開日】2014年5月21日 申請日期:2013年11月22日 優先權日:2013年11月22日
【發明者】樊家麟, 屈恒, 楊桂楨, 張鵬飛 申請人:小米科技有限責任公司