如何实现 OTA 升级

[English]

本文档指导如何为 ESP32 系列模块实现 OTA 升级。目前,ESP-AT 针对不同场景提供了以下三种 OTA 命令。您可以根据自己的需求选择适合的 OTA 命令。

文档结构如下所示:

OTA 命令对比及应用场景

AT+USEROTA

此命令通过 URL 实现 OTA 升级。您可以升级到放置在 HTTP 服务器上的固件。目前该命令仅支持应用分区升级。请参考 AT+USEROTA 获取更多信息。

由于此命令属于用户自定义命令,您可以通过修改 at/src/at_user_cmd.c 源代码来实现该命令。

此命令的应用场景如下:

  1. 您有属于自己的 HTTP 服务器。

  2. 您必须指定 URL。

重要

  • 如果您升级的固件为非乐鑫正式发布的固件,在升级完成后,您可能无法使用 AT+CIUPDATE 命令升级,除非您按照 使用 AT+CIUPDATE 进行 OTA 升级 创建了自己的设备。

AT+CIUPDATE

此命令使用 iot.espressif.cn 作为默认 HTTP 服务器。该命令不仅可以升级应用程序分区,还可以升级 at_customize.csv 中定义的用户自定义分区。如果您使用的是乐鑫发布的版本,该命令将只会升级到乐鑫发布的版本。请参考 AT+CIUPDATE 获取更多信息。

使用该命令升级自定义 bin 文件,请选择以下方式之一。

  1. 将 iot.espressif.cn 替换为您自己的 HTTP 服务器,并实现交互流程。 如何实现自己的 AT+CIUPDATE 命令,请参考 at/src/at_ota_cmd.c

  2. 在 iot.espressif.cn 上创建一个设备,并在其上上传 bin 文件。(前提是模组中运行的固件已经对应您在乐鑫服务器上创建的设备。) 请参考 使用 AT+CIUPDATE 进行 OTA 升级 获取更多信息。

此命令的应用场景如下:

  1. 您只使用乐鑫发布的固件,只想升级到乐鑫发布的固件。

  2. 您希望升级自定义的 bin 文件,但没有自己的 HTTP 服务器。

  3. 您有自己的 HTTP 服务器。除了升级应用程序分区外,还希望升级在 at_customize.csv 文件中定义的用户自定义分区。

AT+WEBSERVER

此命令通过浏览器或微信小程序升级 AT 固件。目前,该命令仅提供升级应用程序分区的功能。在开始升级之前,请启用 web 服务器命令并提前将 AT 固件复制到电脑或者手机上。您可以参考 AT+WEBSERVER 或者 Web Server AT 示例 获取更多信息。

为了实现您自己的 HTML 页面,请参考示例 fs_image/index.html。为了实现您自己的 AT+WEBSERVER 命令,请参考示例 at/src/at_web_server_cmd.c

此命令的应用场景如下:

  1. 您需要更方便快捷的 OTA 升级,不依赖于网络状态。

重要

  • 如果您升级的固件为非乐鑫正式发布的固件,在升级完成后,您可能无法使用 AT+CIUPDATE 命令升级,除非您按照 使用 AT+CIUPDATE 进行 OTA 升级 创建了自己的设备。

使用 ESP-AT OTA 命令执行 OTA 升级

使用 AT+USEROTA 进行 OTA 升级

请参考 AT+USEROTA 获取更多信息。

使用 AT+CIUPDATE 进行 OTA 升级

通过 AT+CIUPDATE 命令升级自定义的 bin 文件,首先要做的就是将 bin 文件上传到 iot.espressif.cn 并且获取到 token 值。以下步骤描述了如何在 iot.espressif.cn 上创建设备并上传 bin 文件。

  1. 打开网站 http://iot.espressif.cn 或者 https://iot.espressif.cn

    打开 iot.espressif.cn 网站

    打开 iot.espressif.cn 网站

  2. 点击网页右上角的 “Join”,输入您的名字,邮箱地址和密码。

    加入 iot.espressif.cn

    加入 iot.espressif.cn

备注

  • 当前 Join 功能暂不对新用户开放。如果您想使用该功能,请联系 乐鑫

  1. 点击网页左上角的 “Device”,然后点击 “Create” 来创建一个设备。

    点击 "Device"

    点击 “Device”

    点击 "Create"

    点击 “Create”

  2. 当设备创建成功后会生成一个密钥,如下图所示:

    生成一个密钥

    生成一个密钥

  3. 使用该密钥来编译您的 OTA bin 文件。配置 AT OTA token 密钥的过程如下如所示:

    配置 AT OTA token 密钥 - 步骤 1

    配置 AT OTA token 密钥 - 步骤 1

    配置 AT OTA token 密钥 - 步骤 2 和 3

    配置 AT OTA token 密钥 - 步骤 2 和 3

    备注

    如果使用 SSL OTA,选项 “The SSL token for AT OTA” 也需要配置。

  4. 点击 “Product” 进入网页,如下如所示。单击创建的设备,在 “ROM Deploy” 下输入版本和 corename。将步骤 5 中的 bin 文件重命令为 “ota.bin” 并保存。

    输入版本和 corename

    输入版本和 corename

    备注

    • 如果您想要升级 at_customize.csv 中定义的用户自定义分区,只需将 ota.bin 替换为用户自定义分区的 bin 文件即可。

    • 对于 corename 字段,此字段仅仅用于帮助您区分 bin 文件。

  5. 单击 ota.bin 将其保存为当前版本。

    保存当前版本的 ota.bin

    保存当前版本的 ota.bin

  6. 在设备上运行 AT+USEROTA 命令。如果网络已连接,将开始 OTA 升级。

重要

  • 设置上传到 iot.espressif.cn 的 bin 文件名称时,请遵循以下规则:

    • 如果升级 app 分区,请将 bin 文件名设置为 ota.bin

    • 如果升级用户自定义的分区,请将 bin 文件名设置为 at_customize.csv 中的 Name 字段。 例如,如果升级 factory_Param 分区,请将其设置为 factory_ param.bin

  • ESP-AT 将新固件存储在备用 OTA 分区中。这样,即使 OTA 由于意外原因失败,原始 ESP-AT 固件也能正常运行。但对于自定义分区,由于 ESP-AT 没有备份措施,请小心升级。

  • 如果您打算从一开始只升级自定制的 bin 文件,那么在发布初始版本时,就应该将 OTA token 设置为自己的 token 值。

使用 AT+WEBSERVER 进行 OTA 升级

请参考 AT+WEBSERVERWeb Server AT 示例 获取更多信息。