前言:
我經(jīng)常在各個(gè)討論群里看到有合宙Air780EP的用戶說:
FOTA遠(yuǎn)程升級(jí)有點(diǎn)難呀~一步錯(cuò)后面就得重新來了,有沒有大佬給個(gè)教程啊?
用戶提需求了,那我們肯定要滿足啊,就連夜趕了一篇
在整理這篇文章之前,是沒有覺得這個(gè)FOTA遠(yuǎn)程升級(jí)有多復(fù)雜的,寫完回頭一看,好家伙,這么多步驟啊!
本篇保姆級(jí)教程,手把手教你FOTA遠(yuǎn)程升級(jí),小白秒變專家!
合宙支持LuatOS功能的模組型號(hào),除本文介紹的Air780EP外, 還有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型號(hào), 本文介紹的FOTA應(yīng)用流程,同樣也適用于這些型號(hào)。
一. 概述
合宙Air780EP具有高度集成、低功耗、強(qiáng)大的開發(fā)支持的特點(diǎn),提供了豐富的接口,支持多種外設(shè)連接,支持標(biāo)準(zhǔn)AT指令和LuatOS開發(fā)。
Air780EP開發(fā)板適用于多種物聯(lián)網(wǎng)應(yīng)用場(chǎng)景,比如智能家居、智能城市、工業(yè)控制、遠(yuǎn)程監(jiān)控等。
在開始之前,我們先學(xué)習(xí)一下FOTA升級(jí)的背景知識(shí):
遠(yuǎn)程升級(jí)是物聯(lián)網(wǎng)中比較常用的功能,本文介紹如何使用Air780EP開發(fā)板進(jìn)行遠(yuǎn)程升級(jí)
LuatOS-Air開發(fā)模式下,固件分為兩部分:core和script
(core為底層固件,script為腳本文件)
遠(yuǎn)程升級(jí)時(shí):可以僅升級(jí)script;可以僅升級(jí)core;也可以同時(shí)升級(jí)core+script
我詳細(xì)介紹了兩種方式的升級(jí)教程:一個(gè)是合宙iot平臺(tái)升級(jí)教程,另一個(gè)是自建第三方服務(wù)器升級(jí)教程。
根據(jù)你的需求,選擇哪一種都可以。
二. 材料準(zhǔn)備
我們升級(jí)前需要的工具準(zhǔn)備有這些:
PC電腦,以及登錄官方IOT后臺(tái) https://iot.openluat.com/
固件和DEMO下載地址 LuatOS軟件包
三. 合宙iot平臺(tái)升級(jí)core+script過程
1. iot平臺(tái)創(chuàng)建產(chǎn)品
登錄合宙iot平臺(tái)
如果沒有賬戶,注冊(cè)一個(gè)賬戶
打開:我的項(xiàng)目->新建項(xiàng)目
復(fù)制PRODUCT_KEY
2. 模塊端腳本修改,生成升級(jí)包
core | 舊版本core | 新版本core |
例子 | LuatOS-SoC_V1001_EC718P.soc | LuatOS-SoC_V1001_EC718P.soc |
要求 | 1、大于等于舊版本core版本號(hào) | 2、新舊版本core支持的功能相同 |
script main.lua | 舊版本 (模塊端本地?zé)浀模?/td> | 新版本 (生成的量產(chǎn)文件,遠(yuǎn)程升級(jí)包) | 要求 |
PROJECT (項(xiàng)目名稱) | fotademo | fotademo | 新舊版本保持一致 |
VERSION (軟件版本號(hào)) | 1.0.0 | 1.0.1 | 大于等于舊版本VERSION |
PRODUCT_KEY (項(xiàng)目密鑰) | Vn7jF7r23yswjfwMa7ZuMsdnuuUC9wC3 | Vn7jF7r23yswjfwMa7ZuMsdnuuUC9wC3 | 和iot平臺(tái)創(chuàng)建的產(chǎn)品 ProductKey保持一致 |
3. 按照新版本的需求,修改main.lua
如下圖所示,PROJECT和PRODUCT_KEY保持不變,PRODUCT_KEY需和服務(wù)器保持一致,VERSION修改為1.0.1
注意事項(xiàng):
1. main.lua 內(nèi)填寫版本號(hào)要符合 x.y.z 形式, 其中 x/y/z 均為數(shù)值, 不限于個(gè)位數(shù);
2. 若fota使用合宙iot平臺(tái), 版本號(hào)中的 y 會(huì)被忽略, 推薦寫0, 務(wù)必留意
4. 使用Luatools生成bin文件差分包
注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本僅支持生成sota文件
只升級(jí)腳本,差分包制作流程如下:
固件和DEMO下載地址 LuatOS軟件包,這里下載的是LuatOS-SoC@EC718P V1001下面的core_V1001.zip軟件包。下載對(duì)應(yīng)軟件包后按如下步驟生成對(duì)應(yīng)的差分包。
在Luatools目錄下的SOC量產(chǎn)及遠(yuǎn)程升級(jí)文件下,找到EC718P文件夾,打開后綴名為.bin的文件fotademo_1001.1.1_LuatOS-SoC_EC718P.bin,這個(gè)就是文件差分包。
需要升級(jí)底層CORE,差分包制作流程如下:
生成新版本的量產(chǎn)固件,如下所示
根據(jù)新舊固件生成對(duì)應(yīng)差分文件,如下所示
a. 點(diǎn)擊選項(xiàng)及工具選項(xiàng),選擇升級(jí)包制作工具
b. 選擇對(duì)應(yīng)文件,點(diǎn)擊開始執(zhí)行生成對(duì)應(yīng)差分文件
c. 生成的差分文件
5. 在合宙iot平臺(tái)配置升級(jí)包
進(jìn)入iot平臺(tái),打開我的項(xiàng)目->固件列表->創(chuàng)建固件
選擇新固件升級(jí)文件
如果升級(jí)全部設(shè)備勾選的是否,則需要添加需要升級(jí)的模塊imei
6. 模塊開機(jī),完成升級(jí)
燒錄舊版本的模塊開機(jī)后,連接升級(jí)服務(wù)器,下載差分升級(jí)包,自動(dòng)重啟,重啟過程中完成固件升級(jí),整個(gè)過程的關(guān)鍵日志如下圖所示
7. 云平臺(tái)查看升級(jí)日志
登錄云平臺(tái),選擇對(duì)應(yīng)設(shè)備升級(jí)的產(chǎn)品->固件升級(jí)->升級(jí)日志->輸入對(duì)應(yīng)的imei并選擇日期->搜索
可以看到設(shè)備在此日期下的空中升級(jí)日志。正常升級(jí)成功的情況下,短時(shí)間內(nèi)會(huì)有兩次升級(jí)請(qǐng)求,第一次請(qǐng)求升級(jí)獲取到升級(jí)包之后,設(shè)備重啟升級(jí)成功會(huì)再次向云平臺(tái)請(qǐng)求是否有更高版本的固件可以升級(jí)。直到升級(jí)結(jié)果為 “已是最新版本” 服務(wù)器沒有更高版本的固件為止。
如果你的存在設(shè)備升級(jí)失敗等情況,可以對(duì)照以下表格尋求解決方案:
響應(yīng)碼 | 響應(yīng)信息 | 問題以及解決辦法 | 云平臺(tái)日志結(jié)果 |
3 | 無效的設(shè)備 | 檢查請(qǐng)求鍵名(imei小寫)正確性 | 無 |
17 | 無權(quán)限 | 設(shè)備會(huì)上報(bào)imei、固件名、項(xiàng)目key。 服務(wù)器會(huì)以此查出設(shè)備、固件、項(xiàng)目三 條記錄, 如果 這三者不在同一個(gè)用戶名下,就會(huì)認(rèn)為無權(quán)限。 設(shè)備不在項(xiàng)目key對(duì)應(yīng)的賬戶下, 可尋找合宙技術(shù)支持查詢?cè)撛O(shè)備在哪個(gè)賬戶下, 核實(shí)情況后可修改設(shè)備歸屬 | 無權(quán)限 |
21 | 21 | 不允許從1.0.2升到1.0.3 | 21 |
25 | 無效的項(xiàng)目 | productkey不一致,檢查是否存在拼寫錯(cuò)誤, 檢查模塊是否在本人賬戶下,若不在本人賬戶下,請(qǐng)聯(lián)系合宙工作人員處理 | 未找到項(xiàng)目 |
26 | 無效的固件 | 固件名稱錯(cuò)誤,項(xiàng)目中沒有對(duì)應(yīng)的固件。用戶自己修改了固件名稱,可對(duì)照升級(jí)日志中設(shè)備當(dāng)前固件名與升級(jí)配置中固件名是否相同(固件名稱,固件功能要完全一致,只是版本號(hào)不同)。 | 找不到固件 |
27 | 已是最新版本 | 1、設(shè)備固件版本高于云平臺(tái) 2、固件版本設(shè)備腳本版本高于云平臺(tái)版本 3、用戶項(xiàng)目升級(jí)配置中未添加該設(shè)備 4、云平臺(tái)升級(jí)配置中,是否升級(jí)配置為否 | 已是最新版本 設(shè)備不在配置的升級(jí)設(shè)備列表中 |
40 | 循環(huán)升級(jí) | 云平臺(tái)進(jìn)入設(shè)備列表搜索被禁止的imei,解除禁止升級(jí)就好了。 云平臺(tái)防止模塊在升級(jí)失敗后,反復(fù)請(qǐng)求升級(jí)導(dǎo)致流量耗盡, 在模塊一天請(qǐng)求升級(jí)六次后會(huì)禁止模塊升級(jí)。可在平臺(tái)解除。 | 檢測(cè)到循環(huán)升級(jí) (已禁止升級(jí),請(qǐng)到設(shè)備列表解除) |
43 | 請(qǐng)等待 | 云平臺(tái)生成差分升級(jí)包需要等待, 一到三分鐘后云平臺(tái)生成完成差分包便可以請(qǐng)求成功。 | 正在生成版本,請(qǐng)等待 |
44 | 基礎(chǔ)版本缺失 | 平臺(tái)未收錄設(shè)備固件(多為定制固件, 可尋找合宙技術(shù)支持人員添加,需提供定制固件郵件) | 基礎(chǔ)CORE版本缺失 |
四. 自建第三方服務(wù)器升級(jí)過程
使用自建第三方服務(wù)器升級(jí)
注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本僅支持生成sota文件
手動(dòng)生成core差分包+script全量包。例如core版本有1001、1002、1003,現(xiàn)在要統(tǒng)一升級(jí)到1004,則需要按照如下步驟操作:
手動(dòng)生成:從1001到1004的core差分包+script全量包、從1002到1004的core差分包+script全量包、從1003到1004的core差分包+script全量包
模塊請(qǐng)求升級(jí)時(shí),服務(wù)器根據(jù)模塊中的core版本返回對(duì)應(yīng)的升級(jí)包文件
手動(dòng)生成差分包的過程如下:用合宙提供的luatools中的soc差分工具生成差分包
操作步驟
1. 準(zhǔn)備模塊中使用的舊版本core升級(jí)文件
此文件指的是模塊中舊版本core中的.soc文件(從合宙官方渠道下載),例如以LuatOS-SoC_V1001_EC718P.soc為例
2. 使用Luatools分別生成新舊版本的升級(jí)包
如下圖所示
在Luatools目錄下SOC量產(chǎn)及遠(yuǎn)程升級(jí)文件下的EC718P下,生成了一個(gè)后綴名為.soc的文件fotademo_1.0.1_LuatOS-SoC_V1002_EC718P.soc,這個(gè)就是新版本的升級(jí)包
3. 生成差分包
使用luatools生成升級(jí)文件,無論core是否需要升級(jí),升級(jí)文件必須包含core,因?yàn)椴罘謺?huì)用到,使用luatools內(nèi)的soc差分工具生成即可
生成對(duì)應(yīng)差分包如下圖所示:
注意:差分包不能超過480k
4. 差分包上傳到自建服務(wù)器
lua固件默認(rèn)支持HTTP獲取升級(jí)包
啟動(dòng)遠(yuǎn)程升級(jí)功能,demo\fota2\main.lua文件做如下修改,打開使用自建服務(wù)器進(jìn)行升級(jí)部分代碼,填寫對(duì)應(yīng)的url
5. 使用其他協(xié)議實(shí)現(xiàn)自建服務(wù)器遠(yuǎn)程升級(jí)
可參考腳本庫(kù)中配置。無論使用哪種協(xié)議,遠(yuǎn)程升級(jí)的關(guān)鍵是獲取正確的升級(jí)固件包。
總結(jié):
當(dāng)你看到這里,是不是已經(jīng)感到安心和踏實(shí)一些了,是的,你已經(jīng)掌握了FOTA遠(yuǎn)程升級(jí)的方法了。每一個(gè)步驟都被細(xì)細(xì)拆解,確保即便是技術(shù)小白也能輕松上手。
你在FOTA遠(yuǎn)程升級(jí)的時(shí)候,有沒有遇到過什么問題?評(píng)論區(qū)一起來討論吧~
合宙支持LuatOS功能的模組型號(hào),除本文介紹的Air780EP外, 還有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型號(hào), 本文介紹的FOTA應(yīng)用流程,同樣也適用于這些型號(hào)。
如有需要,請(qǐng)點(diǎn)擊 www.openluat.com 獲取聯(lián)系方式
-
嵌入式
+關(guān)注
關(guān)注
5046文章
18823瀏覽量
298687 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2894文章
43348瀏覽量
366629 -
硬件
+關(guān)注
關(guān)注
11文章
3114瀏覽量
65858
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論