專利名稱:嵌入式系統(tǒng)的在線升級(jí)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序升級(jí),特別涉及嵌入式系統(tǒng)的在線升級(jí)方法。
背景技術(shù):
在基于嵌入式系統(tǒng)的電子產(chǎn)品中,通常采用單片機(jī)以及ARM作為其主控制器以及處理器。由于應(yīng)用軟件需要不斷的更新,所以在成品的電子產(chǎn)品中,通常需要進(jìn)行軟件的在線升級(jí),以增加新增的功能,以及解決當(dāng)前存在的軟件缺陷。傳統(tǒng)的單片機(jī)升級(jí)方法,通常有兩種:一種為,單片機(jī)程序分為獨(dú)立的應(yīng)用程序和Boot程序,Boot程序用于將需要升級(jí)的應(yīng)用程序?qū)懙疆?dāng)前的應(yīng)用程序中,通常是需要將單片機(jī)重啟或者接收命令后,進(jìn)入一個(gè)Boot程序的狀態(tài),此時(shí)不運(yùn)行正常的應(yīng)用程序,僅能進(jìn)行軟件的升級(jí)。另一種是利用某些單片機(jī)自帶的Boot程序,重啟單片機(jī),控制硬件上的引腳使之進(jìn)入Boot程序,使用單片機(jī)廠商提供的升級(jí)軟件進(jìn)行升級(jí)。以上兩種方法存在以下的弊端:1.應(yīng)用程序和Boot程序獨(dú)立存在,在下載代碼的時(shí)候,需要下載兩遍程序;2.進(jìn)入Boot程序模式后,應(yīng)用程序無法運(yùn)行;3.在軟件升級(jí)過程中,如果突然斷電,會(huì)導(dǎo)致應(yīng)用程序的故障,無法繼續(xù)升級(jí),原先的應(yīng)用程序也無法運(yùn)行。與單片機(jī)領(lǐng)域類似的PC軟件升級(jí)方法,在應(yīng)用程序運(yùn)行的同時(shí),通常首先將應(yīng)用程序進(jìn)行下載,下載完成后,關(guān)閉當(dāng)前應(yīng)用程序,進(jìn)行軟件的升級(jí)。然而PC軟件的升級(jí)是基于完整的操作系統(tǒng)和文件系統(tǒng),升級(jí)的應(yīng)用程序以文件方式存在,這些條件在單片機(jī)上并不具備。另外,PC的軟件升級(jí)方法,需要在運(yùn)行應(yīng)用程序的時(shí)候,同時(shí)有另外的進(jìn)程進(jìn)行新應(yīng)用程序的下載,由于單片機(jī)僅能運(yùn)行一個(gè)應(yīng)用程序,所以無法采用該方式。
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)方案中的不足,本發(fā)明提供了一種方便可靠、解決升級(jí)過程中因掉電等原因?qū)е律?jí)失敗而引起的程序出錯(cuò)的在線升級(jí)方法。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的:嵌入式系統(tǒng)的在線升級(jí)方法,所述在線升級(jí)方法包括以下步驟:(Al)嵌入式系統(tǒng)執(zhí)行應(yīng)用程序及升級(jí)命令;(A2)待升級(jí)的代碼利用通訊協(xié)議發(fā)送給所述嵌入式系統(tǒng),所述嵌入式系統(tǒng)調(diào)用引導(dǎo)區(qū)的接口函數(shù),將所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū),完成后將標(biāo)志區(qū)的標(biāo)志位設(shè)置為代碼正確下載標(biāo)志位;復(fù)位所述嵌入式系統(tǒng); (A3)所述嵌入式系統(tǒng)運(yùn)行引導(dǎo)區(qū)內(nèi)的程序,初始化所述接口函數(shù),并讀取標(biāo)志區(qū)的標(biāo)志:若標(biāo)志位為正確下載標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,交換完成后執(zhí)行代碼區(qū)的應(yīng)用程序。根據(jù)上述的在線升級(jí)方法,可選地,所述步驟(A2)進(jìn)一步包括以下步驟:(BI)所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū)后,進(jìn)行接收到的待升級(jí)的代碼的CRC校驗(yàn);若失敗,則軟件復(fù)位;若成功,則將標(biāo)志區(qū)的標(biāo)志位設(shè)置為代碼正確下載標(biāo)志位。根據(jù)上述的在線升級(jí)方法,可選地,所述步驟(A2)進(jìn)一步包括:若標(biāo)志位為代碼恢復(fù)標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,復(fù)位所述嵌入式系統(tǒng);若標(biāo)志位為異常標(biāo)志位,將標(biāo)志位修改為正常標(biāo)志位,所述嵌入式系統(tǒng)運(yùn)行代碼區(qū)的應(yīng)用程序。與現(xiàn)有技術(shù)相比,本發(fā)明具有的有益效果為:1、應(yīng)用程序中包含了引導(dǎo)程序的相關(guān)代碼,所以只需要下載一遍應(yīng)用程序即可,使用方便;2、升級(jí)過程中仍可以運(yùn)行正常的應(yīng)用程序;3、升級(jí)過程與物理鏈路無關(guān),應(yīng)用廣泛;4、采用CRC對(duì)最終的應(yīng)用程序進(jìn)行校驗(yàn),保證應(yīng)用程序的完整性;5、采取了較多的掉電保護(hù)措施,可以避免因升級(jí)失敗引起的程序崩潰;6、升級(jí)完成后可恢復(fù)至升級(jí)之前的應(yīng)用程序。
參照附圖,本發(fā)明的公開內(nèi)容將變得更易理解。本領(lǐng)域技術(shù)人員容易理解的是:這些附圖僅僅用于舉例說明本發(fā)明的技術(shù)方案,而并非意在對(duì)本發(fā)明的保護(hù)范圍構(gòu)成限制。圖中:圖1是根據(jù)本發(fā)明實(shí)施例1的程序存儲(chǔ)空間的分區(qū)簡(jiǎn)圖;圖2是根據(jù)本發(fā)明實(shí)施例1的在線升級(jí)方法的流程圖。
具體實(shí)施例方式圖1、2和以下說明描述了本發(fā)明的可選實(shí)施方式以教導(dǎo)本領(lǐng)域技術(shù)人員如何實(shí)施和再現(xiàn)本發(fā)明。為了教導(dǎo)本發(fā)明技術(shù)方案,已簡(jiǎn)化或省略了一些常規(guī)方面。本領(lǐng)域技術(shù)人員應(yīng)該理解源自這些實(shí)施方式的變型或替換將在本發(fā)明的范圍內(nèi)。本領(lǐng)域技術(shù)人員應(yīng)該理解下述特征能夠以各種方式組合以形成本發(fā)明的多個(gè)變型。由此,本發(fā)明并不局限于下述可選實(shí)施方式,而僅由權(quán)利要求和它們的等同物限定。實(shí)施例1:圖1示意性地給出了本發(fā)明實(shí)施例的程序存儲(chǔ)空間的分區(qū)簡(jiǎn)圖,如圖1所示,所述程序存儲(chǔ)空間包括:引導(dǎo)區(qū),所述引導(dǎo)區(qū)存基本的存儲(chǔ)器讀寫、標(biāo)志判斷等代碼(不含通訊處理及其基本操作);引導(dǎo)區(qū)程序?yàn)楠?dú)立編譯的一個(gè)程序,包含了對(duì)程序存儲(chǔ)器的讀寫以及校驗(yàn)操作,使用時(shí)將引導(dǎo)程序編譯完成后的可執(zhí)行程序添加到應(yīng)用程序中,并提供相關(guān)的調(diào)用接口。主程序只需要相應(yīng)在線升級(jí)的通訊命令,調(diào)用對(duì)應(yīng)的引導(dǎo)程序接口函數(shù),即可以完成在線升級(jí)的操作。代碼區(qū),所述代碼區(qū)存完整的應(yīng)用程序工程代碼(含通訊處理及其基本操作);
臨時(shí)區(qū),所述臨時(shí)去用于備份程序區(qū)的代碼、臨時(shí)存儲(chǔ)待升級(jí)的代碼;標(biāo)志區(qū),所述標(biāo)志區(qū)是專門存放升級(jí)標(biāo)志位的特殊區(qū)域。其中引導(dǎo)區(qū)代碼使用特殊的“常量定位”方式添加到應(yīng)用程序中,與代碼區(qū)的應(yīng)用程序一次編譯完成,引導(dǎo)區(qū)提供接口函數(shù)供代碼區(qū)調(diào)用。標(biāo)志包含了正在運(yùn)行狀態(tài)標(biāo)志位,正在下載代碼標(biāo)志位,代碼下載正確標(biāo)志位,正在互換代碼標(biāo)志位,代碼互換正確標(biāo)志位,代碼互換失敗標(biāo)志位,程序升級(jí)成功標(biāo)志位,代碼恢復(fù)命令標(biāo)志位。單片機(jī)重啟后首先讀取該標(biāo)志位,然后根據(jù)標(biāo)志位可以確定在哪個(gè)過程中曾經(jīng)斷電過,然后在執(zhí)行相關(guān)的操作恢復(fù)程序,可以解決升級(jí)過程中斷電的問題。圖2示意性地給出了本發(fā)明實(shí)施例的嵌入式系統(tǒng)的在線升級(jí)方法的流程圖,如圖2所示,所述在線升級(jí)方法包括以下步驟:(Al)嵌入式系統(tǒng)執(zhí)行應(yīng)用程序及升級(jí)命令;(A2)待升級(jí)的代碼利用通訊協(xié)議發(fā)送給所述嵌入式系統(tǒng),所述嵌入式系統(tǒng)調(diào)用引導(dǎo)區(qū)的接口函數(shù),將所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū);(BI)所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū)后,進(jìn)行接收到的待升級(jí)的代碼的CRC校驗(yàn);若失敗,則軟件復(fù)位;若成功,則將標(biāo)志區(qū)的標(biāo)志位設(shè)置為代碼正確下載標(biāo)志位;復(fù)位所述嵌入式系統(tǒng);(A3)所述嵌入式系統(tǒng)運(yùn)行引導(dǎo)區(qū)內(nèi)的程序,初始化所述接口函數(shù),并讀取標(biāo)志區(qū)的標(biāo)志:若標(biāo)志位為正確下載標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,交換完成后執(zhí)行代碼區(qū)的應(yīng)用程序;若標(biāo)志位為代碼恢復(fù)標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,復(fù)位所述嵌入式系統(tǒng);若標(biāo)志位為異常標(biāo)志位,將標(biāo)志位修改為正常標(biāo)志位,所述嵌入式系統(tǒng)運(yùn)行代碼區(qū)的應(yīng)用程序。
權(quán)利要求
1.入式系統(tǒng)的在線升級(jí)方法,所述在線升級(jí)方法包括以下步驟: (Al)嵌入式系統(tǒng)執(zhí)行應(yīng)用程序及升級(jí)命令; (A2)待升級(jí)的代碼利用通訊協(xié)議發(fā)送給所述嵌入式系統(tǒng),所述嵌入式系統(tǒng)調(diào)用引導(dǎo)區(qū)的接口函數(shù),將所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū),完成后將標(biāo)志區(qū)的標(biāo)志位設(shè)置為代碼正確下載標(biāo)志位;復(fù)位所述嵌入式系統(tǒng); (A3)所述嵌入式系統(tǒng)運(yùn)行引導(dǎo)區(qū)內(nèi)的程序,初始化所述接口函數(shù),并讀取標(biāo)志區(qū)的標(biāo)志: 若標(biāo)志位為正確下載標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,交換完成后執(zhí)行代碼區(qū)的應(yīng)用程序。
2.根據(jù)權(quán)利要求1所述的在線升級(jí)方法,其特征在于:所述步驟(A2)進(jìn)一步包括以下步驟: (BI)所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū)后,進(jìn)行接收到的待升級(jí)的代碼的CRC校驗(yàn); 若失敗,則軟件復(fù)位; 若成功,則將標(biāo)志區(qū)的標(biāo)志位設(shè)置為代碼正確下載標(biāo)志位。
3.根據(jù)權(quán)利要求1所述的在線升級(jí)方法,其特征在于:所述步驟(A2)進(jìn)一步包括: 若標(biāo)志位為代碼恢復(fù)標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,復(fù)位所述嵌入式系統(tǒng); 若標(biāo)志位為異常標(biāo)志位,將標(biāo)志位修改為正常標(biāo)志位,所述嵌入式系統(tǒng)運(yùn)行代碼區(qū)的應(yīng)用程序。
全文摘要
本發(fā)明提供了嵌入式系統(tǒng)的在線升級(jí)方法,包括以下步驟(A1)嵌入式系統(tǒng)執(zhí)行應(yīng)用程序及升級(jí)命令;(A2)待升級(jí)的代碼利用通訊協(xié)議發(fā)送給嵌入式系統(tǒng),嵌入式系統(tǒng)調(diào)用引導(dǎo)區(qū)的接口函數(shù),將所述待升級(jí)的代碼存儲(chǔ)到臨時(shí)區(qū),完成后將標(biāo)志區(qū)設(shè)置為代碼正確下載標(biāo)志位;復(fù)位嵌入式系統(tǒng);(A3)嵌入式系統(tǒng)運(yùn)行引導(dǎo)區(qū)內(nèi)的程序,初始化所述接口函數(shù),并讀取標(biāo)志區(qū)的標(biāo)志若標(biāo)志位為正常運(yùn)行標(biāo)志位,執(zhí)行代碼區(qū)的應(yīng)用程序;若標(biāo)志位為正確下載標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,交換完成后執(zhí)行代碼區(qū)的應(yīng)用程序;若標(biāo)志位為代碼恢復(fù)標(biāo)志位,交換所述代碼區(qū)和臨時(shí)區(qū)的代碼,復(fù)位所述嵌入式系統(tǒng)。本發(fā)明具有方便可靠、解決升級(jí)過程中因掉電等原因?qū)е律?jí)失敗而引起的程序出等優(yōu)點(diǎn)。
文檔編號(hào)G06F11/10GK103092647SQ201210598589
公開日2013年5月8日 申請(qǐng)日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者鐘波, 高平波 申請(qǐng)人:聚光科技(杭州)股份有限公司