04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_B/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

 

说明

 

这节测试一下STM32+ESP8266实现利用http远程更新STM32程序

升级方式为:备份升级

STM32使用http获取云端info.txt文件,从文件里面获取远端固件版本,固件下载地址等信息

如果和自身版本号不一致,固件下载地址写入flash,设置更新标志,重启,

BootLoader提取固件下载的地址负责升级程序!

 

info.txt文件内容:

{"version":"0.0.0","url":"http://mnif.cn/ota/hardware/STM32ESP8266BK/user_crc.bin","info":"1.解决了部分BUG
2.优化了部分程序"}

 

提示

1.默认使用官方服务器提供的路径下载测试,下面说明的测试流程,

如果自己还没配置好服务器,可使用默认提供的参数测试!

 

2.记得修改控制生成bin文件的指令,否则编译报错

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

3.和基础篇一样,串口1作为日志输出口,串口2和ESP8266相连接(杜邦线连接)

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

BootLoader

1.打开BootLoader程序

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

2.设置下载的程序文件的地址(可以先默认使用该地址测试)

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

 

 

当前程序文件在本人服务器的放置路径如下(后面会说明怎么生成user_crc.bin文件)

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

下载BootLoader程序到开发板

1.下载以后打印如下

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 falsh分配情况

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

用户程序

 1.打开用户程序

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 2.修改获取云端固件信息文件的地址(可以先默认使用该地址测试)

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

云端固件信息文件在本人服务器的放置路径如下(后面有说明怎么生成info.txt文件)

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

提示

BootLoader默认是加载用户程序运行

后面咱分为两种情况:

人为下载进去用户程序和不下载进去用户程序

一,人为下载用户程序到开发板(注意下载细节)

1.上面已经下载了BootLoader程序,为了再次下载用户程序不覆盖掉BootLoader程序

需要下载的时候做一下配置.

需要使用下载器 ST-Link  / Jlink 

 

2.调整用户程序的下载设置

只擦除使用的部分

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

3.注意检查下其它配置是否正确

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

4.记得修改路径,否则会报错

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

5.然后点击下载

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

6.运行时打印的日志如下(程序是每隔10S发送get指令获取 info.txt文件)

当前程序版本 0.0.0

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

 

7.连接服务器需要保证wifi可以上网

如果WIFI没有配网,可以使用基础控制篇的APP/微信小程序按照基础篇教程给WIFI配网

为了方便测试,可以直接给调试串口发送连接路由器指令

指令:  {"ssid":"QQQQQ","pwd":"11223344"}

QQQQQ :自家路由器名称   pwd: 自家路由器密码

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

8.正常运行下部分截图说明

发送http请求 info.txt文件

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

如果和当前程序版本不一致

1.提取url写入flash,置位升级标志,重启

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

以上是BootLoader检测到有升级标志,则备份源程序,然后发送http指令获取程序文件

 

升级完成以后,运行新程序.

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 提示:新程序和当前用户程序功能一样,只是设置的版本号不一样

 

二,只下载BootLoader的情况下测试

1.如果客户不能按照上面的方式下载用户程序

BootLoader程序里面也是可以测试升级

实际上该功能是为了预防程序彻底崩溃而做!

注意:程序本身就支持自动回滚,崩溃处理基本上用不到!

 

2.下载好BootLoader程序以后,需要用户按照下面的步骤操作

① 按下PB5(不要松开)

② 复位STM32(或者断电上电)

③ PB5按下大约10S,指示灯500ms闪耀,此时松开PB5,程序进入崩溃处理状态

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

3.客户可以用串口调试助手设置wifi模块连接的路由器

{"ssid":"QQQQQ","pwd":"11223344"}

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

4.发送 updata start 指令

发送了 updata start指令以后单片机会直接获取更新程序文件,执行更新操作

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

提示:

1.崩溃处理状态下,也支持重新设置程序文件下载地址

{"url":"http://mnif.cn/ota/hardware/STM32ESP8266PP/user_crc.bin"}

当前是按照内部默认路径.

2.该状态下也支持APUConfig配网,配网结束以后也会自动重新升级

 

 

应用到自己的服务器

 

1,在自己的网站根目录建立几个文件夹

关于本人服务器文件夹解释:

html:网站根目录

ota -> hardware : ota升级,用于升级硬件端程序

STM32ESP8266BK: 作为产品的型号,和程序里面设置的型号保持一致!!!后面的控制升级方式会用到这个型号

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

2.打开BootLoader程序的 IAP.c

修改一下 http://mnif.cn/ota/hardware/STM32ESP8266BK/    和上面服务器路径保持一致

后面的是具体的程序文件名称,可随意指定.

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

3.打开用户程序,修改info.txt文件获取的地址

可以和上面的程序地址设置一样,也可以不一样,info.txt里面有版本号,程序下载路径,具体下面有介绍

型号和服务器上保持一样

提升一个版本号,便于升级测试

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

 

 

 

 

编译用户程序

1.默认会生成 user.bin文件

 

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

2.打开OTA Tools上位机软件

 

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

提示:该软件是修改bin文件加入校验(使得升级稳定可靠)

 

3.按照红框选择配置

 

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

 

4.选择用户程序生成的 bin文件

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

5.点击 生成固件

 

 

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

6.将在user.bin目录生成info.txt 和 user_crc.bin文件

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 info.txt文件(utf8编码)

{"version":"0.0.1","url":"http://mnif.cn/ota/hardware/STM32ESP8266BK/user_crc.bin","info":"1.解决了部分BUG
2.优化了部分程序"}

"version":"0.0.1" 

程序版本号,升级前先访问这个文件,用于对比版本号

url

固件的下载地址,单片机获取此地址,通过访问此地址获取固件程序

info:

当前用不到,APP/微信小程序,点击检查硬件版本,更新时,提示的信息.

user_crc.bin文件

此文件是在user.bin的基础上增加了CRC校验位

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

7.把info.txt 和 user_crc.bin 放到云端服务器

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

8.然后按照一开始的测试步骤测试即可

注意:如果客户事先下载用户程序然后测试,需要保证和云端写的版本不一致!

否则会显示版本一致,不需要升级.

 04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

 

 

备份升级流程图

 

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

 

04-STM32+ESP8266+AIR202远程升级篇-功能1-STM32自动访问升级,基于ESP8266(TCP,HTTP)(备份升级)

上一篇:Python大众点评店铺刷好评


下一篇:【操作系统】线程