0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你也觉得FOTA升级难吗?这份详细教程让你自信升级!

合宙LuatOS 2024-08-07 12:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言:

我经常在各个讨论群里看到有合宙Air780EP的用户说:

FOTA远程升级有点难呀~一步错后面就得重新来了,有没有大佬给个教程啊?

用户提需求了,那我们肯定要满足啊,就连夜赶了一篇

在整理这篇文章之前,是没有觉得这个FOTA远程升级有多复杂的,写完回头一看,好家伙,这么多步骤啊!

本篇保姆级教程,手把手教你FOTA远程升级,小白秒变专家!

合宙支持LuatOS功能的模组型号,除本文介绍的Air780EP外, 还有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型号, 本文介绍的FOTA应用流程,同样也适用于这些型号。

一. 概述

合宙Air780EP具有高度集成、低功耗、强大的开发支持的特点,提供了丰富的接口,支持多种外设连接,支持标准AT指令和LuatOS开发。

Air780EP开发板适用于多种物联网应用场景,比如智能家居、智能城市、工业控制、远程监控等。

在开始之前,我们先学习一下FOTA升级的背景知识:

远程升级是物联网中比较常用的功能,本文介绍如何使用Air780EP开发板进行远程升级

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

(core为底层固件,script为脚本文件)

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

我详细介绍了两种方式的升级教程:一个是合宙iot平台升级教程,另一个是自建第三方服务器升级教程。

根据你的需求,选择哪一种都可以。

二. 材料准备

我们升级前需要的工具准备有这些:

780EP开发板一套,包括天线SIM卡,USB线

PC电脑,以及登录官方IOT后台 https://iot.openluat.com/

固件和DEMO下载地址 LuatOS软件包

wKgaomad_iCAGM1mACObj6OhrXM912.png

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

1. iot平台创建产品

登录合宙iot平台

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

打开:我的项目->新建项目

wKgZomay8BeATgGBAAELnru8iLo169.png

复制PRODUCT_KEY

wKgZomay8C6AYhmZAACUhCZpKBQ940.png

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

core旧版本core新版本core
例子LuatOS-SoC_V1001_EC718P.socLuatOS-SoC_V1001_EC718P.soc
要求1、大于等于旧版本core版本号2、新旧版本core支持的功能相同
script
main.lua
旧版本
(模块端本地烧录的)
新版本
(生成的量产文件,远程升级包)
要求
PROJECT
(项目名称)
fotademofotademo新旧版本保持一致
VERSION
(软件版本号)
1.0.01.0.1大于等于旧版本VERSION
PRODUCT_KEY
(项目密钥)
Vn7jF7r23yswjfwMa7ZuMsdnuuUC9wC3Vn7jF7r23yswjfwMa7ZuMsdnuuUC9wC3和iot平台创建的产品
ProductKey保持一致

3. 按照新版本的需求,修改main.lua

如下图所示,PROJECT和PRODUCT_KEY保持不变,PRODUCT_KEY需和服务器保持一致,VERSION修改为1.0.1

注意事项:

1. main.lua 内填写版本号要符合 x.y.z 形式, 其中 x/y/z 均为数值, 不限于个位数;

2. 若fota使用合宙iot平台, 版本号中的 y 会被忽略, 推荐写0, 务必留意

wKgaomay8HGAOcvnAAD7Afdji0k433.png

4. 使用Luatools生成bin文件差分包

注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本仅支持生成sota文件

只升级脚本,差分包制作流程如下:

固件和DEMO下载地址 LuatOS软件包,这里下载的是LuatOS-SoC@EC718P V1001下面的core_V1001.zip软件包。下载对应软件包后按如下步骤生成对应的差分包。

wKgZomay8IqANT-CAAJnWYzk4rw299.png

在Luatools目录下的SOC量产及远程升级文件下,找到EC718P文件夹,打开后缀名为.bin的文件fotademo_1001.1.1_LuatOS-SoC_EC718P.bin,这个就是文件差分包。

wKgaomay8JuAdX-EAABhdcbwu44060.png

需要升级底层CORE,差分包制作流程如下:

生成新版本的量产固件,如下所示

根据新旧固件生成对应差分文件,如下所示

a. 点击选项及工具选项,选择升级包制作工具

wKgZomay8M2AGGqwAADyPSE4eo0758.png

b. 选择对应文件,点击开始执行生成对应差分文件

wKgaomay8XSAEqRqAABqYGfPGtM613.png

c. 生成的差分文件

wKgZomay8RaAcwDdAAA0UpUPKKc606.png

5. 在合宙iot平台配置升级包

进入iot平台,打开我的项目->固件列表->创建固件

wKgaomay8OeAJLZIAACRADThGNA273.png

选择新固件升级文件

wKgZomay9aOAOYgUAACm1eOybrw916.png

如果升级全部设备勾选的是否,则需要添加需要升级的模块imei

wKgaomay9buAWTboAACoINRsEQ4183.png

6. 模块开机,完成升级

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

wKgaomay9ciABMDtAANMuo1muBo373.png

7. 云平台查看升级日志

登录云平台,选择对应设备升级的产品->固件升级->升级日志->输入对应的imei并选择日期->搜索

可以看到设备在此日期下的空中升级日志。正常升级成功的情况下,短时间内会有两次升级请求,第一次请求升级获取到升级包之后,设备重启升级成功会再次向云平台请求是否有更高版本的固件可以升级。直到升级结果为 “已是最新版本” 服务器没有更高版本的固件为止。

如果你的存在设备升级失败等情况,可以对照以下表格寻求解决方案:

响应码响应信息问题以及解决办法云平台日志结果
3无效的设备检查请求键名(imei小写)正确性
17无权限设备会上报imei、固件名、项目key。 服务器会以此查出设备、固件、项目三 条记录, 如果 这三者不在同一个用户名下,就会认为无权限。 设备不在项目key对应的账户下, 可寻找合宙技术支持查询该设备在哪个账户下, 核实情况后可修改设备归属无权限
2121不允许从1.0.2升到1.0.321
25无效的项目productkey不一致,检查是否存在拼写错误, 检查模块是否在本人账户下,若不在本人账户下,请联系合宙工作人员处理未找到项目
26无效的固件固件名称错误,项目中没有对应的固件。用户自己修改了固件名称,可对照升级日志中设备当前固件名与升级配置中固件名是否相同(固件名称,固件功能要完全一致,只是版本号不同)。找不到固件
27已是最新版本1、设备固件版本高于云平台 2、固件版本设备脚本版本高于云平台版本 3、用户项目升级配置中未添加该设备 4、云平台升级配置中,是否升级配置为否已是最新版本 设备不在配置的升级设备列表中
40循环升级云平台进入设备列表搜索被禁止的imei,解除禁止升级就好了。 云平台防止模块在升级失败后,反复请求升级导致流量耗尽, 在模块一天请求升级六次后会禁止模块升级。可在平台解除。检测到循环升级 (已禁止升级,请到设备列表解除)
43请等待云平台生成差分升级包需要等待, 一到三分钟后云平台生成完成差分包便可以请求成功。正在生成版本,请等待
44基础版本缺失平台未收录设备固件(多为定制固件, 可寻找合宙技术支持人员添加,需提供定制固件邮件)基础CORE版本缺失

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

使用自建第三方服务器升级

注意:只有Luatools版本2.1.89以上支持生成bin文件差分包,低版本仅支持生成sota文件

手动生成core差分包+script全量包。例如core版本有1001、1002、1003,现在要统一升级到1004,则需要按照如下步骤操作:

手动生成:从1001到1004的core差分包+script全量包、从1002到1004的core差分包+script全量包、从1003到1004的core差分包+script全量包

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

手动生成差分包的过程如下:用合宙提供的luatools中的soc差分工具生成差分包

wKgZomay9fiAZFc-AABRUJCacBM850.png

wKgaomay9g-ARUrlAAA8Rcn6sgY302.png

操作步骤

1. 准备模块中使用的旧版本core升级文件

此文件指的是模块中旧版本core中的.soc文件(从合宙官方渠道下载),例如以LuatOS-SoC_V1001_EC718P.soc为例

wKgaomay9huAPUz_AABLPoeb4dU977.png

2. 使用Luatools分别生成新旧版本的升级包

如下图所示

wKgZomay9jSAM-kKAADucIFeFBs589.png

在Luatools目录下SOC量产及远程升级文件下的EC718P下,生成了一个后缀名为.soc的文件fotademo_1.0.1_LuatOS-SoC_V1002_EC718P.soc,这个就是新版本的升级包

wKgZomay9j6AFu7BAABKTRtLMHY631.png

3. 生成差分包

使用luatools生成升级文件,无论core是否需要升级,升级文件必须包含core,因为差分会用到,使用luatools内的soc差分工具生成即可

wKgaomay8XSAEqRqAABqYGfPGtM613.png

生成对应差分包如下图所示:

注意:差分包不能超过480k

wKgZomay9lSARrsQAAApwzi5yKY650.png

4. 差分包上传到自建服务器

lua固件默认支持HTTP获取升级包

启动远程升级功能,demo\fota2\main.lua文件做如下修改,打开使用自建服务器进行升级部分代码,填写对应的url

wKgZomay9mOABRJ1AAEWdbVJZQs317.png

5. 使用其他协议实现自建服务器远程升级

可参考脚本库中配置。无论使用哪种协议,远程升级的关键是获取正确的升级固件包。

总结:

当你看到这里,是不是已经感到安心和踏实一些了,是的,你已经掌握了FOTA远程升级的方法了。每一个步骤都被细细拆解,确保即便是技术小白也能轻松上手。

你在FOTA远程升级的时候,有没有遇到过什么问题?评论区一起来讨论吧~


合宙支持LuatOS功能的模组型号,除本文介绍的Air780EP外, 还有Air780EPA、Air780E、Air780EX、Air201、Air780EPT、Air780EPS等型号, 本文介绍的FOTA应用流程,同样也适用于这些型号。

如有需要,请点击 www.openluat.com 获取联系方式

wKgZomax0JaACDSHAAhAbEqOp1Q823.pngwKgZomax0UiAIQxLAAoPzDux5vQ191.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20155

    浏览量

    328969
  • 物联网
    +关注

    关注

    2939

    文章

    47330

    浏览量

    408043
  • 硬件
    +关注

    关注

    11

    文章

    3556

    浏览量

    68750
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Bootloader固件升级的步骤

    可以不更新,在项目中,我们通常会对 FW 版本号进行对比,会将 MCU 中的 App 程序更新最新的版本,起到固件升级的效果。更新的话,BootLoader 更新完程序后,跳转到新程序运行;不更新
    发表于 11-19 07:41

    觉得哪个软件写verilog体验最好?有什么优势?

    觉得哪个软件写verilog体验最好?有什么优势?请在评论区留言跟大家分享一下吧。
    发表于 11-10 07:47

    用户体验“大升级”!蓝牙云屏客户对的设备爱不释手​

    用户体验“大升级”!蓝牙云屏客户对的设备爱不释手​ “客户又投诉了,说设备操作太麻烦!” 这是不少仪器仪表厂家的烦心事。传统设备的操作界面往往刻板生硬:按钮密密麻麻,按错一个就要从头再来;参数
    的头像 发表于 10-16 16:49 405次阅读
    用户体验“大<b class='flag-5'>升级</b>”!蓝牙云屏<b class='flag-5'>让</b>客户对<b class='flag-5'>你</b>的设备爱不释手​

    使用RTT的维护云进行远程固件升级(OTA),怎么没有网络升级的方式?

    使用RTT的维护云进行远程固件升级(OTA),怎么没有网络升级的方式的?只有蓝牙,近距离的固件升级详细如图所示,只有蓝牙,没有连接互联网,通过固件上传服务器进行在线
    发表于 10-13 06:36

    告别测量烦恼!蔡司硬件升级效率与轻松同行

    是否曾经历过这样的测量现场: 拖着长长的线缆在机器周边穿梭 生怕一不小心就被绊倒; 来回奔波于工件和工作站之间 一天下来腿都跑酸了; 批量检测时 光是调试程序就耗掉大半时间…… 别愁!蔡司带着
    的头像 发表于 09-26 17:18 1306次阅读
    告别测量烦恼!蔡司硬件<b class='flag-5'>升级</b>,<b class='flag-5'>让</b>效率与轻松同行

    【应用方案】“会呼吸”的洗衣机:艾为灯语®光与“对话”

    是否想过,洗衣机会用光的语言与您对话?当科技被赋予温度,最日常的洗衣时刻开始有了诗意。艾为灯语助力智能家电系列,洗衣机从冰冷的金属外壳中苏醒,用光的语言与温柔对话。这不是一次简
    的头像 发表于 09-11 18:56 523次阅读
    【应用方案】“会呼吸”的洗衣机:艾为灯语®<b class='flag-5'>让</b>光与<b class='flag-5'>你</b>“对话”

    蓝牙空中升级(OTA)原理

    DFU,即通过空中无线方式实现设备固件升级。只不过大家为了方便起见,直接用OTA来指代固件空中升级(有时候大家将OTA称为FOTA,即Firmware OTA,这种称呼意思更明了一
    发表于 07-21 14:50

    T90智能电烙铁,全方位升级!PD3.1 140W大功率加热,功率升级,IPS LCD彩屏,屏幕升级,质感升级

    T90智能电烙铁,全方位升级!PD3.1 140W大功率加热,功率升级,IPS LCD彩屏,屏幕升级,质感升级! 正点原子全新电烙铁来啦!正点原子T90是在T80/T65的基础上全新
    发表于 07-07 17:36

    默默无闻的是否想创业

    心有余而力不足,故特发此信。 不管你是电子领域的大佬,还是初出学堂的小白,只要你在电子方面有足够的自信,不甘默默无闻,三点一线了此一生,请联系我微电同号15286651822;如果现在身价百万
    发表于 06-08 12:21

    【干货】基于串口的FPGA远程升级

    变得简单有趣,记得给我点赞留言,我知道在这趟奇妙的旅程里哦。远程升级简介远程升级的实质是通过远程且不影响当前芯片工作状态的方式实现芯片
    的头像 发表于 04-14 09:53 1730次阅读
    【干货】基于串口的FPGA远程<b class='flag-5'>升级</b>

    FOTA远程升级的10个关键点!技术小白必须收藏

    本文将针对FOTA升级过程中的十大常见问题提供专业解答,帮助您规避风险,实现安全高效的固件更新。 一、FOTA远程升级常见问题   01. 远程升级
    的头像 发表于 04-10 14:53 537次阅读
    <b class='flag-5'>FOTA</b>远程<b class='flag-5'>升级</b>的10个关键点!技术小白必须收藏

    使用CAN通信升级遇到的程序问题求解

    您好,我正在使用 BAM,并且在使用 CAN 通信升级我的程序时遇到问题。 用 JTAG 调试我的程序时,没有问题,但是通过 CAN 升级后,程序运行错误。当我阻止代码( INTC.心肺复苏术
    发表于 04-03 07:47

    STM32/GD32开发板基本串口RS232\\RS485通信及CAN接口 usbhid升级 U盘升级 sd卡升级升级学习方案开发板

    STM32F103/STM32F407/gd32F103/GD32F303开发板,例程用标准库开发。基本串口RS232\\RS485通信及CAN接口 usbhid升级 U盘升级 sd卡升级升级
    发表于 02-27 14:56

    深视课堂丨SG/SGI/SC/SCI系列传感头、控制器固件升级教程

    操作失误导致“系统崩塌”。本期深视课堂带你走进深视智能传感头与控制器固件升级全流程,通过第一视角操作演示,快速掌握固件升级秘籍,
    的头像 发表于 02-10 08:18 954次阅读
    深视课堂丨SG/SGI/SC/SCI系列传感头、控制器固件<b class='flag-5'>升级</b>教程

    STM32F103上位机升级,RS485升级、CAN升级

    STM32F103_IAP开发板,用STM32F103RCT6主控芯片,例程用标准库开发。基本串口RS232\\RS485通信及CAN接口升级学习方案开发板。 升级方案分两种:用外置FIash和不用
    发表于 01-03 08:57