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
主站蜘蛛池模板: 欧洲在线免费视频| 国禁国产you女视频网站| av一区二区三区在线观看 | 亚洲日韩精品欧美中文字幕| 精品国产香蕉在线播出| 99人体免费视频| 又爽又大又黄a级毛片在线视频 | 国产视频一二三区| 波多野结衣AV无码久久一区| 亚洲无码熟妇人妻AV在线| 日韩高清成人| 国产综合欧美| 中文字幕人妻无码系列第三区| 国产成人亚洲毛片| 亚洲精品无码高潮喷水A| 午夜限制老子影院888| 国产精品自在在线午夜区app| 黄色国产在线| 亚洲第一区在线| 亚洲最新地址| 日本91视频| 国产乱肥老妇精品视频| 亚洲欧美人成人让影院| 丁香婷婷激情网| aⅴ免费在线观看| 97久久免费视频| 成人福利在线观看| 高清欧美性猛交XXXX黑人猛交 | 福利视频一区| 久久久久无码精品国产免费| 久久免费看片| 亚洲床戏一区| 亚洲一区二区在线无码| 成人午夜网址| 免费一级成人毛片| 97影院午夜在线观看视频| 久久美女精品| www.91中文字幕| 精品国产www| 国产精品原创不卡在线| 毛片基地美国正在播放亚洲| 一级毛片免费观看久| 久久精品这里只有精99品| 国产成人精品优优av| 波多野结衣国产精品| 国产第四页| 国产在线视频二区| 日韩高清一区 | 日本少妇又色又爽又高潮| 一区二区三区四区在线| 亚洲成肉网| 久久中文电影| 国产国产人成免费视频77777| 波多野吉衣一区二区三区av| 国产成人精品18| 久久久久国产精品熟女影院| 呦视频在线一区二区三区| 91精品综合| 99热这里只有精品5| 综1合AV在线播放| 婷婷午夜天| 国产毛片高清一级国语| 青青青视频免费一区二区| V一区无码内射国产| 国产成人狂喷潮在线观看2345| 有专无码视频| 少妇高潮惨叫久久久久久| 亚洲天堂福利视频| 亚洲AV无码不卡无码| 熟女视频91| 精品少妇三级亚洲| 国产91丝袜在线播放动漫 | 国产女人18水真多毛片18精品 | 国产XXXX做受性欧美88| 2021最新国产精品网站| 日韩一区二区在线电影| 欧美在线视频不卡| 黄片在线永久| 乱系列中文字幕在线视频| 人妻一本久道久久综合久久鬼色| 国产jizz| 国产成人精品在线|