本發(fā)明涉及車載終端技術(shù)領(lǐng)域,具體涉及一種車載控制終端的遠程在線升級方法及裝置。
背景技術(shù):
車載控制終端(英文簡稱為“RCM”),俗稱為車輛管理的“黑匣子”,能夠?qū)囕v實時在線監(jiān)控、管理和數(shù)據(jù)傳輸;以及能夠?qū)σ苿幽繕说奈恢?、安全、運行、技術(shù)狀態(tài)進行全天候的監(jiān)控。實際應(yīng)用過程中,基于應(yīng)用功能需求的變化,車載控制終端內(nèi)嵌入的軟件具有升級的需求。
車載控制終端內(nèi)嵌入的軟件的傳統(tǒng)的升級方式主要包括兩種:第一種方式是利用專用下載器與車載控制終端內(nèi)的單元模塊連接,將更新代碼數(shù)據(jù)傳輸至車載控制終端,從而完成升級操作,升級過程中需要拆開車載控制終端的箱體,實際操作較為復雜,且要求工作人員具有較高的專業(yè)知識和技能;第二種方式是上位機通過串口和CAN等通訊接口與車載控制終端連接,并將更新代碼數(shù)據(jù)傳輸至車載控制終端,從而完成升級操作,該種升級方式不需要拆卸車載控制終端的箱體,無需專用下載器,實際操作較為簡單,升級成本較低,但是該升級方式存在一定的誤碼率,僅要求工作人員具有一定的專業(yè)知識和技能。
同時,上述的兩種升級方式均屬于人工手動升級方式,實際應(yīng)用過程中,由于安裝有遠程控制終端的車輛所處的位置極為分散,需要相關(guān)工作人員前往車輛現(xiàn)場才能進行升級操作,需要耗費大量人力成本;出于運營成本上的考慮,人工手動升級的方式并不適合車載控制終端的大規(guī)模升級。而遠程無線升級方式則解決了人工手動升級的方式不適合車載控制終端的大規(guī)模升級的問題,但是,由于主客觀因素的影響,現(xiàn)有的遠程無線升級方式仍然存在具有一定的誤碼率以及升級失敗的情形,因此,如何提高車載控制終端軟件升級的穩(wěn)定性和可靠性,降低其軟件升級出現(xiàn)的誤碼率,以及車載控制終端軟件升級失敗后如何防止出現(xiàn)運行崩潰,從而提升車載控制終端運行的穩(wěn)定性和可靠性,是亟需解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供了一種車載控制終端的遠程在線升級方法及裝置,能夠?qū)囕d控制終端內(nèi)嵌入的軟件進行升級,不僅能降低軟件升級的誤碼率,也解決了車載控制終端軟件升級失敗后出現(xiàn)運行崩潰的技術(shù)問題,提升了車載控制終端運行的穩(wěn)定性和可靠性。
本發(fā)明的技術(shù)方案如下:
一種車載控制終端的遠程在線升級方法,包括以下步驟:
車載控制終端接收來自于管理服務(wù)器的軟件升級指令,根據(jù)該指令,從FTP服務(wù)器中獲取更新代碼數(shù)據(jù)并將該更新代碼數(shù)據(jù)寫入至升級代碼文件內(nèi);
車載控制終端讀取升級代碼文件內(nèi)的更新標識的值,在更新標識的值為預(yù)設(shè)值三的情況下,將更新代碼索引指向的更新代碼區(qū)內(nèi)的代碼數(shù)據(jù)寫入flash存儲器內(nèi)用戶代碼區(qū),將更新代碼索引指向另一更新代碼區(qū)后,運行用戶代碼區(qū)內(nèi)的程序。
進一步地,根據(jù)該指令,從FTP服務(wù)器中獲取更新代碼數(shù)據(jù)并將該更新代碼數(shù)據(jù)寫入至升級代碼文件內(nèi),包括:
解析軟件升級指令,獲取升級指令內(nèi)攜帶的升級信息;
根據(jù)升級信息,向FTP服務(wù)器發(fā)送升級數(shù)據(jù)獲取請求;
讀取升級代碼文件內(nèi)更新代碼索引所指向的更新代碼區(qū);
接收來自于FTP文件服務(wù)器的更新代碼數(shù)據(jù),并將其寫入更新代碼索引所指向的更新代碼區(qū)內(nèi);
將更新標識的值由預(yù)設(shè)值二設(shè)置為預(yù)設(shè)值三并進行復位操作。
其中,更新代碼數(shù)據(jù)接收完成后,車載控制終端采用MD5消息摘要算法第五版校驗所述更新代碼數(shù)據(jù)是否完整。在更新代碼數(shù)據(jù)完整的情況下,將其寫入更新代碼索引所指向的更新代碼區(qū)。
進一步地,將其寫入更新代碼索引所指向的更新代碼區(qū)內(nèi),具體包括:
讀取升級代碼文件內(nèi)的更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼數(shù)據(jù)寫入至升級代碼文件的更新代碼一內(nèi);
或者,讀取升級代碼文件內(nèi)的更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼數(shù)據(jù)寫入至升級代碼文件的更新代碼二內(nèi)。
進一步地,將升級代碼文件內(nèi)更新代碼索引指向的更新代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū),具體包括:
在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼一內(nèi)的更新代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū),然后將更新代碼索引的值由預(yù)設(shè)值一設(shè)置為預(yù)設(shè)值二;
或者,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼二內(nèi)的更新代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū),然后將更新代碼索引的值由預(yù)設(shè)值二設(shè)置為預(yù)設(shè)值一。
進一步地,運行用戶代碼區(qū)內(nèi)的程序之后,還包括:
獲取程序運行時間,在程序運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二;
獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,車載控制終端進行復位操作并進入回溯階段。
進一步地,回溯階段包括:
讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼二內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值一,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二并進入正常的工作流程;
或者,讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼一內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值二,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二并進入正常的工作流程。
進一步地,一種車載控制終端的遠程在線升級裝置,包括有控制芯片、GPRS/3G /4G通訊模塊以及存儲模塊;
GPRS/3G/4G通訊模塊,用于與管理服務(wù)器以及FTP服務(wù)器建立通訊連接;
控制芯片,與GPRS/3G/4G通訊模塊通訊連接,用于接收和解析來自于管理服務(wù)器的軟件升級指令,獲取升級指令內(nèi)攜帶的升級信息,并根據(jù)升級信息,向FTP服務(wù)器發(fā)送升級數(shù)據(jù)獲取請求,讀取升級代碼文件內(nèi)更新代碼索引所指向的更新代碼區(qū),接收來自于FTP文件服務(wù)器的更新代碼數(shù)據(jù)后,將其寫入更新代碼索引所指向的更新代碼區(qū)內(nèi),并將更新標識的值由預(yù)設(shè)值二設(shè)置為預(yù)設(shè)值三;
還用于,讀取升級代碼文件內(nèi)的更新標識的值,在更新標識的值為預(yù)設(shè)值三的情況下,將更新代碼索引指向的更新代碼區(qū)內(nèi)的代碼數(shù)據(jù)寫入flash存儲器內(nèi)用戶代碼區(qū),將更新代碼索引指向另一更新代碼區(qū)后,運行用戶代碼區(qū)內(nèi)的程序;
存儲模塊,與控制芯片保持通訊連接,存儲模塊用于存儲升級代碼文件。
進一步地,控制芯片內(nèi)部的flash存儲器劃分為引導區(qū)、執(zhí)行區(qū)以及用戶代碼區(qū),其中引導區(qū)用于存儲bootload引導函數(shù)代碼以及內(nèi)部子函數(shù)代碼,執(zhí)行區(qū)用于固定main函數(shù)物理地址位置,用戶代碼區(qū)用于存儲升級代碼。
升級代碼文件保存的格式包括文件頭、更新代碼一和更新代碼二,文件頭劃分為更新標識、更新代碼索引、更新代碼一長度以及更新代碼二長度,更新代碼一和更新代碼二用于存放更新代碼數(shù)據(jù)。
進一步地,控制芯片還用于, 在運行用戶代碼區(qū)內(nèi)的程序之后,獲取程序運行時間,在程序運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二;
還用于,在運行用戶代碼區(qū)內(nèi)的程序之后,獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,進行復位操作。
進一步地,控制芯片在運行用戶代碼區(qū)內(nèi)的程序,獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,進行復位操作之后,控制芯片還用于:
讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼二內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值一,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二;
或者,讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼一內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值二,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二。
本發(fā)明中,控制芯片將獲取到的更新代碼數(shù)據(jù)寫入至升級代碼文件中的一更新代碼區(qū)內(nèi)(更新代碼一或更新代碼二),在更新標識的值為預(yù)設(shè)值三的情況下,將該更新代碼區(qū)內(nèi)的更新代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū)內(nèi),完成車載控制終端的在線升級。
車載控制終端為了判定更新程序是否能夠穩(wěn)定運行,在運行升級程序后,控制芯片獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,進入回溯流程;由于此時在升級代碼文件內(nèi),更新標識為預(yù)設(shè)值三以及更新代碼索引指向另一個更新代碼區(qū),而另一個更新代碼區(qū)內(nèi)存儲的是當前執(zhí)行的程序代碼,因此控制芯片將該更新代碼區(qū)內(nèi)的當前執(zhí)行程序的代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū)內(nèi),并執(zhí)行當前版本(即上一版本)的程序;同時,車載控制終端在程序升級過程中的任一步驟,若出現(xiàn)死機等升級失敗的情形時,由于其內(nèi)的硬件看門狗電路均會自動復位,從而會自動回溯執(zhí)行當前版本的程序,從而提高升級的穩(wěn)定性和可靠性。
本發(fā)明產(chǎn)生的有益效果:
1、本發(fā)明實現(xiàn)了對車載控制終端的遠程在線升級,誤碼率低,具有高穩(wěn)定性和可靠性,同時避免了人工現(xiàn)場升級,降低了升級的成本;
2、在車載控制終端升級過程中,若出現(xiàn)死機等升級失敗的情形時,車載控制終端內(nèi)的運行程序會自動回溯至上一版本,執(zhí)行上一版本的程序,從而提高了車載控制終端運行的穩(wěn)定性和可靠性,解決了車載控制終端軟件升級失敗后出現(xiàn)運行崩潰的技術(shù)問題;
3、本發(fā)明所述的車載控制終端的遠程在線升級方式,不需要拆卸車載控制終端的箱體,無需專用下載器,實際操作較為簡單,適合車載控制終端的大規(guī)模升級。
附圖說明
構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1是本發(fā)明所述的車載控制終端的遠程在線升級方法的流程圖一;
圖2是本發(fā)明所述的車載控制終端的遠程在線升級方法的流程圖二;
圖3是本發(fā)明所述的車載控制終端的遠程在線升級裝置的示意圖;
圖4a是本發(fā)明所述的保存的升級代碼文件的數(shù)據(jù)格式劃分方式的示意圖;
圖4b是本發(fā)明所述的升級代碼文件內(nèi)文件頭的數(shù)據(jù)格式劃分方式的示意圖;
圖5是本發(fā)明所述的flash存儲器內(nèi)部劃分方式的示意圖;
圖6是本發(fā)明實施例一所述的下載階段的流程圖;
圖7是本發(fā)明實施例一所述的升級階段的流程圖;
圖8是本發(fā)明實施例二所述的回溯階段的流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的實施例進行詳細說明,但是本發(fā)明可以由權(quán)利要求限定和覆蓋的多種不同方式實施。
如附圖1和附圖2所示,一種車載控制終端的遠程在線升級方法,包括步驟一和步驟二。
步驟一:車載控制終端接收來自于管理服務(wù)器的軟件升級指令,根據(jù)該指令,從FTP服務(wù)器中獲取更新代碼數(shù)據(jù)并將該更新代碼數(shù)據(jù)寫入至升級代碼文件內(nèi)。
其中,根據(jù)該指令,從FTP服務(wù)器中獲取更新代碼數(shù)據(jù)并將該更新代碼數(shù)據(jù)寫入至升級代碼文件內(nèi),包括:
解析軟件升級指令,獲取升級指令內(nèi)攜帶的升級信息;
根據(jù)升級信息,向FTP服務(wù)器發(fā)送升級數(shù)據(jù)獲取請求;
讀取升級代碼文件內(nèi)更新代碼索引所指向的更新代碼區(qū);
接收來自于FTP文件服務(wù)器的更新代碼數(shù)據(jù),并將其寫入更新代碼索引所指向的更新代碼區(qū)內(nèi);
將更新標識的值設(shè)置為預(yù)設(shè)值三并復位。
上述步驟中,其中升級信息包括FTP服務(wù)器地址信息、登錄用戶名、登錄密碼、升級文件路徑信息以及升級文件的文件名;升級代碼文件存儲在車載控制終端的存儲模塊內(nèi),其內(nèi)部可劃分為文件頭和更新代碼,而更新代碼包括更新代碼一和更新代碼二,文件頭包括更新標識、更新代碼索引、更新代碼一字節(jié)長度和更新代碼二字節(jié)長度;更新代碼一和更新代碼二作為兩個緩存區(qū),當更新代碼索引指向更新代碼二時,更新代碼二則用于存儲來自于管理服務(wù)器的更新代碼數(shù)據(jù),當更新代碼索引指向更新代碼一時,則更新代碼一用于存儲來自于管理服務(wù)器的更新代碼數(shù)據(jù)。
車載控制終端內(nèi)的控制芯片一般通過讀取更新代碼索引的值來獲取用于存儲更新代碼數(shù)據(jù)的更新代碼區(qū),若更新代碼索引的值為預(yù)設(shè)值一,則更新代碼一用于存儲來自于管理服務(wù)器的更新代碼數(shù)據(jù),而若更新代碼索引的值為預(yù)設(shè)值二,則更新代碼二用于存儲來自于管理服務(wù)器的更新代碼數(shù)據(jù)。
步驟二:車載控制終端讀取升級代碼文件內(nèi)的更新標識的值,在更新標識的值為預(yù)設(shè)值三的情況下,將更新代碼索引指向的更新代碼區(qū)內(nèi)更新代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū),并運行用戶代碼區(qū)內(nèi)的更新程序。
上述步驟中,寫入flash存儲器內(nèi)的更新代碼數(shù)據(jù)來自于更新代碼一或更新代碼二內(nèi);車載控制終端讀取升級代碼文件內(nèi)的更新代碼索引的值,若該值為預(yù)設(shè)值一,則將更新代碼一內(nèi)的代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū),若該值為預(yù)設(shè)值二,則將更新代碼二內(nèi)的代碼數(shù)據(jù)寫入至flash存儲器內(nèi)的用戶代碼區(qū)。
另外,將更新代碼索引指向的更新代碼區(qū)內(nèi)的更新代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū)之后,運行用戶代碼區(qū)內(nèi)的程序之前,還包括:
將更新代碼索引指向另一更新代碼區(qū)。
上述步驟中,若寫入至flash存儲器內(nèi)的更新代碼數(shù)據(jù)來自于更新代碼一內(nèi),那么寫入完畢后,更新代碼索引將指向更新代碼二,也即將更新代碼索引的值由預(yù)設(shè)值二設(shè)置為預(yù)設(shè)值一;若寫入至flash存儲器內(nèi)的更新代碼數(shù)據(jù)來自于更新代碼二內(nèi),那么寫入完畢后,更新代碼索引將指向更新代碼一,也即將更新代碼索引的值由預(yù)設(shè)值一設(shè)置為預(yù)設(shè)值二,此時,更新代碼索引指向的另一更新代碼區(qū)內(nèi)的代碼數(shù)據(jù)為當前版本的代碼數(shù)據(jù)。
車載控制終端讀取升級代碼文件內(nèi)的更新標識的值之后,還包括:
在更新標識的值不為預(yù)設(shè)值三(為預(yù)設(shè)值二)的情況下,運行用戶代碼區(qū)的程序。
以及,運行用戶代碼區(qū)內(nèi)的程序之后,還包括:
獲取程序運行時間,在程序運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二。
獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,車載控制終端進行復位操作并進入回溯階段。
回溯階段包括:
讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼二內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值一,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二并進入正常的工作流程;
或者,讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼一內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值二,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二并進入正常的工作流程。
如附圖3所示,本發(fā)明還提供了一種車載控制終端的遠程在線升級裝置,包括有控制芯片、GPRS/3G /4G通訊模塊以及存儲模塊;
GPRS/3G/4G通訊模塊,用于與管理服務(wù)器以及FTP服務(wù)器建立通訊連接;
控制芯片,與GPRS/3G/4G通訊模塊通過串口連接,用于接收和解析來自于管理服務(wù)器的軟件升級指令,獲取升級指令內(nèi)攜帶的升級信息,并根據(jù)升級信息,向FTP服務(wù)器發(fā)送升級數(shù)據(jù)獲取請求,讀取升級代碼文件內(nèi)更新代碼索引所指向的更新代碼區(qū),接收來自于FTP文件服務(wù)器的更新代碼數(shù)據(jù)后,將其寫入更新代碼索引所指向的更新代碼區(qū)內(nèi),并將更新標識的值由預(yù)設(shè)值二設(shè)置為預(yù)設(shè)值三;
還用于,讀取升級代碼文件內(nèi)的更新標識的值,在更新標識的值為預(yù)設(shè)值三的情況下,將更新代碼索引指向的更新代碼區(qū)內(nèi)的代碼數(shù)據(jù)寫入flash存儲器內(nèi)用戶代碼區(qū),將更新代碼索引指向另一更新代碼區(qū)后,運行用戶代碼區(qū)內(nèi)的程序;
存儲模塊,通過SPI接口與控制芯片保持通訊連接,用于存儲升級代碼文件。
如圖5所示,控制芯片內(nèi)flash存儲器劃分為引導區(qū)、執(zhí)行區(qū)、用戶代碼區(qū),其中引導區(qū)用于存儲bootload引導函數(shù)代碼以及內(nèi)部子函數(shù)代碼,執(zhí)行區(qū)用于固定main函數(shù)物理地址位置,用戶代碼區(qū)用于存儲升級代碼。
另外,如圖4a所示,保存升級代碼文件的格式劃分為文件頭、更新代碼一和更新代碼二,如圖4b所示,文件頭劃分為更新標識、更新代碼索引、更新代碼一長度以及更新代碼二長度,更新代碼一和更新代碼二用于存放更新代碼數(shù)據(jù)。
另外,控制芯片還用于, 在運行用戶代碼區(qū)內(nèi)的程序之后,獲取程序運行時間,在程序運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二;還用于,在運行用戶代碼區(qū)內(nèi)的程序之后,獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,進行復位操作。
當控制芯片在運行用戶代碼區(qū)內(nèi)的程序,獲取程序運行時間,在程序運行時間小于預(yù)設(shè)時間的情況下,進行復位操作之后,控制芯片還用于:
讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值二的情況下,將更新代碼二內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值一,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二;
或者,讀取升級代碼文件內(nèi)更新標識的值,在該值為預(yù)設(shè)值三的情況下,獲取更新代碼索引的值,在更新代碼索引的值為預(yù)設(shè)值一的情況下,將更新代碼一內(nèi)的上一版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);將更新代碼索引的值設(shè)置為預(yù)設(shè)值二,運行上一版本的程序;在上一版本的程序的運行時間大于或等于預(yù)設(shè)時間的情況下,將更新標識的值設(shè)置為預(yù)設(shè)值二。
實施例一
本發(fā)明實施例一為車載控制終端的遠程在線升級流程,包括下載階段和升級階段。本實施例中,在來自于管理服務(wù)器的升級數(shù)據(jù)與車載控制終端匹配、升級數(shù)據(jù)正確、并且寫入正確的前提下進行車載控制終端的遠程在線升級工作。
如附圖6所示,下載階段的具體步驟如下:
S101.控制芯片通過GPRS/3G/4G通訊模塊接收來自于管理服務(wù)器的升級指令;
S102.解析該指令,并獲取其內(nèi)所攜帶的升級信息;
S103.根據(jù)該升級信息,向FTP文件服務(wù)器發(fā)送升級數(shù)據(jù)獲取請求;
S104.獲取升級代碼文件內(nèi)更新代碼索引值為1;
S105.接收來自于FTP文件服務(wù)器的更新代碼數(shù)據(jù),并將其寫入更新代碼一內(nèi);
S106. 將更新標識的值由0設(shè)置為0xaabb4455。
如附圖7所示,升級代碼文件的升級階段的具體步驟如下:
S201.車載控制終端復位;
S202.判斷升級代碼文件內(nèi)的更新標識的值是否為0xaabb4455,若是,則進入步驟S203;
S203.讀取升級代碼文件,并將更新代碼一內(nèi)的更新代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);
S204.將更新代碼索引的值設(shè)置為0;
S205.運行用戶代碼區(qū)內(nèi)的更新程序;
S206.判斷更新程序是否正常運行;
即判斷更新程序的運行時間是否超過10s,若是,則將更新標識的值設(shè)置為0,若否,則直接進行復位操作,并進入回溯階段。
實施例二
本發(fā)明實施例二為車載控制終端回溯至當前版本的程序的流程,在上述實施例一S206中,更新程序的運行時間未超過10s,則啟動該流程,從而車載控制終端運行的軟件回溯至當前版本(或上一版本),確保車載控制終端的正常運行,提高車載控制終端運行的可靠性和穩(wěn)定性。
S301.車載控制終端復位;
S302.讀取升級代碼文件內(nèi)更新標識的值,在該值為0xaabb4455的情況下,獲取更新代碼索引的值,在更新代碼索引的值為0的情況下,將更新代碼二內(nèi)的當前版本的代碼數(shù)據(jù)寫入flash存儲器內(nèi)的用戶代碼區(qū);
S303.將更新代碼索引的值設(shè)置為1;
S304.運行flash存儲器內(nèi)用戶代碼區(qū)內(nèi)的當前版本(即上一版本)的程序;
S305.判斷當前版本的程序是否正常運行;
即判斷當前版本的程序的運行時間是否超過10s,若是,則將更新標識的值設(shè)置為0并進入正常的工作流程。