分区表
概述
单个 ESP32 的 flash 可以包含多个应用程序,以及许多不同类型的数据(校准数据,文件系统,参数存储等). 因此,分区表被下载到 flash 中的 0x8000 地址(默认偏移量).
分区表长度为 0xC00 字节(最多 95 个分区表条目). 在表数据之后附加 MD5 校验和. 如果分区表由于安全引导而签名,则签名将附加在分区表之后.
分区表中的每个条目都有一个 name
(label),type
(app,data 或其他),subtype
以及加载分区的 flash 中的 offset
(偏移量).
使用分区表的最简单方法是 make menuconfig
并选择一个简单的预定义分区表:
- “Single factory app, no OTA”
- “Factory app, two OTA definitions”
在这两种情况下,factory
应用程序下载到 0x10000 地址. 如果您 make partition_table
,那么它将打印分区表的摘要.
内置分区表
以下是 Single factory app, no OTA
的分区表配置信息:
# Espressif ESP32 Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1M,
- flash 中的 0x10000(64KB) 偏移量被标记为
factory
应用程序. 默认情况下,引导加载程序将运行此应用程序. - 在分区表中还定义了两个用于存储 NVS 库分区和 PHY 初始化数据的数据区域.
以下是 Factory app, two OTA definitions
的分区表配置信息:
# Espressif ESP32 Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x4000,
otadata, data, ota, 0xd000, 0x2000,
phy_init, data, phy, 0xf000, 0x1000,
factory, 0, 0, 0x10000, 1M,
ota_0, 0, ota_0, 0x110000, 1M,
ota_1, 0, ota_1, 0x210000, 1M,
- 现在有三个应用程序分区定