ESA2GJK1DH1K升级篇: 测试STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级
Posted yangfengwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESA2GJK1DH1K升级篇: 测试STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级相关的知识,希望对你有一定的参考价值。
实现功能概要
前面的版本都是,定时访问云端的程序版本,如果版本不一致,然后下载最新的升级文件,实现升级.
这一节,在用户程序里面加入MQTT通信,执行用户程序的时候,通过接收MQTT的升级命令实现升级
注意:BootLoader程序还是用以前的程序.
一开始设计这个升级篇的时候,我就规定好了大的框架
BootLoader只是负责升级,其它一概不管
用户程序只是写入升级标志,然后重启,所有的升级步骤全部交给BootLoader!
协议:
一,MQTT上位机通过MQTT发送获取设备信息指令 {"data":"updata","cmd":"DeviceInfo"} //设备接收到回复 {"data":"updata","model":"STM32_AT8266","version":"1.0.2"}//假设现在的型号是STM32_AT8266,当前设备硬件版本是1.0.2 二,MQTT上位机根据型号使用http访问云端存放的记录更新信息的文件 "型号" 列如:"http://47.92.31.46/hardware/"+STM32_AT8266+"/"+"updatainfo.txt" 假设updatainfo.txt文件信息是 {"version":"1.0.4","details":"1,优化了部分BUG;2,测试升级;3,支持升级STM32程序;4,修改XXXBUG"} 注:版本号最大设置为20字节 三,MQTT上位机对比版本号,如果不一致,则发送以下指令 注:测试时可直接发送此指令 {"data":"updata","cmd":"start"} //设备接收到回复 {"data":"updata","status":"start"} 四,设备连接上MQTT发送的第一条消息为 "{"data":"status","status":"online","UpdataStatus":"UpdataSuccess","DeviceVersion":"1.0.4"}" UpdataSuccess 更新成功 RunAppErr 上次更新的程序没有运行起来 NoUpdata 没有更新 DataAddressError 更新的数据有错误 DataOverflow 数据溢出 DataDownloadTimeout 下载超时 MainTimeout 更新超时 FlashWriteErr 写Flash失败 FlashEraseErr 擦除Flash失败 VersionLenErr 版本号长度 等于0 或者大于20 VersionAlike 版本号一致,是最新程序,无需更新 ---------------------------------------------------------------- 控制指令,查询继电器状态 {"data":"switch","bit":"1","status":"-1"} 设备回复 {"data":"switch","bit":"1","status":"1"} 或者 {"data":"switch","bit":"1","status":"0"} 六,控制指令,控制继电器吸合 {"data":"switch","bit":"1","status":"1"} 设备回复 {"data":"switch","bit":"1","status":"1"} 七,控制指令,控制继电器断开 {"data":"switch","bit":"1","status":"0"} 设备回复 {"data":"switch","bit":"1","status":"0"}
测试
制作完代码,哈,
详细的代码制作步骤(这节代码是如何来的)
拷贝使用Wi-Fi模块定时升级的 BootLoader程序
修改BootLoader
为了和以前升级程序区别开来,取一个新名字 STM32_MQTT_AT8266
BootLoader程序只需要修改这个就可以,修改完了.
下面看用户程序
由于在用户程序里面,MQTT处理程序是比较多的,升级处理程序就一点点
为了移植的方便快捷一点,咱呢,就在实现MQTT的程序上加上升级处理程序
一,拷贝基础篇的Wi-Fi模块使用AT指令实现MQTT通信的单片机程序源码,到咱现在的目录
拷贝定时访问升级的用户程序的IAP文件 stmflash文件到现在的用户程序工程里面
把文件添加进来
我先吃饭...................
以上是关于ESA2GJK1DH1K升级篇: 测试STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级的主要内容,如果未能解决你的问题,请参考以下文章
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于GPRS模块(air202)AT指令TCP透传方式,MQTT通信控制升级(V1.0)
ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于(Wi-Fi模块AT指令TCP透传方式),MQTT通信控制升级(含有数据校验)
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级-BootLoader程序制作过程(V1.0)
ESA2GJK1DH1K升级篇: STM32远程乒乓升级,基于Wi-Fi模块AT指令TCP透传方式,MQTT通信控制升级(含有数据校验)-APP用户程序制作过程