一. 概述
update是物联网中比较常用的功能,本文介绍如何用Air780E开发板,如何做update升级。
LuatOS-Air开发模式下,固件分为两部分:core和script
远程升级时:core为差分升级;script为全量覆盖升级
远程升级时:可以仅升级script;可以仅升级core;也可以同时升级core+script
支持合宙iot平台升级和自建第三方服务器升级。
注意:
"fotademo"的升级仅适用于V1103及以上的固件,以下版本固件无法实现core+script同时升级的目的。V1103以下版本的固件需本地升级至V1103及以上版本,之后才可实现完整的远程升级(同时升级core+script)功能。
二. 材料准备
- [EVB_Air780E]开发板一套,包括天线SIM卡,USB线。
- PC电脑,以及登录官方IOT后台 合宙云平台
- 固件和DEMO下载地址 LuatOS软件包
刷入旧版本的fota-demo程序及所需要的支持库文件:
刷入完成后log:
可以从日志中查到imei号后期需要填入iot平台用于升级。
三. 合宙iot平台升级core+script过程
1. iot平台创建产品
- 登录合宙iot平台
http://iot.openluat.com/cloud/main
- 如果没有账户,注册一个账户
- 我的项目->新建产品
复制产品product_key
2. 模块端脚本修改,生成升级包
core | 旧版本core | 新版本core | |
例子 | LuatOS-SoC_V1103_EC618.soc | LuatOS-SoC_V1103_EC618.soc | |
要求 | 1、大于等于旧版本core版本号 | 2、新旧版本core支持的功能相同 | |
script | 旧版本 | 新版本 远程升级包) | 要求 |
PROJECT | fotademo | fotademo | 新旧版本保持一致 |
VERSION | 1.0.1 | 1.0.2 | 大于等于旧版本VERSION |
PRODUCT_KEY | JdIY6pAEHiK3z9sTz3I0eQHqG******** | JdIY6pAEHiK3z9sTz3I0eQ********* | 和iot平台创建的产品 |
3. 按照新版本的需求,修改main.lua
如下图所示,PROJECT和PRODUCT_KEY保持不变,PRODUCT_KEY需和服务器保持一致,VERSION修改为1.0.2。
注意事项:
1、固件版本 V1103 及以上, 配合 libfota.lua
2、main.lua 内填写版本号要符合 x.y.z 形式, 其中 x/y/z 均为数值, 不限于个位数
3、若fota使用合宙iot平台, 版本号中的 y 会被忽略, 推荐写0, 务必留意。
4. 使用Luatools生成bin文件差分包
注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本仅支持生成sota文件
固件和DEMO下载地址 LuatOS软件包,这里下载的是LuatOS-SoC@EC618 V1103项目下面的core_V1103.zip软件包。下载对应软件包后按如下步骤生成对应的差分包。
在Luatools目录下的SOC量产及远程升级文件下,找到EC618文件夹,打开后缀名为.bin的文件fotademo_1103.1.2_LuatOS-SoC_EC618.bin,这个就是文件差分包。
5.在合宙iot平台配置升级包
进入iot平台创建的产品,打开我的项目->固件列表->创建固件,如下图所示
默认生成的量产文件均存放在luatools主程序下的SOC量产及远程升级文件夹下,如:E:\LuatOS\SOC量产及远程升级文件\EC618。
点击确定之后,升级配置完成,如下图所示
添加需要升级的模块imei,如下图所示
Imei编号可在log日志中查到。
添加完成如图:
6. 模块开机,完成升级
烧录旧版本的模块开机后,连接升级服务器,下载差分升级包,自动重启,重启过程中完成固件升级,整个过程的关键日志如下图所示:
7.云平台查看升级日志
登录云平台,选择对应设备升级的产品->固件升级->升级日志->输入对应的imei并选择日期->搜索:
可以看到设备在此日期下的空中升级日志。正常升级成功的情况下,短时间内会有两次升级请求,第一次请求升级获取到升级包之后,设备重启升级成功会再次向云平台请求是否有更高版本的固件可以升级。直到升级结果为 “已是最新版本” 服务器没有更高版本的固件为止。
之后再重启,日志会显示http应答不OK 400,直到有新的升级包:
8.设备升级失败代码
设备升级失败代码,可对照以下表格寻求解决方案。
响应码 | 响应信息 | 问题以及解决办法 | 云平台日志结果 |
3 | 无效的设备 | 检查请求键名(imei小写)正确性 | 无 |
17 | 无权限 | 设备会上报imei、固件名、项目key。 | 无权限 |
21 | 21 | 不允许从1.0.2升到1.0.3 | 21 |
25 | 无效的项目 | productkey不一致,检查是否存在拼写错误, | 未找到项目 |
26 | 无效的固件 | 固件名称错误,项目中没有对应的固件。用户自己修改了固件名称,可对照升级日志中设备当前固件名与升级配置中固件名是否相同(固件名称,固件功能要完全一致,只是版本号不同)。 | 找不到固件 |
27 | 已是最新版本 | 1、设备固件版本高于云平台 | 已是最新版本 |
40 | 循环升级 | 云平台进入设备列表搜索被禁止的imei,解除禁止升级就好了。 | 检测到循环升级 |
43 | 请等待 | 云平台生成差分升级包需要等待, | 正在生成版本,请等待 |
44 | 基础版本缺失 | 平台未收录设备固件(多为定制固件, | 基础CORE版本缺失 |