專利名稱:一種嵌入式系統及其升級方法
技術領域:
本發明涉及嵌入式系統技術領域,尤其涉及一種嵌入式系統及其升級方法。
背景技術:
嵌入式設備的功能主要通過軟件來實現和擴展,隨著嵌入式設備功能的不斷完 善,應用的不斷增加,需要對原有系統中的軟件進行不斷地升級。升級就是將新的軟件寫入 嵌入式設備的Flash (Flash EEPROM Memory,閃存,非易失的存儲器),替代以前有缺陷或者 功能不完善的軟件。現有嵌入式系統的升級方案通常為將升級文件做成鏡像文件,并將嵌 入式系統中的非易失性存儲器上原有的數據全部擦除后,再將鏡像文件寫到非易失性存儲 器上,以達到刷新升級的目的。現有技術的缺陷在于對于以非易失性存儲器為永久存儲介質的嵌入式系統而 言,升級過程中一旦發生意外斷電等異常情況時,系統將變得不可用,此時只能使用特殊的 設備對該系統的非易失性存儲器進行完整的刷新后,才能使該系統繼續使用。該方案即不 安全又使升級失敗后重新恢復系統的工作變得費時費力,甚至在某些條件下根本無法實現 系統的恢復。
發明內容
本發明實施例的目的在于提出一種嵌入式系統升級方法,旨在解決現有技術嵌入 式系統升級過程中一旦發生意外斷電等異常情況時,系統將變得不可用問題。為解決以上技術問題,本發明實施例提出一種嵌入式系統升級方法,包括以下步 驟非易失性存儲器空間劃分,將非易失性存儲器空間劃分為boot代碼存儲區、應用 代碼啟動標識區、第一應用代碼區、第二應用代碼區;加載并執行boot (啟動)代碼;根據所述應用代碼啟動標識區中的標識字的指示,啟動所述指示的應用代碼區中 的應用代碼分配內存緩存區,下載升級代碼到緩存中;根據應用代碼啟動標識區中的標識字的指示將升級代碼燒錄在所述標識字指示 之外的另一個的應用代碼區;修改應用代碼啟動標志區中的標識位,設置新燒錄升級代碼文件為啟動代碼。本發明實施例的另一目的在于提出一種嵌入式系統,所述系統包括以下模塊非易失性存儲器分區模塊用于存儲boot代碼、應用代碼啟動標識、應用代碼等, 其劃分為boot代碼存儲區,應用代碼啟動標識區,第一應用代碼區,第二應用代碼區;程序加載模塊用于加載并執行boot代碼,并根據應用程序啟動判斷模塊的判斷 結果決定啟動并執行相應應用代碼區中的應用代碼;升級模塊用于分配內存緩存區,下載升級代碼到緩存區,根據升級應用代碼區判斷模塊的判斷結果在判斷結果之外的另一應用代碼區燒錄升級代碼并校驗燒錄的升級代 碼;應用代碼啟動標識修改模塊用于修改應用代碼啟動標志區中的標識位,設置新燒 錄升級代碼為啟動代碼。本發明的有益效果為應用代碼區為兩個交替使用區,在升級過程中即使發生異 常導致升級失敗,仍然可以正常使用上一版本,系統比較穩定。
圖1是本發明實施例的方法流程圖;圖2是本發明實施例的嵌入式系統功能模塊圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖和實施例,對 本發明進行進一步詳細說明,為了便于說明,僅示出了與本發明實施例相關的部分。應當理 解,此處所描寫的具體實施例,僅僅用于解釋本發明,并不用以限制本發明。本發明整體思路為將Flash空間劃分為4個部分,boot代碼存儲區,應用代碼啟 動標志區,第一應用代碼區和第二應用代碼區,當需要升級文件時,先下載升級文件,然后 判斷標識位決定升級文件的存放區是第一應用代碼區還是第二應用代碼區。如果當前使用 的代碼在第一應用代碼區,則升級文件放在第二應用代碼區。如果升級文件正常,則修改標 識位,使它下次啟動時啟動第二應用代碼區。升級不成功時,標識位不變,正常啟動第一應 用代碼區。同樣,如果當前使用的代碼在第二應用代碼區,則升級文件放在第一應用代碼 區。如果升級文件正常,則修改標識位,使它下次啟動時啟動第一區。升級不成功時,標識 位不變,正常啟動第二應用代碼區。圖1是本發明實施例提供的嵌入式系統升級方法流程圖。所述方法包括以下步 驟SlOl,Flash 空間劃分;將Flash空間劃分為4個部分,第一部分為boot代碼存儲區,第二部分為應用代碼啟動標識區,第三部分為第一應用代碼區,第四部分為第二應用代碼區。Boot代碼 存儲區保存用于系統啟動的基本初始化和引導代碼,即通常意義上的bootloader,由于 bootloader的主要功能是實現硬件系統的基本初始化和操作系統的加載,因此,為了保證 系統在任何情況下都可用,不允許對bootloader進行重新刷寫的操作;應用代碼啟動標識 區用于指示啟動第一應用代碼區或第二應用代碼區;應用代碼區用于保存系統中的應用程 序代碼。S102,燒錄 Flash 文件;出廠時,首先燒錄boot代碼、應用代碼啟動標識、第三部分應用代碼。S103,加載并執行boot代碼;系統上電復位后,先自動加載boot代碼,并開始執行boot代碼。S104,加載并執行應用代碼;Boot代碼執行時首先讀取應用代碼啟動標識區中的標識字,根據所述標識字決定啟動Flash空間中第三或第四部分中的應用代碼。在確定加載應用代碼區中的應用代碼后,boot加載所述應用代碼,并跳到所述應用代碼的執行入口,所述應用代碼開始執行。S105,分配內存緩存區,下載升級代碼到緩存區中;應用代碼執行過程中,當收到通過網絡發出升級軟件的請求時,應用代碼則在內 存中為升級代碼分配緩存區并下載升級代碼。S106,讀取應用代碼啟動標志區中的標識字,根據所述標識字的指示將升級代碼 燒錄在所述標識字指示之外的另一個的應用代碼區并校驗燒錄的升級代碼文件;應用代碼讀取應用代碼啟動標志區中的標識字,根據所述標識字決定升級代碼要 寫入的第一應用代碼區或第二應用代碼區。若應用代碼啟動標志區中的標識字指示的當前 使用的應用代碼區位第一應用代碼區,則將升級代碼燒錄在第二應用代碼區,若應用代碼 啟動標志區中的標識字指示的當前使用的應用代碼區位第二應用代碼區,則將升級代碼燒 錄在第一應用代碼區,S107,修改應用代碼啟動標志區中的標識位,設置新燒錄升級代碼文件為啟動代碼。以下詳細描述本發明的實現過程。先將Flash空間劃分為4個部分,第一部分為boot代碼存儲區,第二部分為應 用代碼啟動標識區,第三部分為第一應用代碼區,第四部分為第二應用代碼區。Boot代 碼存儲區保存用于系統啟動的基本初始化和引導代碼,即通常意義上的bootloader,由于 bootloader的主要功能是實現硬件系統的基本初始化和操作系統的加載,因此,為了保證 系統在任何情況下都可用,不允許對bootloader進行重新刷寫的操作;應用代碼啟動標識 區用于指示啟動第一應用代碼區或第二應用代碼區;應用代碼區用于保存系統中的應用程 序代碼。系統上電復位后,先自動加載boot代碼,并執行boot代碼,根據應用代碼啟動標 識區中的標識字啟動相應空間的應用代碼,假設當前應用代碼啟動標識區中的標識字指示 為第一應用代碼區,則啟動所述第一應用代碼區代碼并跳到第一應用代碼區的應用代碼執 行入口,執行所述應用代碼,若在執行應用代碼的過程中,收到升級請求,則應用代碼在內 存中分配代碼緩存區,將升級代碼下載到所述緩存區,讀取應用代碼啟動標志區中的標識 字,當前應用代碼啟動標識區中的標識字指示第一應用代碼區,將升級代碼寫入第二應用 代碼區,若升級成功,則將應用代碼啟動標識區中的標識字修改為第二應用代碼區,若升級 失敗,則返回執行第一應用代碼區中的代碼。同樣,若當前應用代碼啟動區中的標識字指示 第二應用代碼區,將升級代碼寫入第一應用代碼區,若升級成功,則將應用代碼啟動標識區 中的標識字修改為第一應用代碼區,若升級失敗,則返回執行第二應用代碼區中的代碼。這 樣,兩個應用代碼區可循環使用。在本發明實施例方法中,系統關鍵部分boot代碼只在燒錄時寫入,設備使用過程 中為只讀,當異常操作時都不會導致boot被破壞。應用代碼為兩個交替使用區,在升級過 程中即使發生異常導致升級失敗,仍然可以正常使用上一版本,系統比較穩定。圖2是本發明實施例提供的嵌入式系統功能模塊圖。所述嵌入式系統包括Flash 分區模塊、程序加載模塊、升級模塊、應用代碼啟動標識修改模塊。其中程序加載模塊包括 應用程序啟動判斷模塊,升級模塊包括內存緩存分配模塊、下載模塊、升級應用代碼區判斷 模塊、燒錄模塊、校驗模塊。
Flash分區模塊用于存儲boot代碼、應用代碼啟動標識、應用代碼等,其分為4個部分,第一部分為boot代碼存儲區,第二部分為應用代碼啟動標識區,第三部分為第一應 用代碼區,第四部分為第二應用代碼區。Boot代碼存儲區保存用于系統啟動的基本初始 化和引導代碼,即通常意義上的bootloader,由于bootloader的主要功能是實現硬件系 統的基本初始化和操作系統的加載,因此,為了保證系統在任何情況下都可用,不允許對 bootloader進行重新刷寫的操作;應用代碼啟動標識區用于指示啟動第一應用代碼區或 第二應用代碼區;應用代碼區用于保存系統中的應用程序代碼。其中,boot代碼、應用代碼 啟動標識和第一應用代碼在出廠時已燒錄完畢。程序加載模塊用于加載并執行boot代碼,并根據應用程序啟動判斷模塊的判斷 結果決定啟動并執行相應的應用代碼。其包括應用程序啟動判斷模塊,用于讀取應用代碼 啟動標識區中的標識字,根據所述標識字決定啟動相應應用代碼區中的應用代碼。升級模塊用于分配內存緩存區,下載升級代碼到緩存區,根據升級應用代碼區判 斷模塊的判斷結果在判斷結果之外的另一應用代碼區燒錄升級代碼。所述升級模塊包括內 存緩存分配模塊、下載模塊、升級應用代碼區判斷模塊、燒錄模塊、校驗模塊。內存緩存分配 模塊用于分配內存緩存區;下載模塊用于下載升級代碼到相應緩存區;升級應用代碼區判 斷模塊用于讀取應用代碼啟動標志區中的標識字,根據所述標識字決定在Flash空間中第 三或第四部分中的應用代碼區燒錄升級代碼;燒錄模塊用于根據升級應用代碼區判斷模塊 的判斷結果在判斷結果之外的另一應用代碼區燒錄升級代碼;校驗模塊,用于校驗燒錄的 升級代碼。。應用代碼啟動標識修改模塊用于修改應用代碼啟動標志區中的標識位,設置新燒 錄升級代碼為啟動代碼。在本發明實施例中,系統關鍵部分boot代碼只在燒錄時寫入,設備使用過程中為 只讀,當異常操作時都不會導致boot被破壞。應用代碼為兩個交替使用區,在升級過程中 即使發生異常導致升級失敗,仍然可以正常使用上一版本,系統比較穩定。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精 神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
一種嵌入式系統的升級方法,其特征在于,所述方法包括以下步驟非易失性存儲器空間劃分,將非易失性存儲器空間劃分為啟動代碼存儲區、應用代碼啟動標識區、第一應用代碼區、第二應用代碼區;加載并執行啟動代碼;根據所述應用代碼啟動標識區中的標識字的指示,啟動所述指示的應用代碼區中的應用代碼;分配內存緩存區,下載升級代碼到緩存中;根據應用代碼啟動標識區中的標識字的指示將升級代碼燒錄在所述標識字指示之外的另一個的應用代碼區;修改應用代碼啟動標志區中的標識位,設置新燒錄升級代碼文件為啟動代碼。
2.如權利要求1所述的嵌入式系統的升級方法,其特征在于,在所述“加載并執行啟動 代碼“之前還包括燒錄啟動代碼、應用代碼啟動標識、第一應用代碼區應用代碼。
3.如權利要求1所述的嵌入式系統的升級方法,其特征在于,在所述“根據應用代碼啟 動標識區中的標識字的指示將升級代碼燒錄在所述標識字指示之外的另一個的應用代碼 區”之后還包括校驗燒錄的升級代碼。
4 如權利要求1所述的嵌入式系統的升級方法,其特征在于,在“根據應用代碼啟動標 識區中的標識字的指示將升級代碼燒錄在所述標識字指示之外的另一個的應用代碼區”之 后還包括若升級失敗,則正常啟動所述應用代碼啟動標識區中的標識字指示的應用代碼區 中的代碼。
5.一種嵌入式系統,其特征在于,包括以下模塊非易失性存儲器分區模塊用于存儲啟動代碼、應用代碼啟動標識、應用代碼等,其劃分 為啟動代碼存儲區,應用代碼啟動標識區,第一應用代碼區,第二應用代碼區;程序加載模塊用于加載并執行啟動代碼,并根據應用程序啟動判斷模塊的判斷結果決 定啟動并執行相應應用代碼區中的應用代碼;升級模塊用于分配內存緩存區,下載升級代碼到緩存區,根據升級應用代碼區判斷模 塊的判斷結果在判斷結果之外的另一應用代碼區燒錄升級代碼并校驗燒錄的升級代碼;應用代碼啟動標識修改模塊用于修改應用代碼啟動標志區中的標識位,設置新燒錄升 級代碼為啟動代碼。
6.如權利要求5所述的嵌入式系統,其特征在于,所述啟動代碼存儲區保存用于系統 啟動的基本初始化和引導代碼,所述應用代碼啟動標識區用于指示啟動第一應用代碼區或 第二應用代碼區,所述應用代碼區用于保存系統中的應用程序代碼。
7.如權利要求5所述的嵌入式系統,其特征在于,所述啟動代碼、應用代碼啟動標識和 第一應用代碼在出廠時已燒錄完畢。
8.如權利要求5所述的嵌入式系統,其特征在于,所述程序加載模塊包括應用程序啟 動判斷模塊,所述應用程序啟動判斷模塊用于讀取所述應用代碼啟動標識區中的標識字, 根據所述標識字決定啟動相應應用代碼區中的應用代碼。
9.如權利要求5所述的嵌入式系統,其特征在于,所述升級模塊包括內存緩存分配模 塊、下載模塊、升級應用代碼區判斷模塊、燒錄模塊;內存緩存分配模塊用于分配內存緩存 區;下載模塊用于下載升級代碼到相應緩存區;升級應用代碼區判斷模塊用于讀取應用代碼啟動標志區中的標識字,根據所述標識字決定在非易失性存儲器空間中第一或第二應用 代碼區燒錄升級代碼;燒錄模塊用于根據升級應用代碼區判斷模塊的判斷結果在判斷結果 之外 的另一應用代碼區燒錄升級代碼;校驗模塊,用于校驗燒錄的升級代碼。
全文摘要
本發明提供一種嵌入式系統升級方法,所述方法包括以下步驟Flash空間劃分,將Flash空間劃分為boot代碼存儲區、應用代碼啟動標識區、第一應用代碼區、第二應用代碼區;加載并執行boot代碼;根據所述應用代碼啟動標識區中的標識字的指示,啟動所述指示的應用代碼區中的應用代碼。分配內存緩存區,下載升級代碼到緩存中;根據應用代碼啟動標識區中的標識字的指示將升級代碼燒錄在所述標識字指示之外的另一個應用代碼區;修改應用代碼啟動標志區中的標識位,設置新燒錄升級代碼文件為啟動代碼。在本發明中,應用代碼區為兩個交替使用區,在升級過程中即使發生異常導致升級失敗,仍然可以正常使用上一版本,系統比較穩定。
文檔編號G06F9/445GK101826027SQ20101018822
公開日2010年9月8日 申請日期2010年5月28日 優先權日2010年5月28日
發明者姜濤 申請人:深圳市融創天下科技發展有限公司