远程升级

作者:朱天华 ## 一. 概述

Luat开发模式下,固件分为两部分:core和script

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

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

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

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

2.1 iot平台创建产品

登录合宙iot平台

如果没有账户,注册一个账户

新建产品

img

img

进入产品

img

img

img

img

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

例如:

要从

模块端本地烧录的旧版本core:Luat_V0017_RDA8910

模块端本地烧录的旧版本script main.lua中的PROJECT:LUAT_IOT_SERVER_UPDATE

模块端本地烧录的旧版本script main.lua中的VERSION:1.0.0

模块端本地烧录的旧版本script main.lua中的PRODUCT_KEY:sVSCBogifQF6PfnncwVcRKaCbqO2YGfU 和iot平台创建的产品ProductKey保持一致

升级到

升级包中的新版本core:Luat_V0022_RDA8910 大于等于旧版本core版本号

升级包中的新版本script main.lua中的PROJECT:LUAT_IOT_SERVER_UPDATE 和旧版本的PROJECT保持一致

升级包中的新版本script main.lua中的VERSION:1.0.1 大于等于旧版本VERSION

升级包中的新版本script main.lua中的PRODUCT_KEY:sVSCBogifQF6PfnncwVcRKaCbqO2YGfU 和旧版本的PRODUCT_KEY保持一致

注意:脚本中要require“update”加载update功能模块,才能支持远程升级,可以参考update的demo

如下图所示,PROJECT和PRODUCT_KEY保持不变,VERSION修改为1.0.1

undefined

如下图所示

image1

在Luatools目录下的4G远程升级文件 下,生了一个后缀名为dfota.bin的文件LUAT_IOT_SERVER_UPDATE_1.0.1_Luat_V0022_RDA8910.dfota.bin,这个就是新版本的升级包

image2

2.3 在合宙iot平台配置升级包

进入iot平台创建的产品,打开固件升级->升级配置->新建固件,如下图所示

image3

点击确定之后,升级配置完成,如下图所示

image4

添加需要升级的模块imei,如下图所示

image5

image6

2.4 模块开机,完成升级

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

image7

三. 合宙iot平台仅升级core或者仅升级script过程

和升级core+script过程相比,仅有一点不同:

2.2.2步骤生成升级包时:

1、如果仅升级core,勾选 升级文件包含core,不勾选 升级文件包含脚本

2、如果仅升级script,勾选 升级文件包含script,不勾选 升级文件包含core

四. 自建第三方服务器升级过程

只需要将新版本的升级包配置在合宙iot平台即可

模块请求升级时,合宙iot平台自动生成core差分包和script全量包:

1、core差分包:根据模块中的版本信息在合宙的erp系统中找到对应的升级包,然后将这个升级包和iot平台上配置的新版本升级包,做差分处理,生成core对应的差分包

2、script全量包:直接根据iot平台上配置的新版本升级包,提取出来script全量包

3、将core差分包和script全量包合成一个文件,发送给模块

简单的做法是:服务器设计完善,完全参考合宙iot升级后台设计,自己的服务器可以获取到已经出错的所有core版本对应的升级包

复杂的做法是:完全手动生成core差分包+script全量包。例如已经出货的core版本有0017、0018、0019,现在要统一升级到0020,则需要按照如下步骤操作:

1、手动生成:从0017到0020的core差分包+script全量包、从0018到0020的core差分包+script全量包、从0019到0020的core差分包+script全量包

2、模块请求升级时,服务器根据模块中的core版本返回对应的升级包文件

手动生成差分包的过程如下:

用合宙提供的web工具制作差分包。工具地址 在线生成差分包

操作步骤:

此文件指的是模块中旧版本core发布包中的dfota.bin文件(从合宙官方渠道下载),例如以Luat_V0017_RDA8910.dfota.bin为例,在下图中的Luat_V0017_RDA8910文件夹中

image8 image9

使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到

如果只升级脚本那么就选择和模块中旧版本相同的底层,如果不升级脚本只升级底层就无需勾选包含脚本,如果都升级就都勾选

参考2.2.2章节生成新版本的升级文件,例如:LUAT_IOT_SERVER_UPDATE_1.0.1_Luat_V0022_RDA8910.dfota.bin

使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到

使用在线生成差分包生成即可

image10

常见问题

1、差分包下载完成之后,对差分包会不会有校验?

差分包下载完成之后,下次重启过程中,会对差分包进行校验; 如果校验通过,则自编程应用新版本,之后自动删除差分包; 如果校验失败,则自动删除差分包 所以说,差分包下载过程中,如果异常断电或者异常重启,并不会出现程序丢失或者变砖的问题 ### 2、远程升级完需要多长时间? 升级时间根据差分包的大小不同,升级时间会不同。跨越的版本越大,差分包越大,升级所需的时间越长。实测,升级一个600k左右的差分包,3分钟内能升级完成。