• 欢迎大家分享资料!前往留言板评论即可!

合宙Cat.1 模块FOTA远程升级不完全指南

合宙 模组资料网 2年前 (2021-05-15) 347次浏览 0个评论 扫描二维码
文章目录[隐藏]

@TOC

1. AT版本

AT版本的远程升级主要是对AT固件的版本升级,升级方式可以通过合宙官方iot平台升级,同样也可以使用自己的服务器来搭建升级服务

1. IOT平台升级指南

  • 首先明确模块的当前版本与要升级到的版本,通过命令ATI来查询模块当前版本
    合宙Cat.1 模块FOTA远程升级不完全指南
    现在我的版本是V838,我打算升级到官网最新版本V907
  • 打开合宙官网在产品中心找到对应的产品,比方说我这里是Air724UG,下载最新的AT固件V907
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 解压得到两个文件,bin结尾的是远程升级文件,pac结尾的是Luatools下载使用的固件合宙Cat.1 模块FOTA远程升级不完全指南
  • 我们这里要用到的是bin后缀的这个文件,打开iot平台:http://iot.openluat.com 找到你购买的模块所在的产品,打开它,找到设备列表查找要升级的模块是否在设备列表中
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 如果你要升级的设备在设备列表中,那么就可以进入下一步固件升级->升级配置了,点击新建固件,在弹出的窗口上传我们刚才下载的bin结尾的远程升级文件
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 在上传固件的选项中,允许升级,第二项根据自己的需求进行设置,如果要将产品下的所有设备都进行升级就选择允许全项目升级,如果只想指定特定的设备升级就选择否,我这里选择只升级特定的设备
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 上传完成后在固件信息里可以看到添加的选项,点击它弹出的窗口可以添加要升级的设备的IMEI(tip:查询模块IMEI可以使用命令AT+CGSN)
    合宙Cat.1 模块FOTA远程升级不完全指南合宙Cat.1 模块FOTA远程升级不完全指南
  • 上面这些步骤都做好之后,来到模块这边查询手册得知,AT版本升级使用的命令是AT+UPGRADE
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 发送AT+UPGRADE手动触发升级(tip:通过串口发送命令可以看到完整的下载升级流程,通过USBAT口发送升级命令只能看到下载过程,无法看到升级过程)
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 恭喜你成功从V838版本通过合宙iot平台的FOTA的方式升级到了更新的V907版本!

2. 自定义服务器升级指南

  • 使用自己的服务器来升级模块和使用iot平台升级最重要的区别是下载固件的来源不同。
  • 其实FOTA的过程是新老版本生成差分包再进行升级的过程,那么这个差分的过程在哪里呢?使用合宙iot平台升级,差分的过程在iot服务器后台,那使用自己的服务器该怎么办呢?答案当然是自己来完成差分的过程,放在服务器等待模块来下载。
  • 手动生成差分包的过程使用doc平台工具中的差分工具
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 本次我们从V838升级到V907需要准备各自的bin远程升级文件,上传完成后等待差分完成,下载得到的差分文件,我这里为了美观,将他比较长的名字改为了ota.bin。
  • 接下来就是服务器配置的环节了,这里你需要有一台可以在公网上访问的服务器,我这里使用的是一台安装了Ubuntu的公网服务器,将我们在上一步得到的差分文件上传到服务器硬盘中合宙Cat.1 模块FOTA远程升级不完全指南
  • 模块端获取自定义服务器上的差分包的方式是通过Http GET下载的方式,所以我们需要创建一个Http服务,使差分包可以通过Http GET的方式下载,我这里使用Python内建的Http服务,开启方法是
python3 -m http.server

这个操作可以在执行命令的目录开启一个Http服务,用来访问当前目录的文件。合宙Cat.1 模块FOTA远程升级不完全指南
+ 可以看到http服务监听的端口是8000,通过浏览器访问公网服务器ip的8000端口可以看到这样的页面就说明服务开启正常
合宙Cat.1 模块FOTA远程升级不完全指南
+ 此时查阅AT手册可知AT+UPGRADE命令设置自定义服务器的方式为tag参数中的url
合宙Cat.1 模块FOTA远程升级不完全指南
+ 模块设置方式如图
合宙Cat.1 模块FOTA远程升级不完全指南
+ 手动发送AT+UPGRADE即可触发升级,与iot升级一样可以从串口观察到相同的升级过程,在服务器终端中一样可以看到模块的本次下载请求
合宙Cat.1 模块FOTA远程升级不完全指南
+ 恭喜你成功从V838版本通过自己服务器搭建FOTA服务的方式升级到了更新的V907版本!

2. Lua版本

Lua版本的远程升级包含Core的升级和Lua脚本的升级,升级方式同样可以选择通过合宙官方iot平台升级,或使用自己的服务器来搭建升级服务

1. IOT平台升级指南

  • 首先明确模块当前使用的Core版本和脚本版本,Core版本可以通过从USBAT口发送ATI查询,也可以通过LuaTask API(rtos.get_version())来获取当前版本,脚本版本可以通过查询全局变量VERSION获取(_G.VERSION)
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 我这里打算将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和脚本,点击生成量产文件。
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 量产文件生成后,默认保存在Luatools目录下
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 将V0019+V2.0.0的远程升级文件上传到iot平台,方法和上传AT远程升级文件一样
  • 将我们V0018+V1.0.0模块重启触发升级代码,重启之后观察打印,确实从V0018+V1.0.0升级到了V0019+V2.0.0
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 恭喜你成功从V0018+V1.0.0版本通过合宙iot平台的FOTA的方式升级到了更新的V0019+V2.0.0版本!

2. 自定义服务器升级指南

  • 使用自己的服务器来升级Lua版本类似于使用自己的服务器来升级AT固件,由于使用自己的服务器缺少差分流程,所以需要我们手动进行差分
  • 分别生成V0018+V1.0.0和V0019+V2.0.0的远程升级文件
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 在doc的差分工具上分别上传V0018+V1.0.0和V0019+V2.0.0生成差分包
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 和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
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 从服务器终端也可以看到请求记录
    合宙Cat.1 模块FOTA远程升级不完全指南
  • 恭喜你成功从V0018+V1.0.0版本通过自己服务器搭建FOTA服务的方式升级到了更新的V0019+V2.0.0版本!

喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址