说明
这节测试一下STM32通过Air302(NB-IOT)使用http远程下载升级单片机程序
提示:升级程序只是把bin文件数据写到单片机,使用哪种方式获取bin文件数据都是可以的.
这节是使用http的方式获取程序bin文件
我已经把固件文件放在了自己的服务器上
默认使用本人提供的下载路径测试
文件路径: 网站根目录->ota->hardware->STM32Air302BK
user_crc.bin: 是固件程序文件.
该固件程序文件并不是直接可以运行的文件
里面的数据每隔128字节后面增加2位CRC校验位
单片机下载以后每隔130字节校验一下数据,然后把前128字节写入Flash.
加入CRC校验让升级变的稳定可靠.
info.txt文件内容:
version:0.0.1 云端固件程序版本
url:http://mnif.cn/ota/hardware/STM32Air302BK/user_crc.bin 固件程序下载地址
"info":"1.解决了部分BUG 2.优化了部分程序" 使用APP控制升级时,APP的提示信息.
升级过程:
用户程序里面每隔一定时间控制网络模块使用http的GET指令获取云端info.txt文件
然后从文件里面获取服务器里面的固件程序版本和固件程序下载地址等信息
如果与自身版本号对比不一致,就把固件程序下载地址写入flash,然后设置更新标志,重启,
重启执行BootLoader以后,BootLoader程序检测到更新标志,则提取固件下载的地址,
然后使用http下载程序文件,把程序文件写入flash,完成升级.
备份升级流程图
模组连接
NB-IOT模块安装到第三排排母! 模块的5V引脚和底板的5V引脚相连接
单片机都是使用串口2和模组进行通信, 注意去掉ESP8266模组,防止通信冲突.
测试
1.使用下载器下载BootLoader程序
使用usb口打印串口日志
2.下载用户程序到开发板
3.观察日志,说明执行流程
开始运行用户程序,默认提供的用户程序设置的程序版本是0.0.0
用户程序控制模组连接服务器,使用get指令获取获取服务器上的固件信息文件 info.txt
检测到版本不一致以后,把获取的url存储到flash,设置更新标志,重启.
重启之后BootLoader提取url
提示:消息格式是字符串形式的16进制....