ESP32 学习笔记(十六)Over The Air Updates (OTA)

ESP32 远程更新(OTA)详解
本文详细介绍了ESP32的Over The Air Updates (OTA)流程,包括OTA更新概述、数据分区、回滚机制、状态控制以及如何处理意外重启。重点讨论了OTA数据分区的使用和重要性,以及在新应用启动时如何确认其可操作性以避免回滚。还提到了安全OTA更新的实现,以及相关API和应用示例。

Over The Air Updates (OTA)

OTA 流程概述

OTA 更新机制允许设备根据正常固件运行时收到的数据进行更新(例如,通过WiFi或蓝牙).

OTA 要求至少使用两个 “OTA app slot” 分区(即 ota_0ota_1)和 “OTA Data Partition” 来配置设备的分区表.

OTA 操作功能将新的应用程序固件映像写入当前未用于启动的 OTA 应用程序位置. 验证映像后,将更新 OTA 数据分区以指定此映像应用于下次启动.

OTA 数据分区

OTA 数据分区 (type data, subtype ota) 必须包含在使用 OTA 功能的任何项目的分区表中.

对于出厂启动设置,OTA 数据分区不应包含任何数据(所有字节都擦除为 0xFF). 在这种情况下,esp-idf 软件引导加载程序将启动 factory 应用程序(如果它存在于分区表中). 如果分区表中不包含 factory 应用程序,则会启动第一个可用的 OTA 程序(通常为 ota_0).

在第一次 OTA 更新之后,更新 OTA 数据分区以指定下一个应该引导哪个 OTA 应用程序分区.

OTA 数据分区的大小为两个闪存扇区(0x2000 字节),以防止在写入时出现电源故障时出现问题. 扇区被独立擦除并用匹配数据写入,如果它们不同意,则使用计数器字段来确定最近写入哪个扇区.

APP 回滚

应用程序回滚的主要目的是在更新后使设备保持工作。此功能允许您回滚到以前的工作应用程序,以防新应用程序出现严重错误。启用回滚过程并且 OTA 更新提供应用程序的新版本时,可能会发生以下三种情况之一:

  • 应用程序正常,esp_ota_mark_app_valid_cancel_rollback() 使用状态 ESP_OTA_IMG_VALID 标记正在运行的应用程序。启动此应用程序没有任何限制。
  • 应用程序存在严重错误,无法进行进一步的工作,需要回滚到先前的应用程序,esp_ota_mark_app_invalid_rollback_and_reboot() 将正在运行的应用程序标记为 ESP_OTA_IMG_INVALID 并重置。引导加载程序不会选择此应用程序进行引导,并将引导以前工作的应用程序。
  • 如果设置了 CONFIG_APP_ROLLBACK_ENABLE 选项,并且在不调用任何函数的情况下发生重置,则会发生并回滚。

注意:状态不会写入应用程序的二进制映像,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值