【ESP32】 OTA 升级简述与 Flash 分区介绍

分区表划分了3个 应用程序分区:三个分区都是 app 类型,只是功能不同
factory 分区:出厂应用程序ota_0 分区:保存 OTA 升级时的数据ota_1 分区:保存 OTA 升级时的数据设备启动时,会查询 otadata 的数据,判断 应该从 哪个 OTA 应用程序分区加载程序
若 otadata 分区为空,则会执行出厂程序,即执行factory 分区的固件
若 otadata 分区不空,则从 otadata中判断从哪个 OTA 分区加载镜像文件

假设某次升级固件,存储在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 分区加载
