一. Lua版本
Lua版本的远程升级包含Core的升级和Lua脚本的升级,升级方式同样可以选择通过合宙官方iot平台升级,或使用自己的服务器来搭建升级服务
- IOT平台升级指南
- 首先明确模块当前使用的Core版本和脚本版本,Core版本可以通过从USBAT口发送ATI查询,也可以通过LuaTask API(rtos.get_version())来获取当前版本,脚本版本可以通过查询全局变量VERSION获取(_G.VERSION)
- 我这里打算将Core从V0018升级到V0019,将脚本版本从V1.0.0升级到V2.0.0
脚本中需要设置全局变量PRODUCT_KEY,因为iot平台升级会用到这个KEY,这个KEY来自于iot平台中的产品信息中的ProductKey,还需要引入lib中的update,调用update.request()来请求升级服务器,根据lib中的注释可知如果我们使用iot平台进行升级,在request函数中可以不传入任何参数。(为了测试方便,在1.0.0的脚本中设置为开机就请求升级,而在2.0.0中为了防止反复升级去掉了升级代码)
PRODUCT_KEY = "XXXXXXXXXXXXXXXX"
require "update"
update.request()
- 在脚本中添加一段循环打印Core版本和脚本版本的代码,用来观察我们的固件和脚本是否升级
sys.taskInit(function()
while true do
log.info("VERSION", rtos.get_version(), _G.VERSION)
sys.wait(10000)
end
end)
-
使用Luatools生成要升级到的版本的远程升级文件,打开Luatools的项目管理窗口,选择我们要升级的版本的Core V0019和脚本V2.0.0,选择升级文件包含Core和脚本,点击生成量产文件。
-
量产文件生成后,默认保存在Luatools目录下
-
将V0019+V2.0.0的远程升级文件上传到iot平台,方法和上传AT远程升级文件一样
-
将我们V0018+V1.0.0模块重启触发升级代码,重启之后观察打印,确实从V0018+V1.0.0升级到了V0019+V2.0.0
-
恭喜你成功从V0018+V1.0.0版本通过合宙iot平台的FOTA的方式升级到了更新的V0019+V2.0.0版本!
2. 自定义服务器升级指南
-
使用自己的服务器来升级Lua版本类似于使用自己的服务器来升级AT固件,由于使用自己的服务器缺少差分流程,所以需要我们手动进行差分
-
分别生成V0018+V1.0.0和V0019+V2.0.0的远程升级文件
-
在doc的差分工具上分别上传V0018+V1.0.0和V0019+V2.0.0生成差分包
-
和AT固件自定义服务器一样的方法,将下载得到的差分包放在公网服务器上,并开启HttpGet服务
-
参考lib中update.lua中request方法的注释可知,如果要使用自定义服务器的话,需要在第二个url参数中传入自定义服务器上差分包的下载地址
require "update"
update.request(nil,"http://<ipaddress>:8000/ota.bin")
-
将我们V0018+V1.0.0模块重启触发升级代码,重启之后观察打印,确实从V0018+V1.0.0升级到了V0019+V2.0.0
-
从服务器终端也可以看到请求记录
-
恭喜你成功从V0018+V1.0.0版本通过自己服务器搭建FOTA服务的方式升级到了更新的V0019+V2.0.0版本!