【ESP32】 OTA 升级简述与 Flash 分区介绍
1. ESP32 OTA 与 Flash 分区
分区表划分了3个 应用程序分区:三个分区都是 app
类型,只是功能不同
factory
分区:出厂应用程序ota_0
分区:保存 OTA 升级时的数据ota_1
分区:保存 OTA 升级时的数据
设备启动时,会查询 otadata 的数据,判断 应该从 哪个 OTA 应用程序分区加载程序
若 otadata
分区为空,则会执行出厂程序,即执行factory
分区的固件
若 otadata
分区不空,则从 otadata
中判断从哪个 OTA
分区加载镜像文件
2. 升级过程简述
假设某次升级固件,存储在ota_0
分区中
嵌入式设备将固件从云端下载完成之后,会在 otadata
分区写入一个标记(如从ota_0
区域加载),
设备重新上电时会先读取 otadata
分区的标记,然后从ota_0
区域加载固件程序
当 ota_0
分区中的固件启动无误之后,会调用函数esp_ota_mark_app_valid_cancel_rollback()
向otadata
分区写ESP_OTA_IMG_VALID
,标记这个分区的固件正确,这样以后每次启动都是从 ota_0
分区架子啊;
若 ota_0
分区第一次启动有错误,则会标记该区域固件有问题,则从ota_1
分区或者 factory
分区加载