合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)

目录

一. 概述

注意:

二. 材料准备

三. 合宙iot平台升级core+script过程

1. iot平台创建产品​​​​​​​

2. 模块端脚本修改,生成升级包

3. 按照新版本的需求,修改main.lua

注意事项:

 4. 使用Luatools生成bin文件差分包

 5.在合宙iot平台配置升级包

 6. 模块开机,完成升级

 7.云平台查看升级日志

 8.设备升级失败代码(处理方案简述)


一. 概述

update是物联网中比较常用的功能,本文介绍如何用Air780E开发板,如何做update升级。

LuatOS-Air开发模式下,固件分为两部分:corescript

远程升级时:core为差分升级;script为全量覆盖升级

远程升级时:可以仅升级script;可以仅升级core;也可以同时升级core+script

支持合宙iot平台升级和自建第三方服务器升级。

注意:

"fotademo"的升级仅适用于V1103及以上的固件,以下版本固件无法实现core+script同时升级的目的。V1103以下版本的固件需本地升级至V1103及以上版本,之后才可实现完整的远程升级(同时升级core+script)功能。

. 材料准备

  1. [EVB_Air780E]开发板一套,包括天线SIM卡,USB线。
  2. PC电脑,以及登录官方IOT后台 合宙云平台
  3. 固件和DEMO下载地址 LuatOS软件包

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第1张图片刷入旧版本的fota-demo程序及所需要的支持库文件:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第2张图片

刷入完成后log:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第3张图片可以从日志中查到imei号后期需要填入iot平台用于升级。

. 合宙iot平台升级core+script过程

1. iot平台创建产品

  1. ​ 登录合宙iot平台

                http://iot.openluat.com/cloud/main

  1. 如果没有账户,注册一个账户
  2. 我的项目->新建产品
  3. ​​​​​​​

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第4张图片

复制产品product_key

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第5张图片

2. 模块端脚本修改,生成升级包

core

旧版本core

新版本core

例子

LuatOS-SoC_V1103_EC618.soc

LuatOS-SoC_V1103_EC618.soc

要求

1、大于等于旧版本core版本号

2、新旧版本core支持的功能相同

script
main.lua

旧版本
(模块端本地烧录的)

新版本
(生成的量产文件,

远程升级包)

要求

PROJECT
(项目名称)

fotademo

fotademo

新旧版本保持一致

VERSION
(软件版本号)

1.0.1

1.0.2

大于等于旧版本VERSION

PRODUCT_KEY
(项目密钥)

JdIY6pAEHiK3z9sTz3I0eQHqG********

JdIY6pAEHiK3z9sTz3I0eQ*********

和iot平台创建的产品
ProductKey保持一致

3. 按照新版本的需求,修改main.lua

如下图所示,PROJECTPRODUCT_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, 务必留意。

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第6张图片

 4. 使用Luatools生成bin文件差分包

注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本仅支持生成sota文件
固件和DEMO下载地址 LuatOS软件包,这里下载的是LuatOS-SoC@EC618 V1103项目下面的core_V1103.zip软件包。下载对应软件包后按如下步骤生成对应的差分包。
合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第7张图片

 在Luatools目录下的SOC量产及远程升级文件下,找到EC618文件夹,打开后缀名为.bin的文件fotademo_1103.1.2_LuatOS-SoC_EC618.bin,这个就是文件差分包。

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第8张图片

 5.在合宙iot平台配置升级包

进入iot平台创建的产品,打开我的项目->固件列表->创建固件,如下图所示

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第9张图片
默认生成的量产文件均存放在luatools主程序下的SOC量产及远程升级文件夹下,如:E:\LuatOS\SOC量产及远程升级文件\EC618

 合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第10张图片点击确定之后,升级配置完成,如下图所示

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第11张图片 添加需要升级的模块imei,如下图所示

Imei编号可在log日志中查到。

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第12张图片

 添加完成如图:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第13张图片

 6. 模块开机,完成升级

烧录旧版本的模块开机后,连接升级服务器,下载差分升级包,自动重启,重启过程中完成固件升级,整个过程的关键日志如下图所示:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第14张图片

 合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第15张图片

 7.云平台查看升级日志

登录云平台,选择对应设备升级的产品->固件升级->升级日志->输入对应的imei并选择日期->搜索:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第16张图片

 可以看到设备在此日期下的空中升级日志。正常升级成功的情况下,短时间内会有两次升级请求,第一次请求升级获取到升级包之后,设备重启升级成功会再次向云平台请求是否有更高版本的固件可以升级。直到升级结果为 “已是最新版本服务器没有更高版本的固件为止。

之后再重启,日志会显示http应答不OK  400,直到有新的升级包:

合宙Air780E|iot|update|FOTA|LuatOS-Air开发|LuatOS-SOC接口|官方demo|学习(17):FOTA(远程升级)_第17张图片

 8.设备升级失败代码(处理方案简述)

设备升级失败代码,可对照以下表格寻求解决方案。

响应码

响应信息

问题以及解决办法

云平台日志结果

3

无效的设备

检查请求键名(imei小写)正确性

17

无权限

设备会上报imei、固件名、项目key。
服务器会以此查出设备、固件、项目三 条记录,
如果 这三者不在同一个用户名下,就会认为无权限。
设备不在项目key对应的账户下,
可寻找合宙技术支持查询该设备在哪个账户下,
核实情况后可修改设备归属

无权限

21

21

不允许从1.0.2升到1.0.3

21

25

无效的项目

productkey不一致,检查是否存在拼写错误,
检查模块是否在本人账户下,若不在本人账户下,请联系合宙工作人员处理

未找到项目

26

无效的固件

固件名称错误,项目中没有对应的固件。用户自己修改了固件名称,可对照升级日志中设备当前固件名与升级配置中固件名是否相同(固件名称,固件功能要完全一致,只是版本号不同)。

找不到固件

27

已是最新版本

1、设备固件版本高于云平台
2、固件版本设备脚本版本高于云平台版本
3、用户项目升级配置中未添加该设备
4、云平台升级配置中,是否升级配置为否

已是最新版本
设备不在配置的升级设备列表中

40

循环升级

云平台进入设备列表搜索被禁止的imei,解除禁止升级就好了。
云平台防止模块在升级失败后,反复请求升级导致流量耗尽,
在模块一天请求升级六次后会禁止模块升级。可在平台解除。

检测到循环升级
(已禁止升级,请到设备列表解除)

43

请等待

云平台生成差分升级包需要等待,
一到三分钟后云平台生成完成差分包便可以请求成功。

正在生成版本,请等待

44

基础版本缺失

平台未收录设备固件(多为定制固件,
可寻找合宙技术支持人员添加,需提供定制固件邮件)

基础CORE版本缺失

你可能感兴趣的:(LuatOS-SOC接口学习,物联网,mcu,EC618,FOTA,lua)