本發明專利技術提供了一種嵌入式設備的多級引導加載方法,所述嵌入式設備的flash依次劃分為bootloader2分區、image分區和data配置區,所述多級引導加載方法包括步驟:在存儲區中添加bootloader1分區,該bootloader1分區具有升級bootloader2、引導bootloader2以及配置bootloader2的功能;設備上電后,先啟動bootloader1;在指定時間內,循環檢查是否有升級/配置bootloader2指令輸入,若無,則bootloader1引導bootloader2啟動,完成啟動流程;若有,則bootloader1對bootloader2進行升級/配置,升級/配置之后跳轉至bootloader2執行或者直接重啟設備。本發明專利技術實施例中不僅支持image和bootloader的多樣性,而且滿足嵌入式升級時的安全性要求。
【技術實現步驟摘要】
本專利技術涉及嵌入式
,尤其涉及一種嵌入式設備的多級引導加載方法。
技術介紹
嵌入式設備具有兩個顯著的特點一個是盡量降低成本,需要裁減掉多余的軟硬件功能;一個是需要定制以滿足多樣化的需求,統一標準的方式難以滿足所有的需求。作為程序的主要部分image (程序鏡像,通常包括kernel (內核)和rootfs (根文件系統))也是多樣化的,隨著技術的發展image本身的形式在不斷發展,且有雙image,大小image等應用形式的出現,導致原有的bootloader (啟動加載程序)已經不能滿足新的要求,不能兼容,因此bootloader本身也需要進行升級。有時,有關的關鍵參數如MAC地址,產測配置嵌入到bootloader本身,在參數擴充或修改時也需要對bootloader進行升級。 嵌入式的bootloader通常是存儲在flash上的,而傳統的bootloader升級方法是在升級bootloader時,需要把bootloader在flash上對應的block上的數據擦除掉,再從ram寫入,這時可能因為斷電和其他意外導致升級終止,而bootloader所在的block由于尚未寫入數據或寫入不完全導致損壞,上電重啟就無法再從對應的flash block讀出bootloader代碼而無法運行,從而使嵌入式設備陷入癱瘓,俗稱變成了磚頭。這種情況維修和升級的成本都會很高,或者是永久性的損壞。因此必須找到一種方法來同時滿足靈活性和安全性的要求。
技術實現思路
本專利技術的目的在于提供一種嵌入式設備的多級引導加載方法,采用兩個bootloader級聯來引導image,同時支持image和bootloader的多樣性,又滿足嵌入式升級時的安全性要求,在bootloader升級失敗后仍然能夠引導運行。本專利技術的目的是通過以下技術方案實現的。一種嵌入式設備的多級引導加載方法,所述嵌入式設備的flash依次劃分為bootloader2分區、image分區和data配置區,所述多級引導加載方法包括步驟 在存儲區中添加bootloaderl分區,該bootloaderl分區具有升級bootloader2、引導bootloader2 以及配置 bootloader2 的功能; 設備上電后,先啟動bootloaderl ; 在指定時間內,循環檢查是否有升級/配置bootloaderf指令輸入,若無,則bootloaderl 引導 bootloader2 啟動,完成啟動流程;若有,則 bootloaderl 對bootloader2進行升級/配置,升級/配置之后跳轉至bootloaderf執行或者直接重啟設備。其中,所述bootloaderl分區和bootloader2分區位于不同flash上;其中,bootloaderl分區設于spi nor flash (串行外圍接口或非門的閃存)上,bootloader2分區設于nandfIash (與非門閃存)上。其中,所述bootloaderl分區和bootloader2分區位于同一 flash上。 其中,所述bootloaderl分區占用I個flash的I個block。其中,所述bootloaderl分區設置有寫保護。其中,bootloaderl引導bootloader2啟動的過程為 bootloaderl從約定的地址找到對應的block,再根據找到的地址讀入bootloader2的信息,讀取bootloader2的長度和預設校驗值信息; bootloaderl讀取出bootloader2的全部內容并計算其校驗值,將該校驗值和預設校驗值比較判斷得出該校驗值是否正確。如果校驗值正確則跳轉到bootloaderf可執行代碼所對應的地址,或跳轉到bootloaderf加載到內存并解壓后對應的地址執行,完成啟動流程;如果不正確,則bootloaderl轉換至升級模式,對bootloader2進行升級,升級后跳轉至bootloader2執行或者直接重啟設備。 其中,所述bootloaderl對bootloader2進行升級的方式包括三種串口升級方式、tftp (tftp簡單文件傳輸協議)協議升級方式、http (超級文本傳輸協議)或ftp (文件傳輸協議)協議升級方式。與現有技術相比,本專利技術實施例具有以下有益效果。本專利技術實施例中新增了一個bootloaderl分區,具有引導、配置、升級原有的bootloader2分區的功能,在設備系統啟動時bootloaderl分區與bootloader2分區級聯來進行引導加載,這樣在bootloader2在損壞或者升級失敗時,bootloaderl由于被寫保護而不會被損壞,因而bootloaderl可對bootloader2重新進行升級,不僅支持image和bootloader的多樣性,而且滿足嵌入式升級時的安全性要求。附圖說明圖I是現有的flash分布結構示意圖。圖2是本專利技術實施例提供的flash分布結構示意圖。圖3是本專利技術實施例提供的嵌入式設備的多級引導加載方法流程圖。圖4是本專利技術實施例提供的升級方法流程圖。具體實施例方式為了使本專利技術的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本專利技術進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本專利技術,并不用于限定本專利技術。請參閱圖1,現有的flash按順序依次劃分為一個bootloader分區、一個image分區(實際也可為多個image分區)和一個data配置區。其中bootloader分區用于存儲bootloader程序本身和bootloader所需要的配置參數;image分區通常包括kernel和rootfs兩部分;data配置區為可選,包括系統運行需要的配置參數和運行的記錄信息,有時可能包括在rootfs里。與現有的flash分布結構不同,本實施例中在現有的bootloader分區之前添加一個新的bootloader分區,新的flash分布結構如圖2所示,包括兩個bootloader分區(分別稱為bootloaderl分區和bootloader2分區)、一個image分區(實際也可為多個image分區)和一個data配置區。下面將對bootloaderl分區和bootloader2分區分別進行描述。bootloderl 分區具有引導 bootloader2、升級 bootloader2 以及配置bootloader2的有關參數的功能;其中的升級功能可以包含最基本的串口升級方式,也可以包含網口升級方式等更高級的方式,詳見下文。該bootloderl不支持直接引導或升級image和修改data配置區。bootloderl的大小受到限制,通常為I個flash的I個block大小,有時可能包括一個以上,所占flash空間比bootloder2要小很多。bootloader2分區保持現有單個bootloader的有關特性基本不變,其作用就是做一些基本的硬件、運行環境的初始化,解壓kenel部分的代碼,并把cpu的控制權交給kenel,從而實現對引導操作系統的kenrnel部分的引導,也包含升級自身和kernel,或bootloaderl除外的整個flash的功能。在實際應用中,b本文檔來自技高網...
【技術保護點】
一種嵌入式設備的多級引導加載方法,所述嵌入式設備的flash依次劃分為bootloader2分區、image分區和data配置區,其特征在于,所述多級引導加載方法包括步驟:在存儲區中添加bootloader1分區,該bootloader1分區具有升級bootloader2、引導bootloader2以及配置bootloader2的功能;設備上電后,先啟動bootloader1;在指定時間內,循環檢查是否有升級/配置bootloader2指令輸入,若無,則bootloader1引導bootloader2啟動,完成啟動流程;若有,則bootloader1對bootloader2進行升級/配置,升級/配置之后跳轉至bootloader2執行或者直接重啟設備。
【技術特征摘要】
1.一種嵌入式設備的多級引導加載方法,所述嵌入式設備的flash依次劃分為bootloader2分區、image分區和data配置區,其特征在于,所述多級引導加載方法包括步驟 在存儲區中添加bootloaderl分區,該bootloaderl分區具有升級bootloader2、引導bootloader2 以及配置 bootloader2 的功能; 設備上電后,先啟動bootloaderl ; 在指定時間內,循環檢查是否有升級/配置bootloaderf指令輸入,若無,則bootloaderl 引導 bootloader2 啟動,完成啟動流程;若有,則 bootloaderl 對bootloader2進行升級/配置,升級/配置之后跳轉至bootloaderf執行或者直接重啟設備。2.如權利要求I所述嵌入式設備的多級引導加載方法,其特征在于,所述bootloaderl分區和bootloader2分區位于不同flash上;其中,bootloaderl分區設于spi nor flash上,bootloader2 分區設于 nand flash 上。3.如權利要求I所述嵌入式設備的多級引導加載方法,其特征在于,所述bootloaderl分區和bootloader2分區位于同一 flash上。4.如權利要求I所述嵌入式設備的...
【專利技術屬性】
技術研發人員:劉宏鈞,
申請(專利權)人:深圳市共進電子股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。