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