專利名稱:一種在單芯片上實(shí)現(xiàn)主備版本備份的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式產(chǎn)品設(shè)計(jì),尤其是一種在單芯片上實(shí)現(xiàn)主備版本備份的方法。
背景技術(shù):
嵌入式產(chǎn)品中,經(jīng)常會因?yàn)楣δ茏兓?、故障修?fù)等原因,需要從遠(yuǎn)程對產(chǎn)品中的軟 件(版本)進(jìn)行升級。傳統(tǒng)嵌入式產(chǎn)品實(shí)現(xiàn)方式,是在產(chǎn)品中使用兩塊或以上的芯片,其中 啟動BOOT位于一塊獨(dú)立芯片上,并由BOOT與遠(yuǎn)程進(jìn)行交互,完成版本升級,并將新下載的 版本寫入另一塊芯片,之后啟動新版本。該方式由于要使用多于一塊芯片,成本難以降低, 所以一般只運(yùn)用在高端嵌入式設(shè)備上,導(dǎo)致低端嵌入式設(shè)備無法實(shí)現(xiàn)遠(yuǎn)程升級。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,它能夠解決現(xiàn) 有技術(shù)的不足,可在終端設(shè)備上降低產(chǎn)品成本。本發(fā)明的技術(shù)方案一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于它由 以下步驟構(gòu)成(1)在單一芯片上,將存儲空間劃分為至少三部分,分別用于存儲啟動BOOT、存儲 主用版本和備用版本;其中用于存儲啟動BOOT的部分稱作VO ;所說的存儲主用版本和備用 版本的部分稱作Vl和V2 ;如果Vl是主用版本,則V2為備用版本,如果V2是主用版本,則 Vl為備用版本,這種關(guān)系通過參數(shù)配置區(qū)進(jìn)行區(qū)分;(2)芯片上電后,啟動BOOT率先運(yùn)行,它檢測參數(shù)配置,判斷當(dāng)前的主用版本是Vl 還是V2 ;啟動BOOT將控制權(quán)切換到主用版本;(3)主用版本運(yùn)行期間,如果接收到遠(yuǎn)程升級指令,則從遠(yuǎn)程服務(wù)端下載新的版本 文件,覆蓋當(dāng)前備用版本存儲空間;如果Vl為主用版本,則覆蓋V2,反之則覆蓋Vl ;(4)主用版本更新參數(shù)配置區(qū),將新下載的版本設(shè)為主用版本,當(dāng)前運(yùn)行的版本設(shè) 為備用版本,然后重啟系統(tǒng);(5)系統(tǒng)重啟后,啟動BOOT檢測到參數(shù)變化,將自動啟動新的主用版本,完成遠(yuǎn)程 版本升級。上述所說的步驟(1)中的參數(shù)存儲在獨(dú)立的存儲空間,例如E2PR0M上;或與版本 駐留在同一芯片上,即在芯片上再劃分一塊區(qū)域,用于存儲參數(shù)。上述所說的步驟O)中啟動BOOT在將控制權(quán)切換到主用版本時,如果在編譯主 用版本和備用版本可執(zhí)行文件時,設(shè)置了位置無關(guān)選項(xiàng),能使版本在存儲空間的任意位置 都可以啟動運(yùn)行,則通過調(diào)整CPU的程序計(jì)數(shù)器,啟動主用版本;在調(diào)整程序計(jì)數(shù)器時,如 果VO運(yùn)行在用戶模式下,那么需要通過軟中斷方式,強(qiáng)迫CPU進(jìn)入管理模式,然后才能修改 CPU程序計(jì)數(shù)器,實(shí)現(xiàn)版本跳轉(zhuǎn);如果編譯器無法產(chǎn)生位置無關(guān)代碼,則啟動BOOT將主用版本拷貝到內(nèi)存空間, 然后從內(nèi)存啟動主用版本;或者是在芯片上劃分出一塊運(yùn)行區(qū)域,該區(qū)域用Vm標(biāo)識,啟動
3BOOT找出主用版本后,將該版本拷貝到Vm區(qū),然后從Vm區(qū)啟動主用版本。上述所說的編譯器無法產(chǎn)生位置無關(guān)代碼,則在編譯主備版本時,將內(nèi)存或Vm的 起始地址設(shè)置為版本啟動地址。上述所說的啟動BOOT是一個小型可執(zhí)行文件,通常存儲在芯片的物理地址0x0 ; 芯片上電后,將自動執(zhí)行啟動BOOT。上述所說的主用版本和備用版本,是兩個不同版本的可執(zhí)行文件。本發(fā)明的優(yōu)越性本方法在單一芯片上,同時存儲啟動BOOT、主用版本、備用版本 三個文件,并實(shí)現(xiàn)主備互換、遠(yuǎn)程升級功能,有效降低產(chǎn)品開發(fā)和維護(hù)成本。
圖1為本發(fā)明所涉一種在單芯片上實(shí)現(xiàn)主備版本備份的方法第一種實(shí)施例的芯 片存儲空間劃分的示意圖。圖2為本發(fā)明所涉一種在單芯片上實(shí)現(xiàn)主備版本備份的方法第二種實(shí)施例的芯 片存儲空間劃分的示意圖。
具體實(shí)施例方式實(shí)施例1 一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于它由以下步驟 構(gòu)成(1)在單一芯片上,將存儲空間劃分為三部分(見圖1),其中用于存儲啟動BOOT 的部分稱作VO ;所說的存儲主用版本和備用版本的部分稱作Vl和V2 ;(2)芯片上電后,啟動BOOT率先運(yùn)行,它檢測參數(shù)配置,判斷當(dāng)前的主用版本是Vl 還是V2 ;啟動BOOT將控制權(quán)切換到主用版本;(3)主用版本運(yùn)行期間,如果接收到遠(yuǎn)程升級指令,則從遠(yuǎn)程服務(wù)端下載新的版本 文件,覆蓋當(dāng)前備用版本存儲空間;如果Vl為主用版本,則覆蓋V2,反之則覆蓋Vl ;(4)主用版本更新參數(shù)配置區(qū),將新下載的版本設(shè)為主用版本,當(dāng)前運(yùn)行的版本設(shè) 為備用版本,然后重啟系統(tǒng);(5)系統(tǒng)重啟后,啟動BOOT檢測到參數(shù)變化,將自動啟動新的主用版本,完成遠(yuǎn)程 版本升級。上述所說的步驟(1)中的參數(shù)存儲在獨(dú)立的存儲空間,例如E2PR0M上。上述所說的步驟(2)中啟動BOOT在將控制權(quán)切換到主用版本時,在編譯主用版本 和備用版本可執(zhí)行文件時,設(shè)置了位置無關(guān)選項(xiàng),能使版本在存儲空間的任意位置都可以 啟動運(yùn)行,則通過調(diào)整CPU的程序計(jì)數(shù)器,啟動主用版本。在調(diào)整程序計(jì)數(shù)器時,如果VO運(yùn) 行在用戶模式下,那么需要通過軟中斷方式,強(qiáng)迫CPU進(jìn)入管理模式,然后才能修改CPU程 序計(jì)數(shù)器,實(shí)現(xiàn)版本跳轉(zhuǎn)。上述所說的啟動BOOT是一個小型可執(zhí)行文件,通常存儲在芯片的物理地址0x0 ; 芯片上電后,將自動執(zhí)行啟動BOOT。上述所說的主用版本和備用版本,是兩個不同版本的可執(zhí)行文件。實(shí)施例2 —種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于它由以下步驟 構(gòu)成
(1)在單一芯片上,將存儲空間劃分為四部分(見圖2),其中用于存儲啟動BOOT 的部分稱作VO ;所說的存儲主用版本和備用版本的部分稱作Vl和V2 ;(2)芯片上電后,啟動BOOT率先運(yùn)行,它檢測參數(shù)配置,判斷當(dāng)前的主用版本是Vl 還是V2 ;啟動BOOT將控制權(quán)切換到主用版本;(3)主用版本運(yùn)行期間,如果接收到遠(yuǎn)程升級指令,則從遠(yuǎn)程服務(wù)端下載新的版本 文件,覆蓋當(dāng)前備用版本存儲空間;如果Vl為主用版本,則覆蓋V2,反之則覆蓋Vl ;(4)主用版本更新參數(shù)配置區(qū),將新下載的版本設(shè)為主用版本,當(dāng)前運(yùn)行的版本設(shè) 為備用版本,然后重啟系統(tǒng);(5)系統(tǒng)重啟后,啟動BOOT檢測到參數(shù)變化,將自動啟動新的主用版本,完成遠(yuǎn)程 版本升級。上述所說的步驟(1)中的參數(shù)存儲在獨(dú)立的存儲空間,例如E2PR0M上。上述所說的步驟(2)中啟動BOOT在將控制權(quán)切換到主用版本時,編譯器無法產(chǎn)生 位置無關(guān)代碼,則在芯片上劃分出一塊運(yùn)行區(qū)域(見圖2),該區(qū)域用Vm標(biāo)識,啟動BOOT找 出主用版本后,將該版本拷貝到Vm區(qū),然后從Vm區(qū)啟動主用版本。上述所說的編譯器無法產(chǎn)生位置無關(guān)代碼,則在編譯主備版本時,將Vm的起始地 址設(shè)置為版本啟動地址。上述所說的啟動BOOT是一個小型可執(zhí)行文件,通常存儲在芯片的物理地址0x0 ; 芯片上電后,將自動執(zhí)行啟動BOOT。上述所說的主用版本和備用版本,是兩個不同版本的可執(zhí)行文件。
權(quán)利要求
1.一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于它由以下步驟構(gòu)成(1)在單一芯片上,將存儲空間劃分為至少三部分,分別用于存儲啟動BOOT、存儲主用 版本和備用版本;其中用于存儲啟動BOOT的部分稱作VO ;所說的存儲主用版本和備用版本 的部分稱作Vl和V2 ;如果Vl是主用版本,則V2為備用版本,如果V2是主用版本,則Vl為 備用版本,這種關(guān)系通過參數(shù)配置區(qū)進(jìn)行區(qū)分;(2)芯片上電后,啟動BOOT率先運(yùn)行,它檢測參數(shù)配置,判斷當(dāng)前的主用版本是Vl還是 V2 ;啟動BOOT將控制權(quán)切換到主用版本;(3)主用版本運(yùn)行期間,如果接收到遠(yuǎn)程升級指令,則從遠(yuǎn)程服務(wù)端下載新的版本文 件,覆蓋當(dāng)前備用版本存儲空間;如果Vl為主用版本,則覆蓋V2,反之則覆蓋Vl ;(4)主用版本更新參數(shù)配置區(qū),將新下載的版本設(shè)為主用版本,當(dāng)前運(yùn)行的版本設(shè)為備 用版本,然后重啟系統(tǒng);(5)系統(tǒng)重啟后,啟動BOOT檢測到參數(shù)變化,將自動啟動新的主用版本,完成遠(yuǎn)程版本 升級。
2.根據(jù)權(quán)利要求1所說的一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于所說 的步驟(1)中的參數(shù)存儲在獨(dú)立的存儲空間,例如E2PR0M上;或與版本駐留在同一芯片上, 即在芯片上再劃分一塊區(qū)域,用于存儲參數(shù)。
3.根據(jù)權(quán)利要求1所說的一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于所說 的步驟( 中啟動BOOT在將控制權(quán)切換到主用版本時,如果在編譯主用版本和備用版本可 執(zhí)行文件時,設(shè)置了位置無關(guān)選項(xiàng),能使版本在存儲空間的任意位置都可以啟動運(yùn)行,則通 過調(diào)整CPU的程序計(jì)數(shù)器,啟動主用版本;在調(diào)整程序計(jì)數(shù)器時,如果VO運(yùn)行在用戶模式 下,那么需要通過軟中斷方式,強(qiáng)迫CPU進(jìn)入管理模式,然后才能修改CPU程序計(jì)數(shù)器,實(shí)現(xiàn) 版本跳轉(zhuǎn);如果編譯器無法產(chǎn)生位置無關(guān)代碼,則啟動BOOT將主用版本拷貝到內(nèi)存空間,然后從 內(nèi)存啟動主用版本;或者是在芯片上劃分出一塊運(yùn)行區(qū)域,該區(qū)域用Vm標(biāo)識,啟動BOOT找 出主用版本后,將該版本拷貝到Vm區(qū),然后從Vm區(qū)啟動主用版本。
4.根據(jù)權(quán)利要求3所說的一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于所說 的編譯器無法產(chǎn)生位置無關(guān)代碼,則在編譯主備版本時,將內(nèi)存或Vm的起始地址設(shè)置為版 本啟動地址。
5.根據(jù)權(quán)利要求1所說的一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于所說 的啟動BOOT是一個小型可執(zhí)行文件,通常存儲在芯片的物理地址0x0 ;芯片上電后,將自動 執(zhí)行啟動BOOT。
6.根據(jù)權(quán)利要求1所說的一種在單芯片上實(shí)現(xiàn)主備版本備份的方法,其特征在于所說 的主用版本和備用版本,是兩個不同版本的可執(zhí)行文件。
全文摘要
一種在單芯片上實(shí)現(xiàn)主備版本備份的方法為在單一芯片上,將存儲空間劃分為至少三部分,其中用于存儲啟動BOOT的部分稱作V0;所說的存儲主用版本和備用版本的部分稱作V1和V2;芯片上電后,啟動BOOT率先運(yùn)行,判斷當(dāng)前的主用版本是V1還是V2;啟動BOOT將控制權(quán)切換到主用版本;主用版本運(yùn)行期間,如接收到遠(yuǎn)程升級指令,則從遠(yuǎn)程服務(wù)端下載新的版本文件,覆蓋當(dāng)前備用版本存儲空間;主用版本更新參數(shù)配置區(qū),然后重啟系統(tǒng);重啟后,將自動啟動新的主用版本,完成遠(yuǎn)程版本升級。優(yōu)越性本方法在單一芯片上,同時存儲啟動BOOT、主用版本、備用版本三個文件,并實(shí)現(xiàn)主備互換、遠(yuǎn)程升級功能,有效降低產(chǎn)品開發(fā)和維護(hù)成本。
文檔編號G06F9/445GK102087603SQ20091022901
公開日2011年6月8日 申請日期2009年12月8日 優(yōu)先權(quán)日2009年12月8日
發(fā)明者王鐘穎 申請人:國家納米技術(shù)與工程研究院