應(yīng)用程序自更新和備份恢復(fù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機通訊技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序自更新和備份恢復(fù)的方法。
【背景技術(shù)】
[0002]引導(dǎo)加載程序是嵌入式系統(tǒng)在加電后執(zhí)行的第一段代碼,在它完成CPU和相關(guān)硬件的初始化之后,再將操作系統(tǒng)映像或固化的嵌入式應(yīng)用程序裝載到內(nèi)存中然后跳轉(zhuǎn)到操作系統(tǒng)所在的空間,啟動操作系統(tǒng)運行。目前很多嵌入式產(chǎn)品均需要實現(xiàn)引導(dǎo)加載程序。這樣應(yīng)用程序自更新以及備份恢復(fù)實現(xiàn)困難,并且?guī)讉€使用同一系列平臺的產(chǎn)品均需重復(fù)實現(xiàn)引導(dǎo)加載程序。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題,在于提供一種應(yīng)用程序自更新和備份恢復(fù)的方法,其解決幾個使用同一系列平臺的產(chǎn)品均需重復(fù)實現(xiàn)引導(dǎo)加載程序的問題。
[0004]本發(fā)明是這樣實現(xiàn)的:一種應(yīng)用程序自更新和備份恢復(fù)的方法,所述方法包括如下步驟:
步驟1、將嵌入式系統(tǒng)的flash存儲器分為Bootloader程序區(qū)、Boot參數(shù)區(qū)、應(yīng)用程序參數(shù)區(qū)、主程序區(qū)、下載程序區(qū)以及備份程序區(qū);所述Bootloader程序區(qū):用于存放引導(dǎo)加載程序;所述Boot參數(shù)區(qū):存放引導(dǎo)加載程序使用的參數(shù);所述應(yīng)用程序參數(shù)區(qū):存放應(yīng)用程序使用的參數(shù);所述主程序區(qū):運行的應(yīng)用程序存放區(qū);所述下載程序區(qū):應(yīng)用程序進行自更新時下載的應(yīng)用程序臨時存放區(qū);所述備份程序區(qū):自更新時備份舊程序存放區(qū);步驟2、根據(jù)產(chǎn)品使用到的1配置對應(yīng)的引腳及flash存儲器各分區(qū)大小分配好,通過JTAG接口或CPU內(nèi)嵌的自舉程序?qū)⒁龑?dǎo)加載程序燒寫至BootLoader程序區(qū);
步驟3、嵌入式系統(tǒng)上電后選擇通過串口直接燒寫應(yīng)用程序或引導(dǎo)已下載完成的應(yīng)用程序正常運行,以及配合應(yīng)用程序使用IAP實現(xiàn)應(yīng)用程序自更新;
步驟4、當(dāng)通過串口直接燒寫應(yīng)用程序時,使用YModem協(xié)議傳輸應(yīng)用程序文件,傳輸完成后計算CRC校驗值并儲存相關(guān)文件信息和應(yīng)用程序到主程序區(qū);
步驟5、運行時檢查是否有等待執(zhí)行的應(yīng)用程序自更新,若無,則檢查主程序區(qū)的應(yīng)用程序文件信息有效性并跳轉(zhuǎn)至應(yīng)用程序運行;若有,則進入步驟6 ;
步驟6、當(dāng)有等待執(zhí)行的應(yīng)用程序自更新時,判斷備份程序區(qū)的分區(qū)大小是否非零以及當(dāng)前主程序區(qū)的應(yīng)用程序是否有效,是則備份舊程序至備份程序區(qū),然后拷貝下載程序區(qū)內(nèi)程序至主程序區(qū),執(zhí)行試運行測試,若測試通過則更新完成,失敗則根據(jù)備份與否選擇是否還原舊程序至主程序區(qū)。
[0005]進一步地,引導(dǎo)加載程序需要執(zhí)行參數(shù)時,從所述Boot參數(shù)區(qū)中獲得引導(dǎo)加載程序使用的參數(shù);應(yīng)用程序需要執(zhí)行參數(shù)時,從所述應(yīng)用程序參數(shù)區(qū)中獲得應(yīng)用程序使用的參數(shù)。
[0006]進一步地,當(dāng)應(yīng)用程序自更新因外部因素中斷時,下次進入引導(dǎo)加載程序可通過讀取Boot參數(shù)區(qū)的參數(shù)判斷自更新進度,繼續(xù)完成自更新功能。
[0007]進一步地,當(dāng)應(yīng)用程序自更新異常時,可以自動判斷是否有備份,若有備份則自動恢復(fù)為原應(yīng)用程序;若無備份,提示異常信息。
[0008]進一步地,能同時支持本地串口更新應(yīng)用程序及在用應(yīng)程序運行時將更新文件下載至下載區(qū)并重啟進入引導(dǎo)程序,引導(dǎo)程序?qū)⑾螺d的文件進行驗證測試并拷貝到主程序區(qū)來實現(xiàn)應(yīng)用程序自更新功能。
[0009]本發(fā)明具有如下優(yōu)點:本發(fā)明可同時支持本地串口更新應(yīng)用程序及在用應(yīng)程序運行時將更新文件下載至下載區(qū)并重啟進入引導(dǎo)程序,引導(dǎo)程序?qū)⑾螺d的文件進行驗證測試并拷貝到主程序區(qū)來實現(xiàn)應(yīng)用程序自更新功能,并可以根據(jù)FLASH存儲器的備份分區(qū)大小智能判斷是否需要進行備份;
當(dāng)應(yīng)用程序自更新因外部因素中斷時,下次進入引導(dǎo)加載程序可通過讀取Boot參數(shù)區(qū)的參數(shù)判斷自更新進度,繼續(xù)完成自更新功能;
因為在同一平臺上芯片初始化及1操作方式一樣,將1及FLASH各分區(qū)大小配置文件獨立出來并由宏開關(guān)控制在不同產(chǎn)品之間切換,解決在同一平臺上的不同產(chǎn)品只需要維護一份引導(dǎo)加載程序?qū)崿F(xiàn)代碼,縮短開發(fā)周期減少后期維護成本。
【附圖說明】
[0010]圖1為本發(fā)明方法流程示意圖。
[0011]圖2為本發(fā)明Bootloader程序區(qū)的執(zhí)行流程示意圖。
【具體實施方式】
[0012]請參閱圖1和圖2所示,本發(fā)明的一種應(yīng)用程序自更新和備份恢復(fù)的方法,所述方法包括如下步驟:
步驟1、將嵌入式系統(tǒng)的flash存儲器分為Bootloader程序區(qū)、Boot參數(shù)區(qū)、應(yīng)用程序參數(shù)區(qū)、主程序區(qū)、下載程序區(qū)以及備份程序區(qū);所述Bootloader程序區(qū):用于存放引導(dǎo)加載程序;所述Boot參數(shù)區(qū):存放引導(dǎo)加載程序使用的參數(shù);所述應(yīng)用程序參數(shù)區(qū):存放應(yīng)用程序使用的參數(shù);所述主程序區(qū):運行的應(yīng)用程序存放區(qū);所述下載程序區(qū):應(yīng)用程序進行自更新時下載的應(yīng)用程序臨時存放區(qū);所述備份程序區(qū):自更新時備份舊程序存放區(qū);步驟2、根據(jù)產(chǎn)品使用到的10配置對應(yīng)的引腳及flash存儲器各分區(qū)大小分配好,通過JTAG接口或CPU內(nèi)嵌的自舉程序?qū)⒁龑?dǎo)加載程序燒寫至閃存存儲器的啟動空間(即BootLoader 程序區(qū))
步驟3、嵌入式系統(tǒng)上電后選擇通過串口直接燒寫應(yīng)用程序或引導(dǎo)已下載完成的應(yīng)用程序正常運行,以及配合應(yīng)用程序使用IAP實現(xiàn)應(yīng)用程序自更新;
步驟4、當(dāng)通過串口直接燒寫應(yīng)用程序時,使用YModem協(xié)議傳輸應(yīng)用程序文件,傳輸完成后計算CRC校驗值并儲存相關(guān)文件信息和應(yīng)用程序到主程序區(qū);
步驟5、運行時檢查是否有等待執(zhí)行的應(yīng)用程序自更新,若無,則檢查主程序區(qū)的應(yīng)用程序文件信息有效性并跳轉(zhuǎn)至應(yīng)用程序運行;若有,則進入步驟6 ;
步驟6、當(dāng)有等待執(zhí)行的應(yīng)用程序自更新時,判斷備份程序區(qū)的分區(qū)大小是否非零以及當(dāng)前主程序區(qū)的應(yīng)用程序是否有效,是則備份舊程序至備份程序區(qū),然后拷貝下載程序區(qū)內(nèi)程序至主程序區(qū),執(zhí)行試運行測試,若測試通過則更新完成,失敗則根據(jù)備份與否選擇是否還原舊程序至主程序區(qū)。
[0013]其中,引導(dǎo)加載程序需要執(zhí)行參數(shù)時,從所述Boot參數(shù)區(qū)中獲得引導(dǎo)加載程序使用的參數(shù);應(yīng)用程序需要執(zhí)行參數(shù)時,從所述應(yīng)用程序參數(shù)區(qū)中獲得應(yīng)用程序使用的參數(shù)。
[0014]當(dāng)應(yīng)用程序自更新因外部因素中斷時,下次進入引導(dǎo)加載程序可通過讀取Boot參數(shù)區(qū)的參數(shù)判斷自更新進度,繼續(xù)完成自更新功能。
[0015]當(dāng)應(yīng)用程序自更新異常時,可以自動判斷是否有備份,若有備份則自動恢復(fù)為原應(yīng)用程序;若無備份,提示異常信息。
[0016]另外,本發(fā)明能同時支持本地串口更新應(yīng)用程序及在用應(yīng)程序運行時將更新文件下載至下載區(qū)并重啟進入引導(dǎo)程序,引導(dǎo)程序?qū)⑾螺d的文件進行驗證測試并拷貝到主程序區(qū)來實現(xiàn)應(yīng)用程序自更新功能。
[0017]總之,本發(fā)明在同一平臺上芯片初始化及1操作方式一樣,將1及FLASH各分區(qū)大小配置文件獨立出來并由宏開關(guān)控制在不同產(chǎn)品之間切換,解決在同一平臺上的不同產(chǎn)品只需要維護一份引導(dǎo)加載程序?qū)崿F(xiàn)代碼,縮短開發(fā)周期減少后期維護成本。
[0018]以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
【主權(quán)項】
1.一種應(yīng)用程序自更新和備份恢復(fù)的方法,其特征在于:所述方法包括如下步驟: 步驟1、將嵌入式系統(tǒng)的flash存儲器分為Bootloader程序區(qū)、Boot參數(shù)區(qū)、應(yīng)用程序參數(shù)區(qū)、主程序區(qū)、下載程序區(qū)以及備份程序區(qū);所述Bootloader程序區(qū):用于存放引導(dǎo)加載程序;所述Boot參數(shù)區(qū):存放引導(dǎo)加載程序使用的參數(shù);所述應(yīng)用程序參數(shù)區(qū):存放應(yīng)用程序使用的參數(shù);所述主程序區(qū):運行的應(yīng)用程序存放區(qū);所述下載程序區(qū):應(yīng)用程序進行自更新時下載的應(yīng)用程序臨時存放區(qū);所述備份程序區(qū):自更新時備份舊程序存放區(qū);步驟2、根據(jù)產(chǎn)品使用到的1配置對應(yīng)的引腳及flash存儲器各分區(qū)大小分配好,通過JTAG接口或CPU內(nèi)嵌的自舉程序?qū)⒁龑?dǎo)加載程序燒寫至BootLoader程序區(qū); 步驟3、嵌入式系統(tǒng)上電后選擇通過串口直接燒寫應(yīng)用程序或引導(dǎo)已下載完成的應(yīng)用程序正常運行,以及配合應(yīng)用程序使用IAP實現(xiàn)應(yīng)用程序自更新; 步驟4、當(dāng)通過串口直接燒寫應(yīng)用程序時,使用YModem協(xié)議傳輸應(yīng)用程序文件,傳輸完成后計算CRC校驗值并儲存相關(guān)文件信息和應(yīng)用程序到主程序區(qū); 步驟5、運行時檢查是否有等待執(zhí)行的應(yīng)用程序自更新,若無,則檢查主程序區(qū)的應(yīng)用程序文件信息有效性并跳轉(zhuǎn)至應(yīng)用程序運行;若有,則進入步驟6 ; 步驟6、當(dāng)有等待執(zhí)行的應(yīng)用程序自更新時,判斷備份程序區(qū)的分區(qū)大小是否非零以及當(dāng)前主程序區(qū)的應(yīng)用程序是否有效,是則備份舊程序至備份程序區(qū),然后拷貝下載程序區(qū)內(nèi)程序至主程序區(qū),執(zhí)行試運行測試,若測試通過則更新完成,失敗則根據(jù)備份與否選擇是否還原舊程序至主程序區(qū)。
2.根據(jù)權(quán)利要求1所述的應(yīng)用程序自更新和備份恢復(fù)的方法,其特征在于:引導(dǎo)加載程序需要執(zhí)行參數(shù)時,從所述Boot參數(shù)區(qū)中獲得引導(dǎo)加載程序使用的參數(shù);應(yīng)用程序需要執(zhí)行參數(shù)時,從所述應(yīng)用程序參數(shù)區(qū)中獲得應(yīng)用程序使用的參數(shù)。
3.根據(jù)權(quán)利要求1所述的應(yīng)用程序自更新和備份恢復(fù)的方法,其特征在于:當(dāng)應(yīng)用程序自更新因外部因素中斷時,下次進入引導(dǎo)加載程序可通過讀取Boot參數(shù)區(qū)的參數(shù)判斷自更新進度,繼續(xù)完成自更新功能。
4.根據(jù)權(quán)利要求1所述的應(yīng)用程序自更新和備份恢復(fù)的方法,其特征在于:當(dāng)應(yīng)用程序自更新異常時,可以自動判斷是否有備份,若有備份則自動恢復(fù)為原應(yīng)用程序;若無備份,提不異常?目息。
5.根據(jù)權(quán)利要求1所述的應(yīng)用程序自更新和備份恢復(fù)的方法,其特征在于:能同時支持本地串口更新應(yīng)用程序及在用應(yīng)程序運行時將更新文件下載至下載區(qū)并重啟進入引導(dǎo)程序,引導(dǎo)程序?qū)⑾螺d的文件進行驗證測試并拷貝到主程序區(qū)來實現(xiàn)應(yīng)用程序自更新功會K。
【專利摘要】本發(fā)明提供一種應(yīng)用程序自更新和備份恢復(fù)的方法,將嵌入式系統(tǒng)的flash存儲器分為Bootloader程序區(qū)、Boot參數(shù)區(qū)、應(yīng)用程序參數(shù)區(qū)、主程序區(qū)、下載程序區(qū)以及備份程序區(qū);能同時支持本地串口更新應(yīng)用程序及在用應(yīng)程序運行時將更新文件下載至下載區(qū)并重啟進入引導(dǎo)程序,引導(dǎo)程序?qū)⑾螺d的文件進行驗證測試并拷貝到主程序區(qū)來實現(xiàn)應(yīng)用程序自更新功能。本發(fā)明提供一個應(yīng)用程序自更新以及備份恢復(fù)的解決方案,并且解決幾個使用同一系列平臺的產(chǎn)品均需重復(fù)實現(xiàn)引導(dǎo)加載程序的問題。
【IPC分類】G06F11-14, G06F9-445
【公開號】CN104572206
【申請?zhí)枴緾N201510018007
【發(fā)明人】戴詩旭
【申請人】廈門為那通信科技有限公司
【公開日】2015年4月29日
【申請日】2015年1月14日