前文简述了STM32的无线下载原理及实现方法,在此基础上,使用阿里云的OTA下载服务提供整包下载功能(注:由于单片机Flash只能全片擦除,无法讲写0的位单独改为1,因此无法实现差分下载,所以没有深入研究如何进行差分下载,若有网友实现,还请指教)。
(注:在进行添加升级包之前,请先跳转到2.2查看如何订阅Topic,否则将收不到升级的URL消息!!)
如上图所示,点击“添加升级包”后,在弹出的界面上设置相关配置:
本系统使用MQTTbox进行演示下载,若读者使用4G模块开发,仅需按照下文操作,对相应的Topic发送消息即可。
上图为阿里云官网指导手册提供的操作流程图,如图所示共分为六个步骤,在此我们仅需执行2、3、4、6即可,上报操作进度可以略去。第一步和最后一步上报当前保本信息可以放在代码的初始化之中进行即可,再完成下载后一定要发送最新的版本号(添加升级包时填写的版本号),阿里云才会认为上传成功。
请求Topic:
Topic:/ota/device/inform/ {YourProductKey} / {YourDeviceName}
注:{***}括号和里面的内容需要替换成需要升级的三元组的产品号和设备号,$、{、}三个符号全部需要替换掉!
请求内容:
{
“id”: “001”,
“params”: {
“version”: “1.0.1”,
“module”: “default”
}
}
请求Topic:
Topic:/ota/device/upgrade/{YourProductKey}/{YourDeviceName}
首先先使用MQTT订阅对应的Topic,然后进入阿里云物联网平台设置升级下发指令。
点击完成后,MQTT端会收到设备下发的URL地址,使用HTTPS协议访问并下载即可得到bin文件。
请求Topic:
/ota/device/progress/a1f2CH9BSx7/WD_NJ_Transplanter_1
请求内容:
{
“id”: “1286”,
“params”: {
“step”: “99”,
“desc”: “OTA升级完成99%”,
“module”: “default”
}
}
请求Topic:
/sys/a1f2CH9BSx7/WD_NJ_Transplanter_1/thing/ota/firmware/get
请求内容:
{
“id”: “1287”,
“version”: “1.0”,
“params”: {
“module”: “default”
},
“method”: “thing.ota.firmware.get”
}
返回的Topic:
/sys/a1f2CH9BSx7/WD_NJ_Transplanter_1/thing/ota/firmware/get_reply
未尽事宜,请参见阿里云官方文档。
点击查看