模组差分包,可能是你远程升级失败的罪魁祸首!

news2024/9/23 13:37:48

也许我们已经习惯生活里的问题接连不断。。。但当收到客户的问题反馈,还是会心头一紧!

最近有客户反馈在乡村里频繁出现掉线的情况。

我们赶紧排查:换货、换SIM卡,发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况,而今年4月份采购的模块批次就不会掉线。。。太奇怪了!

跟对应销售对接后,了解到差异就是模块内的固件版本不同。

去年采购的那批模块版本是:
AirM2M_780E_LTE_AT_V1138

今年采购的那批模块版本是:
AirM2M_780E_LTE_AT_V1162

看来是高版本对网络做了优化,但在这个地区出货的也有150多台设备了,把每个都单独回收回来给模块用USB烧录成高版本固件,显然不太现实,索性,直接通过FOTA远程批量升级吧!

图片

一、第一次尝试升级,出现失败


从合宙DOC社区上找到了FOTA远程升级的文档参考,先用手边的设备用合宙IoT平台做下测试,看能不能升级。

什么都配置好了,结果到最后模块发AT+UPGRADE触发升级的时候,却老是报错:

+UPGRADEIND: -1003

通过升级日志查询结果是“正在生成版本”?

图片

在页面右上角看到有个红色问号“ ?”,是IoT平台的帮助中心,往下滑就看到了升级日志返回结果的对应描述。

如下图示:

图片

图片

正在生成版本,请稍后再次请求——看样子是版本相差太大了,平台内部还在做差分包,那我就等一会儿再请求看看。

二、第二次尝试升级,再次出现失败

保险起见间隔了30分钟再次请求,以看到已经进入下载了,但是结果却又出现了:

+UPGRADEIND: -1003

这又是什么原因?!!

图片

先去IoT平台上看一下升级日志的结果是什么,查询看到显示的是“成功”,但实际上并没有升级成功啊,反而还报错了。

图片

紧接着找合宙的技术人员咨询了解到,差分包大小是有限制的,不能大于480KB,否则会升级不成功。

至于IoT平台上升级日志显示“成功”,原因是这个成功代表的意思不是模块升级成功——而是给予模块的升级请求,下发了升级文件成功了。

经过进一步确认,可以通过合宙自己提供的生成差分包工具的网址,把V1138和V1162的dfota.bin文件放上去,制作一个差分包看看,到底有多大。

图片

等了大概3分钟左右,差分包制作出来了,点击下载后,文件大小有550KB,那确实超出了480KB,升级不了。

图片

图片

从合宙的技术那里还得到了一份AT固件各个版本之间制作差分包的大小,以及是否可以差分升级的表格,这方便多了啊。

有数字的代表是在480KB以内,可以差分升级的版本;空白的就是不能升级的。

差分升级表格如下图示:

图片

那么通过这张图来看,例如我当前的模块版本是V1138,需要升级到1162,对应的交叉格并没有数字。

而且V1138升级到1147的差分包就已经到480KB的临界点了,只能先升到V1147,再升到1162。

图片

三、事不过三,第三次升级,成功!


那么,先获取到V1147版本的固件。

然后搜索得到AirM2M_780E_LTE_AT_V1147,
解压出来找到:
AirM2M_780E_V1147_LTE_AT.dfota.bin文件,
放到IoT平台上面。

图片

发送AT指令走下升级流程:

图片

成功从AirM2M_780E_V1138_LTE_AT,
升级到了 AirM2M_780E_V1147_LTE_AT。

接下来就是按照步骤,
升级到 AirM2M_780E_V1162_LTE_AT版本。

图片

四、总结及建议


从以前的老固件做升级,很重要的一点——要考虑到模块内部对差分升级所分配的FOTA分区有多少。如果差分包超过了分区(Air780E模块的FOTA分区看来就是480KB了),超出肯定是升级不了的。

紧接着和领导做了汇报,在本地测试了Air780E模组FOTA升级可以了,流程也写好了,先找了5台在外的设备远程升级,测试一下看升级后掉线的现象也确实减少了,那说明固件没问题。掉线的麻烦事,也完美解决了!

如果你在项目开发中也遇到类似问题,记得一定一定要先注意差分升级FOTA分区大小。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年 人工智能领域的一些成果与未来发展趋势 形式丰富多样

目前人工智能领域发展迅速,在多个方面取得显著成果。2024 人工智能大会展览规模、首发新品数均达历史最高,有超过 500 家企业参展,展品数量超过 1500 项。 在教育领域,人工智能落地成果显著。只需一键扫描就可以自动批改试卷的作业…

基于yolov5滑块识别破解(一)

由于内容较长,将分为两个部分来说明,本文讲解yolov5的部署与训练。 1.YOLOv5部署 云端部署(训练) 服务器创建 如果自己的显卡算力不是很好的,或者是核显电脑,可以租用算力,价格还行一块钱左右就…

nodejs基于vue+express度假村旅游管理系统设计与实现7t82p

目录 功能介绍数据库设计具体实现截图技术栈技术论证解决的思路论文目录核心代码风格详细视频演示源码获取 功能介绍 实现了一个完整的农家乐系统,其中主要有用户表模块、关于我们模块、收藏表模块、公告信息模块、酒店预订模块、酒店信息模块、景区信息模块、景区…

96. UE5 GAS RPG 实现闪电链技能(一)

闪电链有一个施法的过程,就是在按键按下的过程,会在按下的过程一直持续造成伤害,一直等到条件不满足(技能键位抬起,蓝量不足,被眩晕)时,将结束技能,并退出技能状态。 所以…

以太坊客户端Geth的介绍与搭建

一、以太坊客户端 1.介绍 以太坊客户端是指用于连接、交互和参与以太坊区块链网络的软件。以太坊客户端允许用户执行各种操作,如发送交易、挖矿、部署智能合约、同步区块链数据等。 2.功能 区块链同步:客户端会下载并验证以太坊区块链的所有区块&…

7. 无线网络安全

7. 无线网络安全 (1) 无线网络面临的安全威胁 无线网络由于其开放性和无线传输的特性,面临着多种安全威胁,主要包括: 窃听:攻击者可以截获无线电信号并解析出数据,甚至在加密通信中收集加密信息用于以后的分析。 通信阻断:通过DoS攻击或其他干扰手段阻断通信,使设备间无…

TFT-LCD显示屏(1.8寸 STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理:TFT-LCD色彩空间 三、程序设计 main.c文件 lcd.h文件 lcd.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 TFT-LCD,全称Thin Film Transistor Liquid Crystal Display&a…

gitlab修改访问端口

目录 1.找到gitlab.rb文件,一般在/etc/gitlab/路径下 2.打开配置文件,加上代码 3.重新配置 4.重启gitlab 1.找到gitlab.rb文件,一般在/etc/gitlab/路径下 2.打开配置文件,加上代码 打开文件 sudo vi gitlab.rb 加上默认端口配…

苹果AI手机遇阻,国产手机找到超车机遇

行至九月,2024年,这个所谓AI手机的元年,已经走过近三个季度了。 市场最为期待的AI手机机型也基本都发布了。9月20日,首款搭载Apple Intelligence功能的苹果新品iPhone16正式发售。或许是为了进一步扩大销售,今年天猫A…

【JAVA开源】基于Vue和SpringBoot的甘肃非物质文化网站

本文项目编号 T 042 ,文末自助获取源码 \color{red}{T042,文末自助获取源码} T042,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

计算机网络-小型综合网络的搭建涉及到无线路由交换安全

目录 1 拓扑架构 2 做项目的思路 3 做配置 3.1先做核心交换 3.2 防火墙的配置 4 ac 和ap 的配置 4.1 ac上配置安全的东西 5.1 测试​编辑 1 拓扑架构 要求看上面的图 2 做项目的思路 这张网很明显是一个小综合,设计到我们的无线交换,路由…

统信服务器操作系统【SSH登录常见问题】解决方案

方案适用于统信服务器操作系统D/E/A版。 文章目录 前言问题及解决方案问题一问题现象问题原因问题方案问题二问题现象问题原因问题方案问题三问题原因问题方案问题四问题现象问题原因问题方案问题五问题现象问题原因问题方案问题六问题现象问题原因问题方案前言 介绍日常使用s…

语音识别控制(软件、硬件)

1. 环境 python版本:3.11.9 2. 完整代码 import sqlite3 import time import wave # 使用wave库可读、写wav类型的音频文件 from funasr import AutoModel import sounddevice as sd import numpy as np from modelscope import pipeline, Tasks from pypinyin …

软件著作权登记所需要的材料

软件著作权登记所需材料全面解析 在当今数字化时代,软件著作权作为保护软件开发者智力劳动成果的重要法律手段,其登记过程显得尤为重要。 一、软件著作权登记申请表 首先,软件著作权登记需要提交的最基本材料是《软件著作权登记申请表》。这份…

深度优先搜索算法及其matlab程序详解

#################本文为学习《图论算法及其MATLAB实现》的学习笔记################# 深度优先搜索算法(DepthFirst Search),简记DFS算法,是图论中的首要算法,其思想方法渗透到图论中的许多算法之中,尤其是DFS算法在求生成树、割点、块和平面图嵌入算法中起着极为关键的作用。…

写文档-画UML图-编程的秘密武器:Kimi智能助手

在快速发展的软件开发领域,如何高效地编写需求分析文档、软件设计文档以及代码,成为每位程序员和架构师面临的重要挑战。今天,我要向大家介绍一款强大的工具——Kimi智能助手,它将帮助你提升工作效率,优化开发流程。 …

【图灵完备 Turing Complete】游戏经验攻略分享 Part.5 编程

编程部分的话,第一关会让你输入机器码,这一章节还是比较简单的,因为操作码是固定给出的,只需要根据题意去编写,完成这章目的是为了解锁下面的关卡。 输入,移动COPY之后进行运算,然后输出。 激光…

18937 阿克曼(Ackmann)函数

### 思路 1. **递归定义**:根据阿克曼函数的定义,使用递归来计算函数值。 2. **递归终止条件**: - 当 m 0 时,返回 n 1�� - 当 m > 0 且 n 0 时,返回 ackermann(m - 1, 1)。 - 当…

基于单片机的粮仓环境检测系统设计

本设计主要由处理模块、温湿度检测模块、数据显示模块、声光报警模块和按钮的输入模块组成。采用了AT89C52作为主要的控制单元,利用DHT11温湿度传感器,对粮食仓库中的温度和湿度等展开检测,并在LCD1602液晶显示器中进行实时显示。同时&#x…

C++之GradeBook类

主文件 #include <iostream> #include "GradeBook.h"using namespace std;int main() {GradeBook myGradeBook; // 创建一个对象cout << "请输入课程名称:" ;string courseName;cin >> courseName;cout << "请输入学生人数&…