远程升级
========
作者:朱天华 ## 一. 概述
Luat开发模式下,固件分为两部分:core和script
远程升级时:core为差分升级;script为全量覆盖升级
远程升级时:可以仅升级script;可以仅升级core;也可以同时升级core+script
支持合宙iot平台升级和自建第三方服务器升级
二. 合宙iot平台升级core+script过程
----------------------------------
2.1 iot平台创建产品
~~~~~~~~~~~~~~~~~~~
登录\ `合宙iot平台 `__
如果没有账户,注册一个账户
新建产品
^^^^^^^^
.. figure:: http://oldask.openluat.com/image/show/attachments-2019-08-3WILhBaw5d4bb907829e0.png
:alt: img
img
进入产品
^^^^^^^^
.. figure:: http://oldask.openluat.com/image/show/attachments-2019-08-SfqAphcQ5d4bb92cf0408.png
:alt: img
img
.. figure:: http://oldask.openluat.com/image/show/attachments-2019-08-9qv5QX6f5d4bb945a516e.png
:alt: 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
2.2.1 按照新版本的需求,修改main.lua
''''''''''''''''''''''''''''''''''''
如下图所示,PROJECT和PRODUCT_KEY保持不变,VERSION修改为1.0.1
|undefined|
2.2.2 使用Luatools生成新版本的升级包
''''''''''''''''''''''''''''''''''''
如下图所示
|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平台即可
模块请求升级时,合宙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工具制作差分包。工具地址
`在线生成差分包 `__
操作步骤:
1、准备:模块中使用的旧版本core升级文件
'''''''''''''''''''''''''''''''''''''''
此文件指的是模块中旧版本core发布包中的dfota.bin文件(从合宙官方渠道下载),例如以Luat_V0017_RDA8910.dfota.bin为例,在下图中的Luat_V0017_RDA8910文件夹中
|image8| |image9|
2、准备:需要升级的新版本升级文件
'''''''''''''''''''''''''''''''''
使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到
如果只升级脚本那么就选择和模块中旧版本相同的底层,如果不升级脚本只升级底层就无需勾选包含脚本,如果都升级就都勾选
参考2.2.2章节生成新版本的升级文件,例如:LUAT_IOT_SERVER_UPDATE_1.0.1_Luat_V0022_RDA8910.dfota.bin
3、生成差分包
'''''''''''''
使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到
使用\ `在线生成差分包 `__\ 生成即可
|image10|
常见问题
--------
1、差分包下载完成之后,对差分包会不会有校验?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
差分包下载完成之后,下次重启过程中,会对差分包进行校验;
如果校验通过,则自编程应用新版本,之后自动删除差分包;
如果校验失败,则自动删除差分包
所以说,差分包下载过程中,如果异常断电或者异常重启,并不会出现程序丢失或者变砖的问题
### 2、远程升级完需要多长时间?
升级时间根据差分包的大小不同,升级时间会不同。跨越的版本越大,差分包越大,升级所需的时间越长。实测,升级一个600k左右的差分包,3分钟内能升级完成。
.. |undefined| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100004981_image-20201110161721750.png
:target: undefined
.. |image1| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100054623_image-20201110162902702.png
:target: undefined
.. |image2| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100131384_image-20201110163020267.png
:target: undefined
.. |image3| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100212222_image-20201110165920387.png
:target: undefined
.. |image4| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100244147_image-20201110171018379.png
:target: undefined
.. |image5| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100310700_image-20201110171241069.png
:target: undefined
.. |image6| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100335603_image-20201110171317756.png
:target: undefined
.. |image7| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100411512_image-20201110173540046.png
:target: undefined
.. |image8| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100528755_image-20201110184002285.png
:target: undefined
.. |image9| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100545897_image-20201110184024955.png
:target: undefined
.. |image10| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20201111100630770_image-20201110185123797.png
:target: undefined