1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(方案总揽)

这节只是简短介绍,详细请日后看具体文章html

 

单片机全部BUG ,及其修正服务器

1,执行用户程序错误时没有正常切换执行程序,忘记了增长 RunUser = GetRunUser();网络

    

 

 

 

 

 一,远程升级WIFI模块或者GPRS模块内部程序lua

Wi-Fi或者GPRS默认http访问Aupdata0.lua~Aupdata9.lua 文件  而后下载运行url

协议以下:spa

设备订阅的主题

"user/设备MAC地址"      列如:  "user/dc:4f:22:11:5d:33"

设备发布的主题

"device/设备MAC地址"    列如:  "device/dc:4f:22:11:5d:33"



一,上位机获取设备型号
//获取设备型号
{"data":"updata","cmd":"model"}

//设备回复
{"data":"updata","status":"model","model":"wifi1"}//假设如今的型号是WIFI1


二,上位机根据型号http访问更新的信息
                                    "型号"
列如:"http://47.92.31.46/hardware/"+wifi1+"/"+"updatainfo.txt"


三,上位机把云平台的更新信息按照如下格式发给设备
/********************************************
上位机发送给设备平台的版本号和更新文件的位置(设备先记录下来)
{"data":"updata","cmd":"info","version":"1.0.1","url":"http://47.92.31.46/hardware/wifi1"}


设备接收到信息对比版本号之后回复
{"data":"updata","status":"unlike",version:XXXX} 或 {"data":"updata","status":"alike",version:XXXX} //回复是否是和发给它的版号一致,并回复本身的版本号
*********************************************/


/**********************************
上位机发送给设备升级指令
{"data":"updata","cmd":"start"}    


设备回复
{"data":"updata","status":"start"} //开始更新
**********************************/



更新过程当中设备发送更新进度

{"data":"updata","status":"starting","percent":"百分比"} 百分比为数字 


更新完成设备发送
{"data":"updata","status":"finish"}


更新过程当中的错误,设备发送
{"data":"updata","status":"error","code","-1"}//HTTP request failed
{"data":"updata","status":"error","code","-2"}//HTTP request data error



更新完成之后用新的版本号替换掉旧的版本号



注:
升级程序文件和关于升级的内容(内容里面含有版本号)放在云平台
APP或者wed或者上位机经过http获取关于升级的内容

设备经过http获取升级程序文件

 

 

二,远程升级STM32单片机程序(在WIFI或者GPRS实现基本的远程控制基础上增长的功能)code

APP发送的数据,网络模块自动转发给单片机htm

网络模块http访问单片机程序文件,而后把访问的数据发给单片机blog

//APP发送获取设备型号(APP点击检查更新的时候)
{"datemcu":"updata","cmd":"model"}

//STM32设备回复
{"datemcu":"updata","status":"model","model":"STM32U"}//STM32U 设备的型号


二,上位机根据型号http访问更新的信息
             实际用域名代替           "型号"
列如:"http://47.92.31.46/hardware/"+STM32U+"/"+"updatainfo.txt"


//APP发送给设备平台的版本号和更新文件的位置,该url由WIFI模块进行记录
{"datemcu":"updata","cmd":"info","version":"1.0.1","url":"http://47.92.31.46/hardware/STM32U"}


//STM32回复是否是和发给它的版号一致,并回复本身的版本号
{"datemcu":"updata","status":"unlike",version:XXXX} 或 {"datemcu":"updata","status":"alike",version:XXXX} 
或者 {"datemcu":"updata","status":"unlike","version":"error"} //单片机接收版本出错

APP接收到此信息,提示用户是最新版本,或者提示此次升级的内容,用户能够选择升级

//APP发送给设备升级指令
{"datemcu":"updata","cmd":"start"}


1,单片机运行在IAP程序:(说明没有更新过)

stm根据本身当前的状况擦除Flash后回复
{"datemcu":"updata","status":"start","file":"bin1"} /
{"datemcu":"updata","status":"start","file":"bin2"}

同时置一个标志位,让串口下次接受的http数据直接写入Flash
Wi-Fi接收到该指令,中止MQTT透传(60S超时),防止多余的数据写入串口,
若是检测到TCP断开链接,容许MQTT透传

Wi-Fi接收到该指令根据上面的url,
链接TCP服务器(http服务器)
连接成功之后http访问bin1文件或者bin2文件

2,单片机运行在用户程序:
单片机接收到此命令后写入一个更新标志到Flash,复位重启
而后IAP判断有这个标志,先清除这个标志,而后执行上面的  1,单片机运行在IAP程序

 

 

三,其它版本远程升级单片机程序get

 

 

 

最重要的是思路和方案,其它的都只是配合.

 

 

板子连接

https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.3e3b1deb80xzYz&id=569295486025

 

http://www.javashuo.com/article/p-xqfrhsml-gm.html

相关文章
相关标签/搜索