跳转至

一、FOTA 概述

FOTA 即远程升级功能,此功能可以让客户在不方便大量线刷升级(设备不在身边/量产 PCB 没引出 USB/需要大批量进行功能升级)的情况下,快速进行 AT 固件的远程更新。

780ER AT 固件支持合宙 iot 平台升级和自建第三方服务器(HTTP)升级

二、演示功能概述

本文将详细讲述如何进行 AT 固件的远程升级。

三、准备硬件环境

“古人云:‘工欲善其事,必先利其器。’在深入介绍本功能示例之前,我们首先需要确保以下硬件环境的准备工作已经完成。”

本文章使用 Air780ER 核心板做演示;

参考:硬件环境清单,准备以及组装好硬件环境。

四、FOTA 软硬件参考

FOTA 和硬件基本无关,软件流程可参考 AT 手册

五、准备软件环境

“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。

1. Luatools工具

2. LLCOM 串口通信工具

3. 本教程使用的AT固件版本号是:AirM2M_780ER_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: Air780E
Revision: AirM2M_780ER_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: Air780ER
Revision: AirM2M_780ER_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 平台查询升级日志来确认错误原因

也可以点击这里查看具体失败的原因和解决方法