远程升级频频失败?原因竟然是…

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

赶紧排查原因!

通过换货、换SIM卡对比排查测试,发现只有去年采购的那批模块在客户环境附近会出现掉线的情况,而今年采购的模块批次就不会掉线。。。

继续追究原因,联系对应的销售工作人员,了解到差异就是模块内的固件版本不同。

去年采购的那批模块版本是:
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.xdnf.cn/news/1546859.html

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

相关文章

【YOLO目标检测马铃薯叶病害数据集】共1912张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:1912 标注数量(txt文件个数):1912 标注类别数:5 标注类别名称: health General early blight Severe early blight General late blight Severe late bligh…

OPenCV源码编译 调试 注意事项教程(建议收藏)

为了更深入的学习和了解OPenCV的开源魅力,我们可以将OPenCV的源码进行编译,重新生成解决方案,得到二进制文件,或者修改原版官方的OpenCV代码,并编译后为自己所用,也可以编译后进入到源码中调试,…

桌面专业版【如何进入livecd救援模式拷贝数据】方法介绍

UOS统信在无法进入桌面、tty2或者忘记密码的情况下,如何进入livecd模式,从而实现对系统进行维护、备份数据等。 文章目录 功能概述操作方法步骤一:制作启动盘步骤二:从U盘启动步骤二:进入编辑模式步骤三:删…

线程LWP的概念和控制

一、线程的概念 课本:线程是比进程更加轻量化的一种执行流/线程是在进程内部执行的一种执行流 我们:线程是CPU调度的基本单位/进程是承担系统资源的基本实体 地址空间是进程的“资源”窗口,我们通过栈去访问我们的变量,堆去访问…

找不到concrt140.dll怎么修复,这4种方法可轻松搞定

1. concrt140.dll 定义 1.1 系统文件 concrt140.dll 是一个系统文件,属于 Windows 操作系统中重要的动态链接库(DLL)之一。它通常位于系统的 System32 或 SysWOW64 文件夹中,是 Microsoft Visual C 2015 Redistributable 包的一…

Spring Boot电商开发:购物商城系统

第2章 关键技术简介 2.1 Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译&#xf…

3D 家庭室内设计软件Live Home 3D Pro for Mac

Live Home 3D Pro for Mac 是一款功能卓越的 3D 家庭室内设计软件,具有多方面的优势和特点: 软件下载地址 丰富的设计功能12: 平面图绘制:用户可以使用直观的点击式绘图工具创建详细的二维平面图。提供房间工具、圆弧和直墙工具…

【CSS】鼠标 、轮廓线 、 滤镜 、 堆叠层级

cursor 鼠标outline 轮廓线filter 滤镜z-index 堆叠层级 cursor 鼠标 值说明值说明crosshair十字准线s-resize向下改变大小pointer \ hand手形e-resize向右改变大小wait表或沙漏w-resize向左改变大小help问号或气球ne-resize向上右改变大小no-drop无法释放nw-resize向上左改变…

记录打鼾软件

记录打鼾软件,在现代快节奏的生活中,足够的睡眠是健康生活的保证。然而,打鼾这一常见的睡眠问题却困扰着许多人,影响他们的睡眠质量,甚至可能引发更严重的健康问题。随着科技的进步,记录打鼾的软件应运而生&#xff0c…

设计模式之门面(Facade)模式

前言 在组建构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至跟本无法实现。采用添加一层(间接)稳定接口,来隔离本来互相紧密关联的接口是一种常见的解决方案 定义 “接口隔离” 模式。为子系统中的一组接口提供一个一…

Spring Boot技术:构建高效网上购物平台

第3章 系统分析 3.1 可行性分析 在系统开发之初要进行系统可行分析,这样做的目的就是使用最小成本解决最大问题,一旦程序开发满足用户需要,带来的好处也是很多的。下面我们将从技术上、操作上、经济上等方面来考虑这个系统到底值不值得开发。…

Linux下永久修改hostname

root登录 vi /etc/sysconfig/networkvi /etc/hostsreboot重启服务器 hostname查询

多线程基础 保姆级讲解

多线程基础 认识线程1)线程是什么2) 为啥要有线程3) 进程和线程的区别 (经典面试题) 多线程线程的创建方式方法1 继承 Thread 类方法2 实现 Runnable 接口方法3 使用匿名内部类创建 Thread 子类对象方法4 匿名内部类创建 Runnable 子类对象方法5 lambda …

塑封芯片多大才需要点胶加固保护?

塑封芯片多大才需要点胶加固保护? 塑封芯片是否需要点胶加固保护,并不完全取决于芯片的大小,而是由多种因素共同决定的。以下是一些影响是否需要点胶加固保护的主要因素: 芯片的应用场景:如果芯片所处的环境较为恶劣&a…

买量内卷严重,小游戏们不得不迈向长期展线

小游戏这两年有多火爆自然不必多说。根据《2024 年 1-6 月中国游戏产业报告》,今年 1-6 月国内移动游戏市场实销收入 1075.17 亿元,同比增长 0.76%,较为平稳;但同时小程序移动游戏(即小游戏)收入达 166.03 …

如何在网站建设中不被外包建站公司忽悠?

让我来公开一些代建站行业忽悠甲方背后的套路吧, 长篇干货警告! 像我们这一行网站建设的外包服务商,忽悠人的情况是普遍的事情! 很多低劣的外包公司,凭着做一单忽悠一单的手段,成为了我们建站行业的害群之…

Python 使用selenium 4.25 进行爬虫(1)

都说python做爬虫比较好,于是我跟着大家的脚步学习python进行爬虫,但是调试了半天,出现各种各样的问题,最终都得到实现了,下面我们来看具体的代码: from selenium import webdriver from selenium.webdriv…

秋招突击——9/13——携程提前准备和实际面经——专程飞过去线下,结果一面挂(难受)

文章目录 引言面经收集面经整理一1. ArrayList和LinkedList2. 线程安全的列表和链表有么?如果没有怎么实现?3. threadlocal4. synchronized锁升级过程及原理5. ReentrantLock原理,以及和synchronized的对比6. 线程池工作原理7. redis常用数据…

Blob数据类型报错时如何获取错误信息

const pdfOrg async (record) > {// 假设 transferExportPdf是结构 result 返回的错误信息let result await transferExportPdf({ batchId: record.batchId });//blob 结构const blob new Blob([result], {type: result.type,});if (blob.type "application/json&q…

【源码+文档+调试讲解】重庆旅游景点数据分析系统python

摘 要 重庆旅游景点数据分析系统是一个专门为旅游管理部门和景点运营商设计的信息化工具,它通过集成和分析各种数据来优化景点管理和提升游客体验。该系统能够实时收集游客流量、景点信息、满意度反馈等关键信息,帮助管理者洞察游客行为和市场趋势。系统…