日韩一区二区在线观看视频,我们高清日本免费观看,99精品视频一区二区三区,中文人妻熟妇精品乱又伧天美传媒

技術(shù)方案

首頁(yè) >> 方案 >>  解決方案 >>  技術(shù)方案

基于樂鑫ESP8266的STM32+WIFI的OTA案例分享

2021年06月01日來源:艾拉比發(fā)布分享朋友圈
0

在之前文章中(STM32L425RE的差分升級(jí)能力構(gòu)建、【艾拉比】基于移遠(yuǎn)BC28的STM32+NB-IOT的OTA案例分享),我們演示了如何利用艾拉比的差分技術(shù)通過NB網(wǎng)絡(luò)升級(jí)STM32的APP固件。本篇案例我們將換個(gè)方向,詳細(xì)介紹如何通過WIFI模組將STM32F469的下載差分包,并且利用艾拉比的差分技術(shù)進(jìn)行升級(jí)。


升級(jí)方案的設(shè)計(jì)


考慮到ESP8266模組內(nèi)部的空間資源都十分的充足,所以我們?yōu)檫@個(gè)案例的升級(jí)設(shè)計(jì)了兩套升級(jí)方案,下面我們分別展開來描述這兩種方案。


(1) WIFI模組透?jìng)鞑罘职?jí)MCU


如下面框架圖所示,與NB網(wǎng)絡(luò)下升級(jí)MCU的方式一致,需要在MCU里內(nèi)置艾拉比的UA和UC的程序,同樣MCU上也要規(guī)劃一塊區(qū)域來存放差分包。


image.png


基于上面的軟件框架,我們將基于HTTP協(xié)議來和OTA服務(wù)器進(jìn)行交互通信,以下是整個(gè)升級(jí)的流程圖:


image.png


從上圖中我們可以看到整個(gè)升級(jí)的流程分以下幾個(gè)步驟:


1. STM32透過ESP8266,向OTA服務(wù)器發(fā)起注冊(cè)請(qǐng)求。OTA服務(wù)器透過ESP8266下發(fā)注冊(cè)結(jié)果,STM32將這些注冊(cè)信息保存下來


2. STM32透過ESP8266,向OTA服務(wù)器發(fā)起檢測(cè)版本的請(qǐng)求。OTA服務(wù)器透過ESP8266下發(fā)新版本的信息,這其中包含了差分包的下載地址


3. STM32基于得到的下載地址,透過ESP8266向OTA服務(wù)器發(fā)送下載差分包請(qǐng)求。OTA服務(wù)器會(huì)根據(jù)請(qǐng)求將差分包透過ESP8266下發(fā)給STM32,STM32在收到后將這些數(shù)據(jù)存儲(chǔ)在差分包存儲(chǔ)區(qū)域


4. STM32在下載完差分包并經(jīng)過校驗(yàn)后,透過ESP8266上報(bào)下載升級(jí)包的結(jié)果給到OTA服務(wù)器。OTA服務(wù)器透過ESP8266下發(fā)上報(bào)結(jié)果


5. STM32在接收到云端返回的上報(bào)結(jié)果后,進(jìn)行軟重啟,啟動(dòng)UA程序


6. STM32運(yùn)行UA程序,進(jìn)行差分升級(jí),升級(jí)完成后存儲(chǔ)本次升級(jí)的結(jié)果并進(jìn)入系統(tǒng)


7. STM32透過ESP8266上報(bào)本次升級(jí)的結(jié)果給到OTA服務(wù)器。OTA服務(wù)器透過ESP8266下發(fā)上報(bào)結(jié)果


8. STM32在接收到云端返回的上報(bào)結(jié)果后,斷開網(wǎng)絡(luò),至此整個(gè)升級(jí)流程結(jié)束


(2) WIFI內(nèi)部完成MCU升級(jí)回刷MCU方案


如下面框架圖所示, 這個(gè)方案需要在ESP8266內(nèi)置入U(xiǎn)C和UA程序,并且在ESP8266內(nèi)劃分兩個(gè)區(qū)域,一個(gè)區(qū)域用于存儲(chǔ)下載的差分包,另外一個(gè)用于臨時(shí)存儲(chǔ)MCU的部分固件。


image.png


基于上面的軟件框架,我們將基于HTTP協(xié)議來和OTA服務(wù)器進(jìn)行交互通信,以下是整個(gè)升級(jí)的流程圖:


image.png


從上圖中我們可以看到整個(gè)升級(jí)的流程分以下幾個(gè)步驟:


1. STM32向ESP8266發(fā)起升級(jí)請(qǐng)求


2. ESP8266通過獲取的STM32的信息,向OTA服務(wù)器發(fā)送注冊(cè)請(qǐng)求


3. OTA服務(wù)器返回注冊(cè)信息給到ESP8266,ESP8266將MCU的注冊(cè)信息存儲(chǔ)下來


4. ESP8266向OTA服務(wù)器發(fā)起STM32的檢測(cè)請(qǐng)求, OTA服務(wù)器返回STM32

新版本的信息


5. ESP8266根據(jù)獲取的新版本信息,向OTA服務(wù)器發(fā)起下載差分包的請(qǐng)求,OTA服務(wù)器收到請(qǐng)求后下發(fā)差分包。


6. ESP8266收到差分包,并校驗(yàn)通過后,向OTA服務(wù)器發(fā)送下載情況上報(bào)請(qǐng)求,OTA服務(wù)器收到后返回上報(bào)結(jié)果。


7. ESP8266中的UC程序通知UA程序開始進(jìn)行STM32的差分升級(jí)


8. ESP8266中的UA程序完成MCU的固件升級(jí)后,向STM32請(qǐng)求回刷固件,在STM32允許刷寫后,進(jìn)行固件回刷


9. ESP8266中UA程序在STM32升級(jí)完成后,存儲(chǔ)升級(jí)的結(jié)果,并通UC程序進(jìn)行升級(jí)結(jié)果上報(bào),UC在收到通知后,向OTA服務(wù)器上報(bào)STM32升級(jí)的結(jié)果,OTA服務(wù)器收到后返回上報(bào)的結(jié)果給到ESP8266


10. ESP8266收到OTA服務(wù)器下發(fā)的上報(bào)結(jié)果后,斷開網(wǎng)絡(luò),至此整個(gè)升級(jí)流程結(jié)束。


從上面兩個(gè)升級(jí)方案中,MCU的升級(jí)都采用的是差分升級(jí),這相較于傳統(tǒng)WIFI下的MCU升級(jí)優(yōu)勢(shì)在于:


(1)升級(jí)包下載的時(shí)間大大減小,同時(shí)也降低了升級(jí)的功耗。


(2) 升級(jí)的時(shí)間也會(huì)比整包升級(jí)的時(shí)間也大為減小,整體提升了升級(jí)的效率。下面我們?cè)賮砜匆幌?,整個(gè)設(shè)備升級(jí)的實(shí)際過程。



設(shè)備操作流程



從下面兩張圖上我們看到,一張圖是STM32F469的Discovery開發(fā)板子,一張圖是ESP8266的串口模塊,我們將通過串口線將兩個(gè)設(shè)備連接在一起,對(duì)STM32開發(fā)板進(jìn)行差分升級(jí)。


image.png

image.png


這個(gè)STM32的開發(fā)板是支持觸屏操作的,所以首先我們點(diǎn)擊屏幕上的“Check for Update“發(fā)起升級(jí)流程。


image.png


點(diǎn)擊屏幕后,OTA服務(wù)器很快返回了新版本的信息,屏幕這時(shí)候也顯示了新版本的差分包大小。


image.png


檢測(cè)到新版本后,設(shè)備會(huì)自動(dòng)去請(qǐng)求下載差分包,從下面兩張圖中我們可以從屏幕上看到下載的進(jìn)度顯示。


image.png


image.png


從上圖來看,差分包已經(jīng)下載完成,設(shè)備會(huì)立即向OTA服務(wù)器上報(bào)這個(gè)下載的結(jié)果。我們也可以從PC上的Debuger工具中看到這個(gè)過程的log


圖片


差分包下載完成后,設(shè)備會(huì)進(jìn)行重啟,進(jìn)入了bootloader,在這個(gè)階段,集成在設(shè)備bootloader里的UA程序會(huì)進(jìn)行差分升級(jí)的工作,我們從下面兩張圖來看一下這個(gè)過程


image.png


image.png


從上圖可以看到,屏幕上顯示升級(jí)進(jìn)度已經(jīng)完成,升級(jí)已經(jīng)完成,我們也可以在PC端的Debuger工具中看到這個(gè)過程


圖片


接下來,設(shè)備會(huì)進(jìn)入APP,我們?yōu)榱藚^(qū)別版本特意將這個(gè)版本的屏幕顏色做了改動(dòng),大家可以從下面兩張圖上看到


image.png


我們從屏幕上可以看到,這個(gè)時(shí)候軟件的版本好已經(jīng)升級(jí)為2.0,設(shè)備自動(dòng)開始

升級(jí)結(jié)果的上報(bào)并且已經(jīng)上報(bào)成功,從PC端的Debuger軟件中我們也能看到這個(gè)過程


image.png


升級(jí)結(jié)果的上報(bào)并且經(jīng)上報(bào)成功,從PC端的Debuger軟件中我們也能看到這個(gè)過程


圖片


至此,STM32F469的這個(gè)開發(fā)板已經(jīng)差分升級(jí)成功,升級(jí)流程結(jié)束。從這幾個(gè)階段的log來看,這次的差分包大小是1875個(gè)字節(jié),整個(gè)固件的大小是87KB,下載的差分包的時(shí)間是3秒,升級(jí)的時(shí)間是11秒,不過這個(gè)時(shí)長(zhǎng)也受限于log的串口打印以及模組的AT交互的消耗,如果在商用批量產(chǎn)品使用中不考慮這些限制,整個(gè)升級(jí)需要的時(shí)長(zhǎng)、消耗的功耗都將進(jìn)一步大幅降低。



  • 商務(wù)熱線

    4008-210-928

  • 聯(lián)系郵箱

    contact@abupdate.com

  • 艾拉比微信公眾號(hào)

    企業(yè)微信客服