日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 汽車電子 > 汽車電子
[導(dǎo)讀]摘要:為克服車載嵌入式設(shè)備難以集中回收進(jìn)行軟件升級的缺點,提出了一種基于WiFi通信的遠(yuǎn)程軟件升級方法。該方法對微控制器FLASH存儲空間進(jìn)行有效分配,設(shè)計IAP功能,利用WiFi通信接口采用TFTP協(xié)議下載新軟件到FLAS

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

引言

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

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

根據(jù)某單位車輛管理系統(tǒng)的實際情況,本文設(shè)計出一種基于WiFi的遠(yuǎn)程軟件升級方法。具有簡單、便捷、可靠、成本低等優(yōu)點。

1 系統(tǒng)原理

系統(tǒng)結(jié)構(gòu)如圖1所示。該單位有若干分部,每個分部獨立管轄所屬的車輛,每個車輛裝載一套終端,用于記錄車輛行駛信息。當(dāng)車輛外出執(zhí)行任務(wù)及返回經(jīng)過車場門口時,與車場門口的數(shù)據(jù)采集設(shè)備通過WiFi進(jìn)行數(shù)據(jù)交互。各分部數(shù)據(jù)采集設(shè)備連接至互聯(lián)網(wǎng)與總部進(jìn)行數(shù)據(jù)交互。

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

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

系統(tǒng)軟件升級工作過程如下:

①通過以太網(wǎng)把編譯好的新軟件傳輸?shù)礁鞣植繑?shù)據(jù)采集設(shè)備上;

②車輛外出或返回時途經(jīng)車場門口數(shù)據(jù)采集設(shè)備WiFi網(wǎng)絡(luò)覆蓋區(qū)域;

③車輛終端設(shè)備通過WiFi網(wǎng)絡(luò)連接到數(shù)據(jù)采集設(shè)備,如需要則進(jìn)行新軟件下載;

④車輛終端執(zhí)行新軟件。

2 軟件升級方法及流程

STM32F107內(nèi)部FLASH存儲器地址以0x08000000開始,共256K。為了在線升級,將該FLASH存儲器如圖2所示劃分為BOOT區(qū)、應(yīng)用程序區(qū)、臨時區(qū)、參數(shù)存儲區(qū)。

其中BOOT區(qū)用于存放系統(tǒng)自舉程序,應(yīng)用程序區(qū)用于存放用戶應(yīng)用軟件,臨時區(qū)用于臨時存儲正在下載的軟件,參數(shù)存儲區(qū)用于存儲程序升級時所使用的標(biāo)志及其他系統(tǒng)參數(shù)。

軟件升級標(biāo)志定義如下:正常模式、升級模式及拷貝模式。正常模式標(biāo)志著無需進(jìn)行軟件升級,直接跳轉(zhuǎn)到應(yīng)用程序區(qū)執(zhí)行;升級模式標(biāo)志著終端需要下載新的應(yīng)用程序;拷貝模式用于在軟件下載完畢后拷貝到應(yīng)用程序區(qū),將該部分功能獨立出來是為了在軟件下載完畢后拷貝到應(yīng)用程序區(qū)時出現(xiàn)突然斷電等故障時進(jìn)行故障恢復(fù)。

終端處于WiFi信號范圍時,接入WiFi網(wǎng)絡(luò)與數(shù)據(jù)采集設(shè)備進(jìn)行信息交互。如圖3所示,軟件升級流程如下:

①接收到版本號查詢指令,回復(fù)本終端軟件版本號給數(shù)據(jù)采集設(shè)備;

②若版本號為最新,流程結(jié)束,否則會接收到數(shù)據(jù)采集設(shè)備發(fā)來的軟件升級指令;

③修改參數(shù)存儲區(qū)存儲的軟件升級標(biāo)志為升級模式,復(fù)位MCU;

④MCU從BOOT區(qū)啟動;

⑤讀取軟件升級標(biāo)志,如是“正常模式”,判斷應(yīng)用程序區(qū)是否有應(yīng)用程序,若有則跳轉(zhuǎn)到應(yīng)用程序區(qū)執(zhí)行,若無則置軟件升級標(biāo)志為“升級模式”,復(fù)位MCU,跳轉(zhuǎn)到步驟④;

⑥若軟件升級標(biāo)志是“拷貝模式”,拷貝臨時區(qū)軟件到應(yīng)用程序區(qū),修改軟件升級標(biāo)志為正常模式,復(fù)位MCU,跳轉(zhuǎn)到步驟④;

⑦若軟件升級標(biāo)志是“升級模式”,則掃描并接入WiFi網(wǎng)絡(luò);

⑧使用TFTP協(xié)議下載新軟件到臨時區(qū);

⑨校驗新軟件是否正確,若不正確則跳轉(zhuǎn)到步驟⑧,若正確則執(zhí)行下一步;

⑩修改軟件升級標(biāo)志為“拷貝模式”,復(fù)位MCU,跳轉(zhuǎn)到步驟④。

3 軟件實現(xiàn)

升級軟件主要由版本號比較、軟件復(fù)位、軟件下載及校驗、拷貝軟件到應(yīng)用程序區(qū)、軟件跳轉(zhuǎn)到應(yīng)用程序區(qū)幾部分組成。

(1)版本號比較

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

(2)軟件復(fù)位

根據(jù)本設(shè)計,軟件需要復(fù)位進(jìn)入BOOT區(qū)進(jìn)行一系列操作。通過使STM32內(nèi)部中斷應(yīng)用和復(fù)位控制寄存器中的SYSRESETREQ位置1,即可實現(xiàn)軟件復(fù)位。

(3)軟件下載及校驗

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

TFTP支持6種類型的數(shù)據(jù)包,分別是:

①Read rcquest(RRQ);

②Write rcquest(WRQ);

③Data(DATA);

④Acknowledgment(ACK);

⑤Error(ERROR);

⑥OACK。

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

①RRQ發(fā)送接口函數(shù)定義:

void tftpReadQuerry(void);

該函數(shù)用于終端發(fā)送讀文件請求,數(shù)據(jù)采集設(shè)備收到該包將發(fā)送文件數(shù)據(jù)包給終端;

②數(shù)據(jù)包接收接口函數(shù)定義:

void tftp_recvpacket(void);

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

③ACK發(fā)送接口函數(shù)定義:

void tftpSendAck(unsigned char BlockNo[2]);

該函數(shù)用于根據(jù)接收到的包的編號回復(fù)ACK。

④ERROR包接口函數(shù)定義:

void tftpSendErr(unsigned char BlockNo[2]);

該函數(shù)用于返回傳輸錯誤信息。

文件傳輸實現(xiàn)流程如下:

①數(shù)據(jù)采集設(shè)備在端口為69的UDP上等待終端發(fā)出讀文件請求包;

②終端通過UDP發(fā)送符合TFTP請求格式的RRQ包給數(shù)據(jù)采集設(shè)備;

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

④終端接收來自數(shù)據(jù)采集設(shè)備的DATA包并回復(fù)ACK。直到請求完成。

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

(4)拷貝軟件到應(yīng)用程序區(qū)

軟件正確的下載到臨時區(qū)后,需要拷貝到應(yīng)用程序區(qū)。該部分關(guān)鍵部分在于STM32內(nèi)嵌FLASH的擦除與讀寫。

STM32F107內(nèi)嵌FLASH是通過分頁機(jī)制來實現(xiàn)對尋址空間的擴(kuò)展和FLASH頁面的使用和管理的。所以對FLASH的擦除操作需要按頁進(jìn)行擦除。即擦除FLASH不能擦除某一字節(jié)或一次擦除小于一頁(2048字節(jié))。

FLASH擦除的具體步驟:

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

②定位要擦除的扇區(qū);

③寫扇區(qū)擦除命令;

④等待命令執(zhí)行完成;

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

對FLASH執(zhí)行寫操作步驟如下:

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

②向指定的地址寫若干字?jǐn)?shù)據(jù);

③等待上一條命令執(zhí)行完成;

④如果未寫完數(shù)據(jù),則遞增源地址和目標(biāo)地址,重復(fù)步驟②和③;

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

(5)軟件跳轉(zhuǎn)應(yīng)用程序區(qū)

應(yīng)用程序準(zhǔn)備好后,程序需要從BOOT區(qū)跳轉(zhuǎn)到應(yīng)用程序區(qū)首地址處執(zhí)行應(yīng)用程序。這里分為兩步:

①修改中斷向量表位置。由于STM32F107采用ARM Cortex—M3內(nèi)核,該內(nèi)核的系統(tǒng)控制空間中寫中斷向量表的寄存器地址NVIC_VectTaD_ Addr為0xE000ED08,在該地址寫入應(yīng)用程序起始地址即可,本程序應(yīng)用程序起始地址APP_START_ADDRESS為0x08005000。設(shè)計如下:

ldr r0,=0x08005000

ldr r1,=0xe000ed08

Str r0, [r1]

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

;從應(yīng)用程序向量表中載入堆棧指針

ldr r1, [r0]

mov sp,r1

;從應(yīng)用程序向量表中初始化程序指針(PC),并跳轉(zhuǎn)到應(yīng)用程序

;入口

ldr r0, [r0,#4]

bx r0

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

結(jié)語

該方法實現(xiàn)了采用WiFi通信方式,通過TFTP協(xié)議將編譯后的軟件文件下載到終端設(shè)備,完成軟件升級的功能。在嵌入式系統(tǒng)領(lǐng)域,程序升級可以方便地對程序缺陷進(jìn)行彌補(bǔ)和修改,或?qū)Τ绦蚬δ苓M(jìn)行擴(kuò)充,運用該方法可極大提高產(chǎn)品的生存周期,節(jié)省對項目的維護(hù)成本和提高了開發(fā)效率。

基于該方法已成功設(shè)計出可遠(yuǎn)程在線升級程序的車輛管理系統(tǒng)。使用情況表明,該系統(tǒng)能穩(wěn)定、可靠地工作,且為系統(tǒng)的維護(hù)節(jié)省了大量的工作量,對同類型的嵌入式設(shè)備軟件在線升級設(shè)汁有很好的參考價值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉