04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级) 说明 备份升级流程图 提示 下载BootLoader程序到开发板 提示 一,人为下载用户程序到开发板(注意下载细节) 二,只下载BootLoader的情况下测试 应用到自己的服务器 编译用户程序 用户程序执行详细说明 BootLoader程序执行详细说明 其它细节说明 结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

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

升级方式为:备份升级

我已经把固件文件放在了自己的服务器上

默认使用本人提供的下载路径测试

文件放在了网站根目录html->ota->hardware->STM32W5500BK

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

user_crc.bin  固件程序

该固件程序文件并不是直接可以运行的文件

里面的数据每隔128字节后面增加2位CRC校验位

单片机下载以后每隔130字节校验一下数据,然后把前128字节写入Flash.

加入CRC校验让升级变的稳定可靠.

info.txt文件内容:

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

version:0.0.1  云端固件程序版本

size:15990     固件程序大小(字节)

 url:http://mnif.cn/ota/hardware/STM32W5500BK/user_crc.bin   固件程序下载地址

 info":"1.解决了部分BUG
2.优化了部分程序   使用APP控制升级时,APP的提示信息.

此节代码正常升级过程:

用户程序里面每隔一定时间控制STM32通过W5500使用http的GET指令获取云端info.txt文件

然后从文件里面获取服务器里面的固件程序版本,固件程序大小和固件程序下载地址等信息

如果与自身版本号对比不一致,就把固件程序大小和固件程序下载地址写入flash,然后设置更新标志,重启,

重启执行BootLoader以后,BootLoader程序检测到更新标志,则提取固件下载的地址,

然后使用http下载程序文件,把程序文件写入flash,完成升级.

备份升级流程图

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

提示

1.默认使用本人提供的下载路径测试

后面会说明如何应用到用户的服务器.

2.用户程序配置生成bin文件,

用户根据自己软件的安装路径修改控制生成bin文件的指令,否则编译报错

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

3.跳线帽短接单片机串口1 和 USB转串口模块

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.连接网线(网线另一端连接可以上网的路由器或者交换机)

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

下载BootLoader程序到开发板

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

1.下载以后打印如下

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

falsh分配情况

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

提示

上面已经下载进去了BootLoader程序

后面分为人为下载进去用户程序运行以后执行正常的升级流程

和只下载BootLoader程序的情况下,在BootLoader里面控制升级进去用户程序

然后执行正常的升级流程.

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

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

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

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

 

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

只擦除使用的部分

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.然后点击下载

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

6.运行时打印的日志如下

注:用户程序是在基本控制篇MQTT通信程序的基础上增加了升级处理程序

程序是每隔10S发送get指令获取 info.txt文件

当前程序版本 0.0.0

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 程序内部判断如果和当前程序版本不一致

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

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

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

11,我放到云端的程序就是当前的用户程序,只不过版本设置的不一样

也是每隔10S发送get指令获取info.txt文件,检测一下版本

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

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

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

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

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

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

① 按下PB5(不要松开)

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

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.发送 {"data":updata,"cmd":"start"} 指令

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

(程序文件下载地址按照程序内部默认)

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

5.崩溃处理补充:

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

格式如下:

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

应用到自己的服务器

1,首先确定好程序文件在服务器的路径

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

html:网站根目录

ota: ota升级

hardware : 硬件程序

STM32W5500BK: 作为产品的型号(根据自己的产品型号修改)

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

假设固件程序的名字为 user_crc.bin

然后把该固件文件放到上面的目录中

则固件程序下载地址为:

http://服务器IP地址/ota/hardware/STM32W5500BK/user_crc.bin

 

假设记录固件程序信息文件的名字为 info.txt

然后把该文件放到上面的目录中

则文件下载地址为:

http://服务器IP地址/ota/hardware/STM32W5500BK/info.txt

 

2.打开用户程序的IAP.C文件

1.修改固件程序版本(可随意指定,我设置的为0.0.2)

2.修改产品型号(我设置的为STM32W5500BK,和服务器上面的文件夹对应)

3.修改记录云端固件信息文件下载地址(我的为:http://mnif.cn/ota/hardware/STM32W5500BK/info.txt)

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

3.打开BootLoader程序的 IAP.c,设置下默认的固件程序下载地址

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

编译用户程序

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

2.打开OTA Tools上位机软件

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

3.按照红框选择配置

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

5.点击 生成固件

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

7.把生成的user_crc.bin文件拷贝到服务器

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

8.还差一个info.txt文件

1.我准备了一个模板

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

2.修改版本号(和用户程序里面设置的一样)

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

3.修改固件程序大小(OTA Tools_1.0.5提示信息里面有这个大小)

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.修改固件程序下载地址(和服务器上面的保持一致)

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

5.最后的提示信息不需要更改,当前用不到

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

9.把info.txt文件也拷贝到服务器

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

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

注意:如果用户是自行下载进去当前的用户程序以后测试,

记得修改下版本,让本地版本和服务器上面的版本不一样.

一样的话会提示版本已是最新不需要升级.

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

用户程序执行详细说明

1.用户程序就做三件事情

一是解析下用户设置的info.txt文件路径

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

上面的程序是解析  char IAPUrlUserInfoPath[IAPUrlPathLen]="http://mnif.cn/ota/hardware/STM32W5500BK/info.txt";

IAPStructValue.SSLEN    :0-http   1-https

IAPStructValue.IP   :IP地址或者域名  解析上面的为:mnif.cn

IAPStructValue.Port   :端口号  如果用户不指定,http默认80端口,https默认443端口

IAPStructValue.Path  :路径     /ota/hardware/STM32W5500BK/info.txt

二是处理更新状态变量

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

从上面的流程图可知:写完程序以后BootLoader写入更新状态为 0x01

重启以后,BootLoader判断是0x01 写入 0xFF

用户程序需要清除这个状态,如果不清除0xFF

那么再次重启以后,BootLoader判断是0xFF便会执行回滚操作!

提示:用户应该在认为程序执行没有错误的地方调用 

IAPUpdateDispose();

如果期间有了错误导致了重启,BootLoader便自动回滚!

三是每隔一定时间获取云端的info.txt文件信息,检查更新

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

上面的程序便是解析info.txt文件里面的内容

对比版本号,如果版本号不一致则把固件程序大小,固件程序下载地址存储到Flash

然后设置更新标志,重启.

BootLoader程序执行详细说明

1.BootLoader程序执行相对比较复杂.

为了便于客户移植使用,程序整体封装成了包,后面会有相应的移植教程,供用户参考移植

2.检测是否进入崩溃处理

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

3.更新的所有初始化和崩溃处理都在这个里面

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.获取固件文件大小,固件程序下载地址

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

5.如果有更新标志 ,备份程序

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

6.没有更新标志便检测更新状态,如果更新状态有错误则执行回滚操作

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

6.如果更新状态是刚升级完程序,则写入0xFF,执行主循环以后就加载用户程序运行了

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

7.如果有更新标志,控制W5500连接服务器

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

8,连接上服务器以后,置位连接标志

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

9.如果连接上Web服务器,则发送获取程序文件指令

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

9.发送完上面的获取程序文件指令以后,服务器便下发程序文件

如果判断接收到了 Web服务器返回的数据,写入缓存

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

10,只要环形队列里面有数据,则取出来写入flash

如果到达校验个数,则提取先前存储的数据进行校验

注意:并不是先校验再存储,而是先存储再提取校验!

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

11,判断处理接收完数据

环形队列没有了数据,如果Flash里面记录的文件个数不是0,而且和接收的数据个数一致,就认为接收完了数据

如果没有存储文件个数,如果超过一定时间环形队列没有数据也认为接收完了数据.

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

11,程序里面有下载超时和整体运行超时检测

下载超时:只有在确认开始写入程序文件的时候才运行,每次写入程序文件会清零.

主要解决接收一半程序便不再接收的问题

整体运行超时:该超时只要执行BootLoader程序便一直运行

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

客户可以在IAP.h修改默认的超时时间

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

12,程序里面有个判断接收数据超时时间

当前设置的是3S,如果模块延迟较高,客户需要调整这个时间,增加更新成功率!

建议是3-5S,实在是延迟过高的根据自己的情况设置.

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

其它细节说明

1.再过一遍流程

用户程序get指令获取info.txt文件的内容

从内容里面提取版本号

如果版本号和本地的不一致

则接着提取size(程序文件大小),url(固件下载的地址) 存储到flash,置位升级标志,重启

BootLoader执行以后从Flash里面提取size,url.然后根据url获取程序文件

2.BootLoader从Flash里面提取size,url解析部分

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

 以上程序会把用户存储的url解析处理

假设url是 http://mnif.cn/ota/hardware/STM32W5500BK/user_crc.bin

IAPStructValue.SSLEN = 0;(如果开头是http则为0,如果是https则为1)

IAPStructValue.IP = "mnif.cn"

IAPStructValue.Port = 80 (如果开头是http则为80,如果是https则为443,如果指定了端口则按照指定的)

IAPStructValue.Path =  "/ota/hardware/STM32W5500BK/user_crc.bin"

3.再次解析IAPStructValue.IP

w5500连接服务器之前,如果地址是域名,则需要先执行DNS解析域名,获取IP地址

如果地址是字符串型IP地址,则需要转成十进制.

实际上最终的IP地址存储在  IAPStructValue.IPValue 数组里面

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

4.在前面的文章中说过一个事情:

凡是在BootLoader里面使用中断,跳转到用户程序以后同样有效

BootLoader里面使用了,定时器2;  串口1,2,3接收/发送/空闲中断; 看门狗.

为了便于用户移植使用,在加载用户程序之前清除了除了看门狗以外的所有中断.

用户只需在用户程序里面打开开门狗.具体看后面的移植使用部分

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

  

5.http / https 访问与用户填写的url有关

http://mnif.cn/ota/hardware/STM32ESP8266PP/            http访问,端口80          
https://mnif.cn/ota/hardware/STM32ESP8266PP/          https访问,端口443        
http://mnif.cn:8080/ota/hardware/STM32ESP8266PP/   http访问,端口8080

https://mnif.cn:888/ota/hardware/STM32ESP8266PP/    https访问,端口888

注:当前底层单片机支持https访问下载,但是Web服务器还需要配置

解析函数位置(BootLoader IAP.c):

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

6.关于flash区域分配

客户可以在 stmflash.h里面设置flash分配

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

调整以后,可以查看日志查看具体地址信息

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

然后根据上面打印的信息调整用户程序参数

04-STM32+W5500+AIR202远程升级方案-功能1-STM32+W5500实现利用http远程更新STM32程序(定时访问升级,备份升级)
说明
备份升级流程图
提示
下载BootLoader程序到开发板
提示
一,人为下载用户程序到开发板(注意下载细节)
二,只下载BootLoader的情况下测试
应用到自己的服务器
编译用户程序
用户程序执行详细说明
BootLoader程序执行详细说明
其它细节说明
结语

结语

其实此套升级方案经过了大量用户的测试,应用和反馈,然后经过好几次的迭代

才形成了当前的方案.客户当前只需要拿去使用即可.

移植到自己的项目看后面的移植教程.