OTA升级二——阿里云端OTA配置及应用
前文簡述了STM32的無線下載原理及實現(xiàn)方法,在此基礎(chǔ)上,使用阿里云的OTA下載服務提供整包下載功能(注:由于單片機Flash只能全片擦除,無法講寫0的位單獨改為1,因此無法實現(xiàn)差分下載,所以沒有深入研究如何進行差分下載,若有網(wǎng)友實現(xiàn),還請指教)。
一、添加升級包
(注:在進行添加升級包之前,請先跳轉(zhuǎn)到2.2查看如何訂閱Topic,否則將收不到升級的URL消息!!)
如上圖所示,點擊“添加升級包”后,在彈出的界面上設置相關(guān)配置:
- 升級包類型:選擇整包升級,不適用差分
- 升級包名稱:可用中英文、數(shù)字字母等,方便自己查看
- 所屬產(chǎn)品:要升級的三元組所屬的產(chǎn)品類
- 升級包模塊:默認default(注:此處設置關(guān)乎后面升級消息內(nèi)容,若修改請記住修改內(nèi)容)
- 升級包版本號:填寫代碼的版本號(注:此處設置關(guān)乎后面升級消息內(nèi)容,若修改請記住修改內(nèi)容)
- 上傳升級包:上傳.bin文件,不支持.hex文件。(注:若文件后綴為.binery,手動修改后綴名即可)
- 是否平臺驗證:此處點否,否則需要進行一次驗證下載,才可以進入后續(xù)下載,此處若確保程序包正確,即可直接跳過驗證。
二、使用MQTT協(xié)議進行OTA升級
本系統(tǒng)使用MQTTbox進行演示下載,若讀者使用4G模塊開發(fā),僅需按照下文操作,對相應的Topic發(fā)送消息即可。
上圖為阿里云官網(wǎng)指導手冊提供的操作流程圖,如圖所示共分為六個步驟,在此我們僅需執(zhí)行2、3、4、6即可,上報操作進度可以略去。第一步和最后一步上報當前保本信息可以放在代碼的初始化之中進行即可,再完成下載后一定要發(fā)送最新的版本號(添加升級包時填寫的版本號),阿里云才會認為上傳成功。
2.1 上報OTA版本號
請求Topic:
Topic:/ota/device/inform/ {YourProductKey} / {YourDeviceName}
注:{***}括號和里面的內(nèi)容需要替換成需要升級的三元組的產(chǎn)品號和設備號,$、{、}三個符號全部需要替換掉!
請求內(nèi)容:
{
“id”: “001”,
“params”: {
“version”: “1.0.1”,
“module”: “default”
}
}
- id:id號為消息的編號,此處因該從1開始依次累加,不能重復。
- version:版本號(當前單片機內(nèi)所執(zhí)行的程序的版本號)
- module:升級包模塊(若按照筆者教程,在添加升級包時配置寫的時default,該字段直接刪除即可,若自行更改名稱,需要將此處更改為對應的模塊名稱。此處巨坑!阿里云手冊此處直接一筆帶過,導致筆者第一次調(diào)試的時候在這里卡了半天,在搭檔的幫助下才排查出問題)
2.2 接收OTA升級包的URL地址
請求Topic:
Topic:/ota/device/upgrade/{YourProductKey}/{YourDeviceName}
首先先使用MQTT訂閱對應的Topic,然后進入阿里云物聯(lián)網(wǎng)平臺設置升級下發(fā)指令。
點擊完成后,MQTT端會收到設備下發(fā)的URL地址,使用HTTPS協(xié)議訪問并下載即可得到bin文件。
2.3 上報最新的版本號
如圖所示,阿里云上顯示已經(jīng)升級成功。
2.4 上報升級進度
請求Topic:
/ota/device/progress/a1f2CH9BSx7/WD_NJ_Transplanter_1
請求內(nèi)容:
{
“id”: “1286”,
“params”: {
“step”: “99”,
“desc”: “OTA升級完成99%”,
“module”: “default”
}
}
- step:上傳的百分比(整數(shù):1-100)
- -1:升級失敗
- -2:下載失敗
- -3:校驗失敗
- -4:燒錄失敗
- desc:錯誤信息備注
2.5 主動請求檢查是否有更新
請求Topic:
/sys/a1f2CH9BSx7/WD_NJ_Transplanter_1/thing/ota/firmware/get
請求內(nèi)容:
{
“id”: “1287”,
“version”: “1.0”,
“params”: {
“module”: “default”
},
“method”: “thing.ota.firmware.get”
}
- version:默認1.0,不要修改
- module:添加升級包時設置的升級包模塊名稱
- method:默認值,不要修改
返回的Topic:
/sys/a1f2CH9BSx7/WD_NJ_Transplanter_1/thing/ota/firmware/get_reply
👇未盡事宜,請參見阿里云官方文檔。
點擊查看
總結(jié)
以上是生活随笔為你收集整理的OTA升级二——阿里云端OTA配置及应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android OTA 问题分析
- 下一篇: OTA的学习