機能の要約を実現
ブートローダプログラム:
あなたがフラグを更新しない場合は、ユーザプログラムをロードしようとします。
更新フラグ場合は、STM32制御WIFIモジュールは、TCPのWebサーバーを接続し、再起動後にFlashで書かれたプログラムファイルを、取得するためのプロトコルを取得送信するために!
各ライトスイッチフラッシュフラッシュする位置を書き込み、状態検出を追加、更新、(ロールバック)プログラムのバージョンが実行されているアップデートに失敗しました
APPのユーザプログラム:
MQTT処理データを受信した更新指示場合、更新フラグがセットされ、受信し、再始動
契約書に指定されたMQTT通信のアップグレード:
WIFI设备订阅的主题 "user/设备MAC地址" 列如: "user/dc:4f:22:11:5d:33" WIFI设备发布的主题 "device/设备MAC地址" 列如: "device/dc:4f:22:11:5d:33" 一,上位机通过MQTT发送获取设备信息指令 {"data":"updata","cmd":"DeviceInfo"} //设备回复 {"data":"updata","model":"STM32_AT8266","version":"1.0.2"}//假设现在的型号是STM32_AT8266,当前设备硬件版本是1.0.2 二,上位机根据型号使用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字节 三,上位机对比版本号,如果不一致,则发送以下指令 注:测试时可直接发送此指令 {"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"}
Flash配置:
测试------把程序bin文件,和记录更新信息的文件放在云端
1.记录更新信息的文件
2.用户程序1 bin文件位置
\
3.用户程序2 bin文件位置
4. 网站根目录下的 hardware文件夹 -> STM32_AT8266文件夹
测试------下载 BootLoader 程序