一、FOTA 概述
FOTA 即远程升级功能,此功能可以让客户在不方便大量线刷升级(设备不在身边/量产 PCB 没引出 USB/需要大批量进行功能升级)的情况下,快速进行 AT 固件的远程更新。
780EQ AT 固件支持合宙 iot 平台升级和自建第三方服务器(HTTP)升级
二、演示功能概述
本文将详细讲述如何进行 AT 固件的远程升级。
三、准备硬件环境
“古人云:‘工欲善其事,必先利其器。’在深入介绍本功能示例之前,我们首先需要确保以下硬件环境的准备工作已经完成。”
本文章使用 Air780EQ 核心板做演示;
参考:硬件环境清单,准备以及组装好硬件环境。
四、FOTA 软硬件参考
FOTA 和硬件基本无关,软件流程可参考 AT 手册
五、准备软件环境
“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。
1. Luatools工具;
2. LLCOM 串口通信工具;
3. 本教程使用的AT固件版本号是:AirM2M_780EQ_V2019_LTE_AT,如果版本号不正确,参考:固件版本确认和烧录检查确认。
六、AT 版本远程升级概述
AT 版本的远程升级主要是对 AT 固件文件进行的版本升级,升级方式有多种,可以通过合宙官方 iot 平台升级,同样也可以使用自己的服务器来搭建升级服务。
6.1 合宙 IOT 平台升级及其配置
6.1.1 合宙 IOT 平台配置,点此登录,查询模块是否在自己账号下。 客户向合宙采购 4G 模块时,如果采购人员没有告知合宙这批模块放在 iot.openluat.com 上的哪个产品下,则合宙会以采购人的手机号为账号,默认密码 888888,创建一个“Air7XXE 标准模块”的项目,此次采购的所有模块都会放在这个项目下(注:780E系列 模块的 AT 固件,想要使用合宙的 IOT 平台进行远程升级,则创建的项目名必须叫"Air7XXE 标准模块")。
6.1.2 配置流程 下载最新固件,AT 固件版本获取,固件下载到本地,解压后,将 dfota.bin 文件上传 dfota。如下示例所示
新建固件,上传固件,找到对应项目,点击固件列表。
点击创建固件,上传对应 bin 文件。
上传文件后会自动生成固件名称,不需要修改。
如果配置时,是否全项目升级选的“是”,无需配置 imei,按照上述内容配置即可。
如果配置时,是否全项目升级选的“否”,还需添加模块 imei,如下图所示:
6.2 触发升级方式
触发升级有两种方式,自动触发和手动触发。
6.2.1 手动触发升级
手动触发为模块发送指定 AT 指令触发升级。
如下是模块从 V2014升级到 V2019 的流程。
完整交互流程如下
2024-11-11 18:12:03.459 +08:00 [INF] ->^boot.rom'v'!\n
2024-11-11 18:12:03.459 +08:00 [DBG] [HEX]5E 62 6F 6F 74 2E 72 6F 6D 01 27 76 00 00 00 02 27 21 5C 6E
2024-11-11 18:12:04.489 +08:00 [INF] ->
RDY
2024-11-11 18:12:04.489 +08:00 [DBG] [HEX]0D 0A 52 44 59 0D 0A
2024-11-11 18:12:09.874 +08:00 [INF] ->
^MODE: 17,17
+E_UTRAN Service
+CGEV: ME PDN ACT 1,0
+NITZ: 2024/11/11,10:12:10+0,0
2024-11-11 18:12:17.148 +08:00 [INF] <-AT
2024-11-11 18:12:17.148 +08:00 [DBG] [HEX]41 54 0D 0A
2024-11-11 18:12:17.255 +08:00 [INF] ->AT
OK
2024-11-11 18:12:17.255 +08:00 [DBG] [HEX]41 54 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 18:12:25.342 +08:00 [INF] <-AT*I
2024-11-11 18:12:25.342 +08:00 [DBG] [HEX]41 54 2A 49 0D 0A
2024-11-11 18:12:25.471 +08:00 [INF] ->AT*I
Manufacturer: AirM2M
Model: Air780EQ
Revision: AirM2M_780EQ_V2014_LTE_AT
HWver: A16
Buildtime: May 28 2024 16:41:27
IMEI: 868327073939157
ICCID: 898604981022C0256558
IMSI: 460081899906558
OK
2024-11-11 18:49:34.808 +08:00 [DBG] [HEX]41 54 2B 43 53 51 3F 0D 0A 0D 0A 45 52 52 4F 52 0D 0A
2024-11-11 19:47:59.829 +08:00 [INF] <-AT+CPIN?
2024-11-11 19:47:59.829 +08:00 [DBG] [HEX]41 54 2B 43 50 49 4E 3F 0D 0A
2024-11-11 19:47:59.939 +08:00 [INF] ->AT+CPIN?
+CPIN: READY
OK
2024-11-11 19:47:59.939 +08:00 [DBG] [HEX]41 54 2B 43 50 49 4E 3F 0D 0A 0D 0A 2B 43 50 49 4E 3A 20 52 45 41 44 59 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 19:48:08.585 +08:00 [INF] <-AT+CGATT?
2024-11-11 19:48:08.585 +08:00 [DBG] [HEX]41 54 2B 43 47 41 54 54 3F 0D 0A
2024-11-11 19:48:08.692 +08:00 [INF] ->AT+CGATT?
+CGATT: 1
OK
2024-11-11 19:48:08.692 +08:00 [DBG] [HEX]41 54 2B 43 47 41 54 54 3F 0D 0A 0D 0A 2B 43 47 41 54 54 3A 20 31 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 19:48:13.212 +08:00 [INF] <-AT+CSQ
2024-11-11 19:48:13.212 +08:00 [DBG] [HEX]41 54 2B 43 53 51 0D 0A
2024-11-11 19:48:13.320 +08:00 [INF] ->AT+CSQ
+CSQ: 30,0
OK
2024-11-11 19:48:13.320 +08:00 [DBG] [HEX]41 54 2B 43 53 51 0D 0A 0D 0A 2B 43 53 51 3A 20 33 30 2C 30 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 19:48:21.669 +08:00 [INF] <-AT+UPGRADE
2024-11-11 19:48:21.669 +08:00 [DBG] [HEX]41 54 2B 55 50 47 52 41 44 45 0D 0A
2024-11-11 19:48:21.792 +08:00 [INF] ->AT+UPGRADE
OK
2024-11-11 19:48:21.792 +08:00 [DBG] [HEX]41 54 2B 55 50 47 52 41 44 45 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 19:48:24.685 +08:00 [INF] ->+UPGRADEIND: -1003
2024-11-11 19:48:24.685 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 2D 31 30 30 33 0D 0A
2024-11-11 19:56:36.688 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 2D 31 30 30 33 0D 0A
2024-11-11 19:57:08.439 +08:00 [INF] <-AT+UPGRADE
2024-11-11 19:57:08.439 +08:00 [DBG] [HEX]41 54 2B 55 50 47 52 41 44 45 0D 0A
2024-11-11 19:57:08.546 +08:00 [INF] ->AT+UPGRADE
OK
2024-11-11 19:57:08.546 +08:00 [DBG] [HEX]41 54 2B 55 50 47 52 41 44 45 0D 0A 0D 0A 4F 4B 0D 0A
2024-11-11 19:57:12.830 +08:00 [INF] ->+UPGRADEIND: 10
2024-11-11 19:57:12.830 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 31 30 0D 0A
2024-11-11 19:57:13.220 +08:00 [INF] ->+UPGRADEIND: 20
2024-11-11 19:57:13.220 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 32 30 0D 0A
2024-11-11 19:57:13.543 +08:00 [INF] ->+UPGRADEIND: 30
2024-11-11 19:57:13.543 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 33 30 0D 0A
2024-11-11 19:57:13.884 +08:00 [INF] ->+UPGRADEIND: 40
2024-11-11 19:57:13.884 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 34 30 0D 0A
2024-11-11 19:57:14.257 +08:00 [INF] ->+UPGRADEIND: 50
2024-11-11 19:57:14.257 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 35 30 0D 0A
2024-11-11 19:57:14.600 +08:00 [INF] ->+UPGRADEIND: 60
2024-11-11 19:57:14.600 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 36 30 0D 0A
2024-11-11 19:57:14.944 +08:00 [INF] ->+UPGRADEIND: 70
2024-11-11 19:57:14.944 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 37 30 0D 0A
2024-11-11 19:57:15.308 +08:00 [INF] ->+UPGRADEIND: 80
2024-11-11 19:57:15.308 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 38 30 0D 0A
2024-11-11 19:57:15.669 +08:00 [INF] ->+UPGRADEIND: 90
2024-11-11 19:57:15.669 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 39 30 0D 0A
2024-11-11 19:57:15.979 +08:00 [INF] ->+UPGRADEIND: 100
2024-11-11 19:57:15.979 +08:00 [DBG] [HEX]2B 55 50 47 52 41 44 45 49 4E 44 3A 20 31 30 30 0D 0A
2024-11-11 19:57:19.943 +08:00 [INF] ->^boot.rom'v'!\n
2024-11-11 19:57:19.943 +08:00 [DBG] [HEX]5E 62 6F 6F 74 2E 72 6F 6D 01 27 76 00 00 00 02 27 21 5C 6E
2024-11-11 19:57:20.518 +08:00 [INF] ->+QIND: "FOTA","START"
+QIND: "FOTA","UPDATING",0
2024-11-11 19:57:20.518 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 53 54 41 52 54 22 0D 0A 2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 30 0D 0A
2024-11-11 19:57:21.637 +08:00 [INF] ->+QIND: "FOTA","UPDATING",2
2024-11-11 19:57:21.637 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 32 0D 0A
2024-11-11 19:57:22.814 +08:00 [INF] ->+QIND: "FOTA","UPDATING",5
2024-11-11 19:57:22.814 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 35 0D 0A
2024-11-11 19:57:23.950 +08:00 [INF] ->+QIND: "FOTA","UPDATING",8
2024-11-11 19:57:23.950 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 38 0D 0A
2024-11-11 19:57:25.132 +08:00 [INF] ->+QIND: "FOTA","UPDATING",10
2024-11-11 19:57:25.132 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 31 30 0D 0A
2024-11-11 19:57:27.471 +08:00 [INF] ->+QIND: "FOTA","UPDATING",16
2024-11-11 19:57:27.471 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 31 36 0D 0A
2024-11-11 19:57:29.943 +08:00 [INF] ->+QIND: "FOTA","UPDATING",21
2024-11-11 19:57:29.943 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 32 31 0D 0A
2024-11-11 19:57:31.235 +08:00 [INF] ->+QIND: "FOTA","UPDATING",24
2024-11-11 19:57:31.235 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 32 34 0D 0A
2024-11-11 19:57:32.515 +08:00 [INF] ->+QIND: "FOTA","UPDATING",27
2024-11-11 19:57:32.515 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 32 37 0D 0A
2024-11-11 19:57:33.167 +08:00 [INF] ->+QIND: "FOTA","UPDATING",28
2024-11-11 19:57:33.167 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 32 38 0D 0A
2024-11-11 19:57:35.114 +08:00 [INF] ->+QIND: "FOTA","UPDATING",32
2024-11-11 19:57:35.114 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 33 32 0D 0A
2024-11-11 19:57:37.697 +08:00 [INF] ->+QIND: "FOTA","UPDATING",38
2024-11-11 19:57:37.697 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 33 38 0D 0A
2024-11-11 19:57:39.006 +08:00 [INF] ->+QIND: "FOTA","UPDATING",41
2024-11-11 19:57:39.006 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 34 31 0D 0A
2024-11-11 19:57:40.315 +08:00 [INF] ->+QIND: "FOTA","UPDATING",43
2024-11-11 19:57:40.315 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 34 33 0D 0A
2024-11-11 19:57:40.988 +08:00 [INF] ->+QIND: "FOTA","UPDATING",45
2024-11-11 19:57:40.988 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 34 35 0D 0A
2024-11-11 19:57:41.624 +08:00 [INF] ->+QIND: "FOTA","UPDATING",46
2024-11-11 19:57:41.624 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 34 36 0D 0A
2024-11-11 19:57:42.897 +08:00 [INF] ->+QIND: "FOTA","UPDATING",49
2024-11-11 19:57:42.897 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 34 39 0D 0A
2024-11-11 19:57:44.844 +08:00 [INF] ->+QIND: "FOTA","UPDATING",53
2024-11-11 19:57:44.844 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 35 33 0D 0A
2024-11-11 19:57:45.503 +08:00 [INF] ->+QIND: "FOTA","UPDATING",54
2024-11-11 19:57:45.503 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 35 34 0D 0A
2024-11-11 19:57:46.812 +08:00 [INF] ->+QIND: "FOTA","UPDATING",57
2024-11-11 19:57:46.812 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 35 37 0D 0A
2024-11-11 19:57:48.133 +08:00 [INF] ->+QIND: "FOTA","UPDATING",60
2024-11-11 19:57:48.133 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 36 30 0D 0A
2024-11-11 19:57:48.805 +08:00 [INF] ->+QIND: "FOTA","UPDATING",61
2024-11-11 19:57:48.805 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 36 31 0D 0A
2024-11-11 19:57:49.476 +08:00 [INF] ->+QIND: "FOTA","UPDATING",63
2024-11-11 19:57:49.476 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 36 33 0D 0A
2024-11-11 19:57:50.800 +08:00 [INF] ->+QIND: "FOTA","UPDATING",65
2024-11-11 19:57:50.800 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 36 35 0D 0A
2024-11-11 19:57:52.126 +08:00 [INF] ->+QIND: "FOTA","UPDATING",68
2024-11-11 19:57:52.126 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 36 38 0D 0A
2024-11-11 19:57:53.434 +08:00 [INF] ->+QIND: "FOTA","UPDATING",71
2024-11-11 19:57:53.434 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 37 31 0D 0A
2024-11-11 19:57:54.763 +08:00 [INF] ->+QIND: "FOTA","UPDATING",73
2024-11-11 19:57:54.763 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 37 33 0D 0A
2024-11-11 19:57:56.058 +08:00 [INF] ->+QIND: "FOTA","UPDATING",76
2024-11-11 19:57:56.058 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 37 36 0D 0A
2024-11-11 19:57:58.647 +08:00 [INF] ->+QIND: "FOTA","UPDATING",82
2024-11-11 19:57:58.647 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 38 32 0D 0A
2024-11-11 19:58:01.199 +08:00 [INF] ->+QIND: "FOTA","UPDATING",87
2024-11-11 19:58:01.199 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 38 37 0D 0A
2024-11-11 19:58:03.738 +08:00 [INF] ->+QIND: "FOTA","UPDATING",93
2024-11-11 19:58:03.738 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 39 33 0D 0A
2024-11-11 19:58:04.387 +08:00 [INF] ->+QIND: "FOTA","UPDATING",94
2024-11-11 19:58:04.387 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 39 34 0D 0A
2024-11-11 19:58:06.318 +08:00 [INF] ->+QIND: "FOTA","UPDATING",98
2024-11-11 19:58:06.319 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 39 38 0D 0A
2024-11-11 19:58:06.970 +08:00 [INF] ->+QIND: "FOTA","UPDATING",100
2024-11-11 19:58:06.970 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 55 50 44 41 54 49 4E 47 22 2C 31 30 30 0D 0A
2024-11-11 19:58:07.547 +08:00 [INF] ->+QIND: "FOTA","END",0
2024-11-11 19:58:07.547 +08:00 [DBG] [HEX]2B 51 49 4E 44 3A 20 22 46 4F 54 41 22 2C 22 45 4E 44 22 2C 30 0D 0A
2024-11-11 19:58:10.005 +08:00 [INF] ->
RDY
2024-11-11 19:58:10.005 +08:00 [DBG] [HEX]0D 0A 52 44 59 0D 0A
2024-11-11 19:58:12.082 +08:00 [INF] ->
^MODE: 17,17
+E_UTRAN Service
+CGEV: ME PDN ACT 1,0
+NITZ: 2024/11/11,11:58:12+0,0
2024-11-11 19:58:23.444 +08:00 [INF] <-AT*I
2024-11-11 19:58:23.444 +08:00 [DBG] [HEX]41 54 2A 49 0D 0A
2024-11-11 19:58:23.583 +08:00 [INF] ->AT*I
Manufacturer: AirM2M
Model: Air780EQ
Revision: AirM2M_780EQ_V2019_LTE_AT
HWver: A16
Buildtime: Oct 20 2024 23:52:20
IMEI: 868327073939157
ICCID: 898604981022C0256558
IMSI: 460081899906558
OK
6.2.2 自动升级(默认 24 小时以内自动触发)
自动升级是模块定期向后台发送升级请求,来获取新固件进行更新的,大致流程如下:
可以通过 AT+UPGRADE="PERIOD",60 设置自动升级时间,这里设置为 60S 来作为演示:
因为升级过程和上文手动触发一样,所以不在这里单独列出来了
注意: A.客户可以通过 IOT 平台查看升级成功数量,失败日志等信息 B.升级过程中若模块断电、重启导致升级失败,可重新升级 C.模块手动触发升级时,若频繁从同一个版本请求(目前默认一小时内 6 次,24 小时内 10 次),IOT 平台设备状态会自动更改为禁止升级,需要在平台设备列表手动解除 D.升级时间根据差分包的大小不同,升级时间会不同。跨越的版本越大,差分包越大,升级所需的时间越长。
七、自定义服务器升级指南
使用自己的服务器来升级模块和使用 iot 平台升级最重要的区别是下载固件的来源不同。
7.1 差分包的生成
- 其实 FOTA 的过程是新老版本生成差分包再进行升级的过程,那么这个差分的过程在哪里呢?使用合宙 iot 平台升级,差分的过程在 iot 服务器后台,那使用自己的服务器该怎么办呢?答案当然是自己来完成差分的过程,放在服务器等待模块来下载。
- 手动生成差分包的过程使用 doc 平台工具中的差分工具 差分工具
由于本文示例中使用的是 2014 版本的 AT 固件,所以我们在这里找的旧版本固件 bin 文件即是 2014 版本的 bin 文件,用户需要看清楚手上模块当前的版本,然后点击这里找到对应固件的压缩包文件,解压后找到对应 bin 文件
- 本次我们从 V2014升级到 V2019需要准备各自的 bin 远程升级文件,上传完成后等待差分完成,下载得到的差分文件,这里将名字改为 dfota_final_AirM2M_AirM2M_V2014_V2019.bin。
7.2 差分包的放置
- 把生成的固件放到自己的 HTTP 服务器上,然后通过 AT+UPGRADE="URL",""指令设置对应的 URL 链接。
例如我把这个差分文件,放在了合宙内部测试 http 请求的服务器上,对应的 URL 为"http://airtest.openluat.com/download/dfota_final_AirM2M_AirM2M_V2014_V2019.bin"
7.3 升级全过程 升级流程如下,可以上报模块的升级过程:
恭喜你成功从 V1064 版本通过自己服务器搭建 FOTA 服务的方式升级到了更新的 V1070 版本!
八、常见问题
8.1 at 版本自动远程升级,默认 24 小时检测一轮,在一轮检测时,如果链接服务器失败,在应用层有重试机制吗?如果有的话,多久再重连一次?
有重连机制,间隔一分钟,最多尝试 5 次。
8.2 错误码有哪些,都是什么意思?
如果升级失败,可以通过 AT+UPGRADE?查看错误原因
也可以通过 IOT 平台查询升级日志来确认错误原因
也可以点击这里查看具体失败的原因和解决方法