(一)B区实现过程
1.首先需要知道的是stm32上电后,需要在2s内通过串口调试助手发送’q’,进入Bootloader模式。然后对当前版本号进行设置。并且配置好串口转wifi模块的参数(wifi连接名称和密码)。配置好相关参数后重启stm32,程序会自动跳转到B区中,B区需要连接上阿里云平台。成功连接后,stm32会上报当前固件版本号,并且每隔60s发送保活包。当阿里云平台收到当前固件版本号后,会与自身的版本号进行对比,如果自身的版本号大于收到的版本号,那么就下发最新固件给stm32。stm32收到下发的固件就会把它存储到C区中,再把OTA升级标志位置1。stm32连接阿里云平台的步骤如下:
① 在BootLoader中连接wifi(有上网的功能)
② 在B区中构建应用层MQTT协议第一个报文:CONNECT报文
③ 发送CONNECT报文鉴权连接,并判断服务器回复的CONNECT报文是否正确
④ 构建和订阅OTA升级相关的SUBCRIBE报文
2.成功连接阿里云平台后,就开始上传当前固件版本号
3. 定时器实现每60s发送保活包”0xc0 0x00”。想要和阿里云平台进行数据交互,就必须遵循阿里云的规则。阿里云规定,在一定时间内设备需要发送保活包(“0xc0 0x00”)。只有发送了保活包,设备才不会离线。
4. 定时器实现源码
① timer.h
② timer.c