国产98在线 免费、,最近免费中文字幕大全免费版在线,性一乱一搞一交一伦一性,亚洲国产综合欧美在线一区二区,性欧美交XXXXX视频

技術(shù)方案

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

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

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

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


升級方案的設(shè)計


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


(1) WIFI模組透傳差分包升級MCU


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


image.png


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


image.png


從上圖中我們可以看到整個升級的流程分以下幾個步驟:


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


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


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


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


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


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


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


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


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


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


image.png


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


image.png


從上圖中我們可以看到整個升級的流程分以下幾個步驟:


1. STM32向ESP8266發(fā)起升級請求


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


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


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

新版本的信息


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


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


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


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


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


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


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


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


(2) 升級的時間也會比整包升級的時間也大為減小,整體提升了升級的效率。下面我們再來看一下,整個設(shè)備升級的實(shí)際過程。



設(shè)備操作流程



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


image.png

image.png


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


image.png


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


image.png


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


image.png


image.png


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


圖片


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


image.png


image.png


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


圖片


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


image.png


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

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


image.png


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


圖片


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



  • 商務(wù)熱線

    4008-210-928

  • 聯(lián)系郵箱

    contact@abupdate.com

  • 艾拉比微信公眾號

    企業(yè)微信客服