远程升级¶
作者:朱天华 ## 一. 概述
Luat开发模式下,固件分为两部分:core和script
远程升级时:core为差分升级;script为全量覆盖升级
远程升级时:可以仅升级script;可以仅升级core;也可以同时升级core+script
支持合宙iot平台升级和自建第三方服务器升级
二. 合宙iot平台升级core+script过程¶
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
如下图所示
在Luatools目录下的4G远程升级文件 下,生了一个后缀名为dfota.bin的文件LUAT_IOT_SERVER_UPDATE_1.0.1_Luat_V0022_RDA8910.dfota.bin,这个就是新版本的升级包
三. 合宙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文件夹中
使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到
如果只升级脚本那么就选择和模块中旧版本相同的底层,如果不升级脚本只升级底层就无需勾选包含脚本,如果都升级就都勾选
参考2.2.2章节生成新版本的升级文件,例如:LUAT_IOT_SERVER_UPDATE_1.0.1_Luat_V0022_RDA8910.dfota.bin
使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到
使用在线生成差分包生成即可