基于WiFi的車(chē)載終端遠程軟件升級方法
摘要:為克服車(chē)載嵌入式設備難以集中回收進(jìn)行軟件升級的缺點(diǎn),提出了一種基于WiFi通信的遠程軟件升級方法。該方法對微控制器FLASH存儲空間進(jìn)行有效分配,設計IAP功能,利用WiFi通信接口采用TFTP協(xié)議下載新軟件到FLASH,實(shí)現嵌入式軟件在線(xiàn)升級。給出了升級方法的詳細設計和程序流程,升級速度快,受環(huán)境影響小。該方法可應用于移動(dòng)分布式嵌入式設備中。
本文引用地址:http://dyxdggzs.com/article/201610/309975.htm引言
隨著(zhù)對系統功能、性能要求的不斷提高,或為了消除缺陷,用戶(hù)常常需要對嵌入式終端設備軟件進(jìn)行升級。目前嵌入式終端軟件升級方法有專(zhuān)用工具燒寫(xiě)、在系統編程(ISP)和在應用編程(IAP)等。前兩種方式需要專(zhuān)門(mén)的人員到達現場(chǎng)、甚至拆卸設備才能進(jìn)行軟件升級。IAP方式可由開(kāi)發(fā)人員根據實(shí)際應用進(jìn)行靈活設計,例如使用串口升級、USB升級等。
由于車(chē)載終端具有移動(dòng)性、分布廣泛、無(wú)法集中召回等特點(diǎn),傳統軟件升級方案顯得束手無(wú)策。遠程軟件升級方案能夠為系統維護提供極大的方便,目前主流使用基于GPRS的IAP方式,但通常需要支付給運營(yíng)商一定的費用。
根據某單位車(chē)輛管理系統的實(shí)際情況,本文設計出一種基于WiFi的遠程軟件升級方法。具有簡(jiǎn)單、便捷、可靠、成本低等優(yōu)點(diǎn)。
1 系統原理
系統結構如圖1所示。該單位有若干分部,每個(gè)分部獨立管轄所屬的車(chē)輛,每個(gè)車(chē)輛裝載一套終端,用于記錄車(chē)輛行駛信息。當車(chē)輛外出執行任務(wù)及返回經(jīng)過(guò)車(chē)場(chǎng)門(mén)口時(shí),與車(chē)場(chǎng)門(mén)口的數據采集設備通過(guò)WiFi進(jìn)行數據交互。各分部數據采集設備連接至互聯(lián)網(wǎng)與總部進(jìn)行數據交互。

終端設備MCU采用STM32F107芯片,該芯片是意法半導體公司基于A(yíng)RM Cortex—M3的32位嵌入式處理器,主頻達72 MHz、90DMIPS。它具有256 KB閃存程序存儲器、20KB的數據存儲器及64 KB RAM。外圍接口豐富,價(jià)格僅與8位單片機相當,性?xún)r(jià)比極高。
WiFi模塊采用RedPine公司的RS9110-N-11-02模塊,該模塊通過(guò)SPI接口與MCU通信。RS9110-N11-02模塊為IEEE 802.11b/g/n WLAN設備,集成MAC、基帶處理器、幅值可調RF收發(fā)器、頻率參考和天線(xiàn)等。硬件模塊嵌入了網(wǎng)絡(luò )協(xié)議棧、WLAN協(xié)議和配置功能,構成一個(gè)完整的802.11n WLAN解決方案。
系統軟件升級工作過(guò)程如下:
①通過(guò)以太網(wǎng)把編譯好的新軟件傳輸到各分部數據采集設備上;
②車(chē)輛外出或返回時(shí)途經(jīng)車(chē)場(chǎng)門(mén)口數據采集設備WiFi網(wǎng)絡(luò )覆蓋區域;
③車(chē)輛終端設備通過(guò)WiFi網(wǎng)絡(luò )連接到數據采集設備,如需要則進(jìn)行新軟件下載;
④車(chē)輛終端執行新軟件。
2 軟件升級方法及流程
STM32F107內部FLASH存儲器地址以0x08000000開(kāi)始,共256K。為了在線(xiàn)升級,將該FLASH存儲器如圖2所示劃分為BOOT區、應用程序區、臨時(shí)區、參數存儲區。

其中BOOT區用于存放系統自舉程序,應用程序區用于存放用戶(hù)應用軟件,臨時(shí)區用于臨時(shí)存儲正在下載的軟件,參數存儲區用于存儲程序升級時(shí)所使用的標志及其他系統參數。
軟件升級標志定義如下:正常模式、升級模式及拷貝模式。正常模式標志著(zhù)無(wú)需進(jìn)行軟件升級,直接跳轉到應用程序區執行;升級模式標志著(zhù)終端需要下載新的應用程序;拷貝模式用于在軟件下載完畢后拷貝到應用程序區,將該部分功能獨立出來(lái)是為了在軟件下載完畢后拷貝到應用程序區時(shí)出現突然斷電等故障時(shí)進(jìn)行故障恢復。

終端處于WiFi信號范圍時(shí),接入WiFi網(wǎng)絡(luò )與數據采集設備進(jìn)行信息交互。如圖3所示,軟件升級流程如下:
①接收到版本號查詢(xún)指令,回復本終端軟件版本號給數據采集設備;
②若版本號為最新,流程結束,否則會(huì )接收到數據采集設備發(fā)來(lái)的軟件升級指令;
③修改參數存儲區存儲的軟件升級標志為升級模式,復位MCU;
④MCU從BOOT區啟動(dòng);
⑤讀取軟件升級標志,如是“正常模式”,判斷應用程序區是否有應用程序,若有則跳轉到應用程序區執行,若無(wú)則置軟件升級標志為“升級模式”,復位MCU,跳轉到步驟④;
⑥若軟件升級標志是“拷貝模式”,拷貝臨時(shí)區軟件到應用程序區,修改軟件升級標志為正常模式,復位MCU,跳轉到步驟④;
⑦若軟件升級標志是“升級模式”,則掃描并接入WiFi網(wǎng)絡(luò );
⑧使用TFTP協(xié)議下載新軟件到臨時(shí)區;
⑨校驗新軟件是否正確,若不正確則跳轉到步驟⑧,若正確則執行下一步;
⑩修改軟件升級標志為“拷貝模式”,復位MCU,跳轉到步驟④。
3 軟件實(shí)現
升級軟件主要由版本號比較、軟件復位、軟件下載及校驗、拷貝軟件到應用程序區、軟件跳轉到應用程序區幾部分組成。
(1)版本號比較
每個(gè)版本的軟件需要有不同的版本號,按照一定規則遞增,如數據采集設備上有2.0版本軟件比本終端1.0版本高,則據此進(jìn)行軟件升級。
(2)軟件復位
根據本設計,軟件需要復位進(jìn)入BOOT區進(jìn)行一系列操作。通過(guò)使STM32內部中斷應用和復位控制寄存器中的SYSRESETREQ位置1,即可實(shí)現軟件復位。
(3)軟件下載及校驗
采用TFTP協(xié)議下載應用軟件到MCU臨時(shí)區。TFTP用于發(fā)送較小的文件時(shí)實(shí)現簡(jiǎn)單,可靠性高。其下層使用UDP協(xié)議,發(fā)送使用UDP 69端口,每次發(fā)送的最大分組為512字節,發(fā)送雙方采用超時(shí)重傳機制。數據傳輸模式可選為octet模式(二進(jìn)制模式)。
TFTP支持6種類(lèi)型的數據包,分別是:
①Read rcquest(RRQ);
②Write rcquest(WRQ);
③Data(DATA);
④Acknowledgment(ACK);
評論