999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WiFi的車載終端遠程軟件升級方法

2014-09-06 10:49:58賀翔陳崇森
單片機與嵌入式系統應用 2014年5期
關鍵詞:嵌入式程序設備

賀翔,陳崇森

(廣州海格通信集團股份有限公司,廣州 510000)

?

基于WiFi的車載終端遠程軟件升級方法

賀翔,陳崇森

(廣州海格通信集團股份有限公司,廣州 510000)

為克服車載嵌入式設備難以集中回收進行軟件升級的缺點,提出了一種基于WiFi通信的遠程軟件升級方法。該方法對微控制器FLASH存儲空間進行有效分配,設計IAP功能,利用WiFi通信接口采用TFTP協議下載新軟件到FLASH,實現嵌入式軟件在線升級。給出了升級方法的詳細設計和程序流程,升級速度快,受環境影響小。該方法可應用于移動分布式嵌入式設備中。

嵌入式設備;在線升級;自舉; IAP; STM32;WiFi

引 言

隨著對系統功能、性能要求的不斷提高,或為了消除缺陷,用戶常常需要對嵌入式終端設備軟件進行升級。目前嵌入式終端軟件升級方法有專用工具燒寫、在系統編程(ISP)和在應用編程(IAP)等[1]。前兩種方式需要專門的人員到達現場、甚至拆卸設備才能進行軟件升級。IAP方式可由開發人員根據實際應用進行靈活設計,例如使用串口升級、USB升級等[2-3]。

圖1 系統結構圖

由于車載終端具有移動性、分布廣泛、無法集中召回等特點,傳統軟件升級方案顯得束手無策。遠程軟件升級方案能夠為系統維護提供極大的方便,目前主流使用基于GPRS的IAP方式,但通常需要支付給運營商一定的費用。

根據某單位車輛管理系統的實際情況,本文設計出一種基于WiFi的遠程軟件升級方法。具有簡單、便捷、可靠、成本低等優點。

1 系統原理

系統結構如圖1所示。該單位有若干分部,每個分部獨立管轄所屬的車輛,每個車輛裝載一套終端,用于記錄車輛行駛信息。當車輛外出執行任務及返回經過車場門口時,與車場門口的數據采集設備通過WiFi進行數據交互。各分部數據采集設備連接至互聯網與總部進行數據交互[4]。

終端設備MCU采用STM32F107芯片,該芯片是意法半導體公司基于ARM Cortex-M3的32位嵌入式處理器,主頻達72 MHz、90 DMIPS。它具有256 KB閃存程序存儲器、20 KB的數據存儲器及64 KB RAM[5]。外圍接口豐富,價格僅與8位單片機相當,性價比極高。

WiFi模塊采用RedPine公司的RS9110-N-11-02模塊,該模塊通過SPI接口與MCU通信。RS9110-N-11-02模塊為IEEE 802.11b/g/n WLAN設備,集成MAC、基帶處理器、幅值可調RF收發器、頻率參考和天線等。硬件模塊嵌入了網絡協議棧、WLAN協議和配置功能,構成一個完整的802.11n WLAN解決方案。

系統軟件升級工作過程如下:

① 通過以太網把編譯好的新軟件傳輸到各分部數據采集設備上;

② 車輛外出或返回時途經車場門口數據采集設備WiFi網絡覆蓋區域;

③ 車輛終端設備通過WiFi網絡連接到數據采集設備,如需要則進行新軟件下載;

④ 車輛終端執行新軟件。

圖3 軟件升級流程

2 軟件升級方法及流程

圖2 FLASH存儲空間劃分

STM32F107內部FLASH存儲器地址以0x08000000開始,共256K。為了在線升級,將該FLASH存儲器如圖2所示劃分為BOOT區、應用程序區、臨時區、參數存儲區[7]。

其中BOOT區用于存放系統自舉程序,應用程序區用于存放用戶應用軟件,臨時區用于臨時存儲正在下載的軟件,參數存儲區用于存儲程序升級時所使用的標志及其他系統參數。

軟件升級標志定義如下:正常模式、升級模式及拷貝模式。正常模式標志著無需進行軟件升級,直接跳轉到應用程序區執行;升級模式標志著終端需要下載新的應用程序;拷貝模式用于在軟件下載完畢后拷貝到應用程序區,將該部分功能獨立出來是為了在軟件下載完畢后拷貝到應用程序區時出現突然斷電等故障時進行故障恢復。

終端處于WiFi信號范圍時,接入WiFi網絡與數據采集設備進行信息交互。如圖3所示,軟件升級流程如下:

① 接收到版本號查詢指令,回復本終端軟件版本號給數據采集設備;

② 若版本號為最新,流程結束,否則會接收到數據采集設備發來的軟件升級指令;

③ 修改參數存儲區存儲的軟件升級標志為升級模式,復位MCU;

④ MCU從BOOT區啟動;

⑤ 讀取軟件升級標志,如是“正常模式”,判斷應用程序區是否有應用程序,若有則跳轉到應用程序區執行,若無則置軟件升級標志為“升級模式”,復位MCU,跳轉到步驟④;

⑥ 若軟件升級標志是“拷貝模式”,拷貝臨時區軟件到應用程序區,修改軟件升級標志為正常模式,復位MCU,跳轉到步驟④;

⑦ 若軟件升級標志是“升級模式”,則掃描并接入WiFi網絡;

⑧ 使用TFTP協議下載新軟件到臨時區;

⑨ 校驗新軟件是否正確,若不正確則跳轉到步驟⑧,若正確則執行下一步;

⑩ 修改軟件升級標志為“拷貝模式”,復位MCU,跳轉到步驟④。

3 軟件實現

升級軟件主要由版本號比較、軟件復位、軟件下載及校驗、拷貝軟件到應用程序區、軟件跳轉到應用程序區幾部分組成。

(1) 版本號比較

每個版本的軟件需要有不同的版本號,按照一定規則遞增,如數據采集設備上有2.0版本軟件比本終端1.0版本高,則據此進行軟件升級。

(2)軟件復位

根據本設計,軟件需要復位進入BOOT區進行一系列操作。通過使STM32內部中斷應用和復位控制寄存器中的SYSRESETREQ位置1,即可實現軟件復位。

(3)軟件下載及校驗

采用TFTP協議下載應用軟件到MCU臨時區。TFTP用于發送較小的文件時實現簡單,可靠性高。其下層使用UDP協議,發送使用UDP 69端口,每次發送的最大分組為512字節。發送雙方采用超時重傳機制。數據傳輸模式可選為octet模式(二進制模式)。

TFTP支持6種類型的數據包,分別是:

① Read request (RRQ);

② Write request (WRQ);

③ Data (DATA);

④ Acknowledgment (ACK);

⑤ Error (ERROR);

⑥ OACK。

目前常用的是前5種。由于系統只需實現終端從數據采集設備上下載軟件文件,無需實現完整的TFTP協議,僅實現上述第1、3、4、5類數據包功能即可。主要定義以下4個接口函數:

① RRQ發送接口函數定義:

void tftpReadQuerry(void);

該函數用于終端發送讀文件請求,數據采集設備收到該包將發送文件數據包給終端;

② 數據包接收接口函數定義:

void tftp_recvpacket(void);

該函數用于接收數據采集設備發送到的包,根據包類型分別對ERROR包、DATA包進行處理。如果是ERROR包則需要重新傳輸文件,本次傳輸失敗。如果是DATA包,則校驗后根據包號存儲到FLASH指定位置,然后調用發送ACK函數回復ACK。掉包、錯包等的錯誤處理也在該函數執行;

③ ACK發送接口函數定義:

void tftpSendAck(unsigned charBlockNo[2]);

該函數用于根據接收到的包的編號回復ACK。

④ ERROR包接口函數定義:

void tftpSendErr(unsigned char BlockNo[2]);

該函數用于返回傳輸錯誤信息。

文件傳輸實現流程如下:

① 數據采集設備在端口為69的UDP上等待終端發出讀文件請求包;

② 終端通過UDP發送符合TFTP請求格式的RRQ包給數據采集設備;

③ 數據采集設備收到終端的這個請求包后,將直接發送DATA包給終端,這個DATA包中含數據采集設備選擇的TID作為UDP的源端口和終端的TID作為UDP目標端口,起始包號為1,往后包號逐次加1。

④ 終端接收來自數據采集設備的DATA包并回復ACK。直到請求完成。

傳輸過程中的掉包或包錯誤會導致重傳,重傳不超過三次,否則認為傳輸失敗。傳輸過程中的錯誤,會觸發發送ERROR包。ERROR包的錯誤代碼值供程序員分析使用。

(4) 拷貝軟件到應用程序區

軟件正確的下載到臨時區后,需要拷貝到應用程序區。該部分關鍵部分在于STM32內嵌FLASH的擦除與讀寫。

STM32F107內嵌FLASH是通過分頁機制來實現對尋址空間的擴展和FLASH頁面的使用和管理的。所以對FLASH的擦除操作需要按頁進行擦除。即擦除FLASH不能擦除某一字節或一次擦除小于一頁(2 048字節)。

FLASH擦除的具體步驟:

① 解鎖FLASH編程控制寄存器;

② 定位要擦除的扇區;

③ 寫扇區擦除命令;

④ 等待命令執行完成;

⑤ 鎖定FLASH編程控制寄存器。

對FLASH執行寫操作步驟如下:

① 解鎖FLASH編程控制寄存器;

② 向指定的地址寫若干字數據;

③ 等待上一條命令執行完成;

④ 如果未寫完數據,則遞增源地址和目標地址,重復步驟②和③;

⑤ 鎖定FLASH編程控制寄存器。

(5)軟件跳轉應用程序區

應用程序準備好后,程序需要從BOOT區跳轉到應用程序區首地址處執行應用程序。這里分為兩步:

① 修改中斷向量表位置。由于STM32F107采用ARM Cortex-M3內核,該內核的系統控制空間中寫中斷向量表的寄存器地址NVIC_VectTab_Addr為0xE000ED08,在該地址寫入應用程序起始地址即可,本程序應用程序起始地址APP_START_ADDRESS為0x08005000。設計如下:

ldrr0, =0x08005000

ldrr1, =0xe000ed08

strr0, [r1]

② 跳轉到應用程序首地址處執行應用程序。該步驟完成堆棧指針和程序指針(PC)的修改。在上述匯編代碼之后,通過以下方式實現:

; 從應用程序向量表中載入堆棧指針

ldrr1, [r0]

mov sp, r1

;從應用程序向量表中初始化程序指針(PC),并跳轉到應用程序

;入口

ldrr0, [r0, #4]

bxr0

為保證軟件升級錯誤不導致系統崩潰,將終端程序隔離為引導程序(BOOT區程序)及應用程序兩部分,如單次軟件升級失敗仍可進行再次升級。兩部分程序分別在Keil中編譯,并把BOOT區程序燒寫在FLASH首地址0x08005000處,以便終端啟動直接進入BOOT區。用于應用程序編譯時需設定燒寫地址為應用程序區首地址,并生成bin文件以便直接下載到FLASH中即可運行。

結 語

該方法實現了采用WiFi通信方式,通過TFTP協議將編譯后的軟件文件下載到終端設備,完成軟件升級的功能。在嵌入式系統領域,程序升級可以方便地對程序缺陷進行彌補和修改,或對程序功能進行擴充,運用該方法可極大提高產品的生存周期,節省對項目的維護成本和提高了開發效率。

[1] 孟志強,朱良焱,石瑜. 基于IAP和USB技術的嵌入式程序升級方法[J]. 湖南大學學報, 2009, 36(6): 41-44.

[2] 趙會賓,田慶春. 利用LPC2214 的IAP 功能實現程序遠程更新[J]. 無線電工程, 2006, 36(7): 53- 55.

[3] 施文灶,王平,黃晞,等. 基于USB的便攜式設備固件升級程序的設計[J]. 電子設計工程, 2009, 17(11): 4-6.

[4] 高時兵,馬宏平,陳建福. C8051F130的遠程在線升級程序設計[J]. 單片機與嵌入式系統應用, 2008(9): 27-30.

[5] STMicroelectronics Inc. STM32F107XX DataSheet, 2009.

[6] RedPine Inc. RS9110-N-11-22 DataSheet 2.0, 2012.

[7] 葉子健,王健. 一種新的程序在線升級的實現[J]. 電子器件, 2011, 34(1): 108-111.

賀翔(助理工程師),主要從事嵌入式系統方案的設計與開發;陳崇森(中級工程師),主要從事嵌入式硬件及驅動程序開發。

Remote Software Upgrade Method Based on WiFi for Vehicle Terminal

He Xiang,Chen Chongsen

(Guangzhou Haige Communications Group Incorporated Company, Guangzhou 510000, China)

To overcome the difficulty of gathering all automotive embedded devices to upgrade software, this paper proposes a remote software upgrade method based on WiFi Communication. The method allocates the microcontroller FLASH memory space effectively, and designs IAP function by using WiFi communication interface to download new software to FLASH memory. This article gives a detailed design and program flow method. This method can be applied to distributed embedded mobile devices.

embedded device; online upgrade; Bootstrap program; IAP; STM32;WiFi

TP311

A

2013-12-14)

猜你喜歡
嵌入式程序設備
諧響應分析在設備減振中的應用
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 鲁鲁鲁爽爽爽在线视频观看 | 无码中文字幕加勒比高清| 一级毛片免费高清视频| 91久草视频| 欧美成人看片一区二区三区| 欧美无专区| 国产精品丝袜在线| 在线观看国产精品第一区免费| 国产精品熟女亚洲AV麻豆| 国产女人水多毛片18| 欧美怡红院视频一区二区三区| 欧美午夜视频在线| 丝袜国产一区| 亚洲视频在线青青| 亚洲国产成人无码AV在线影院L| 成年女人a毛片免费视频| 亚洲人成电影在线播放| 国产91熟女高潮一区二区| 国产成人无码AV在线播放动漫 | 亚洲精品在线观看91| 91久久夜色精品国产网站| a毛片在线免费观看| 国产区在线观看视频| 亚洲国产精品成人久久综合影院 | 亚洲日韩精品无码专区| 国产激情国语对白普通话| 中文毛片无遮挡播放免费| 日韩精品亚洲精品第一页| 91青青草视频| 亚洲综合二区| 国产性精品| 国产综合精品日本亚洲777| 98精品全国免费观看视频| 日本免费福利视频| 夜夜爽免费视频| 国产精品人莉莉成在线播放| 伦精品一区二区三区视频| 国产成人综合网在线观看| 国产区在线看| 久久久国产精品免费视频| 亚洲精品国偷自产在线91正片| 国产精品乱偷免费视频| 在线免费无码视频| 乱色熟女综合一区二区| 多人乱p欧美在线观看| 国产福利一区在线| 色视频久久| 亚洲第一精品福利| 夜夜操天天摸| 粗大猛烈进出高潮视频无码| 蜜桃视频一区| 91久久偷偷做嫩草影院精品| 国产一级做美女做受视频| 久996视频精品免费观看| 日韩无码视频播放| 四虎亚洲精品| 亚洲综合专区| 国产亚洲一区二区三区在线| 久久毛片网| 青青草原国产| 婷婷亚洲天堂| 欧美中文字幕在线二区| 美女无遮挡被啪啪到高潮免费| 国产精品亚洲欧美日韩久久| 最新精品久久精品| 国产美女一级毛片| 91无码视频在线观看| 国产美女自慰在线观看| 在线观看无码av免费不卡网站| 亚洲精品无码不卡在线播放| 国产成人毛片| 国产精品露脸视频| 中文字幕一区二区视频| 黄色网站不卡无码| 精品夜恋影院亚洲欧洲| 日本道中文字幕久久一区| 国产中文一区二区苍井空| 国产高清毛片| 国产综合亚洲欧洲区精品无码| 亚洲精品va| 99资源在线| 综合人妻久久一区二区精品|