如何自定义分区

[English]

本文档介绍了如何通过修改 ESP-AT 提供的 at_customize.csv 表来自定义 ESP 设备中的分区。共有两个分区表:一级分区表和二级分区表。

一级分区表 partitions_at.csv 供系统使用,在此基础上生成 partitions_at.bin 文件。如果一级分区表出错,系统将无法启动。因此,不建议修改 partitions_at.csv。

ESP-AT 提供了二级分区表 at_customize.csv 供您存储自定义数据块。它基于一级分区表。

要修改 ESP 设备中的分区,请按照前三个步骤操作。第四部分举例说明了前三个步骤。

修改 at_customize.csv

请参考下表找到模组的 at_customize.csv。

at_customize.csv 路径

平台

模组

路径

ESP32

  • WROOM-32

  • PICO-D4

  • SOLO-1

  • MINI-1

module_esp32_default/at_customize.csv

ESP32

WROVER-32

module_wrover-32/at_customize.csv

ESP32

ESP32-D2WD

module_esp32-d2wd/at_customize.csv

ESP32

ESP32_QCLOUD

module_esp32_qcloud/at_customize.csv

ESP32-C3

MINI-1

module_esp32c3_default/at_customize.csv

ESP32-C3

ESP32C3_QCLOUD

module_esp32c3_qcloud/at_customize.csv

然后,在修改 at_customize.csv 时遵循以下规则。

  • 已定义的用户分区的 NameType 不可更改,但 SubTypeOffsetSize 可以更改。

  • 如果您需要添加一个新的用户分区,请先检查它是否已经在 ESP-IDF (esp_partition.h) 中定义。

    • 如果已定义,请保持 Type 值与 ESP-IDF 的相同。

    • 如果未定义,请将 Type 设置为 0x40

  • 用户分区的 Name 不应超过 16 字节。

  • at_customize 分区的默认大小定义在 partitions_at.csv 表中,添加新用户分区时请不要超出范围。

生成 at_customize.bin

修改 at_customize.csv 后,您可以重新编译 ESP-AT 工程或使用 python 脚本 gen_esp32part.py 来生成 at_customize.bin 文件。

如果使用脚本,在 ESP-AT 工程根目录下执行以下命令,并替换 INPUTOUTPUT

python esp-idf/components/partition_table/gen_esp32part.py <INPUT> [OUTPUT]
  • INPUT 替换为待解析的 at_customize.csv 或二进制文件的路径。

  • OUTPUT 替换为生成的二进制或 CSV 文件的路径,如果省略,将使用标准输出。

烧录 at_customize.bin 至 ESP 设备

将 at_customize.bin 下载到 flash 中。关于如何将二进制文件烧录至 ESP 设备,请参考 烧录 AT 固件至设备。下表为不同模组 at_customize.bin 文件的下载地址。

不同模组 at_customize.bin 的下载地址

平台

模组

地址

大小

ESP32

  • WROOM-32

  • WROVER-32

  • PICO-D4

  • SOLO-1

  • MINI-1

  • ESP32-D2WD

  • ESP32_QCLOUD

0x20000

0xE0000

ESP32-C3

MINI-1

0x1E000

0x42000

ESP32-C3

ESP32C3_QCLOUD

0x20000

0xE0000

在某些情况下,必须将 at_customize.bin 下载到 flash 后才能使用一些 AT 命令:

示例

本节介绍如何将名为 test 的 4 KB 分区添加到 ESP32-WROOM-32 模组中。

首先找到 ESP32-WROOM-32 的 at_customize.csv 表,设置新分区的 NameTypeSubTypeOffsetSize

# Name,Type,SubType,Offset,Size
... ...
test,0x40,15,0x3D000,4K
fatfs,data,fat,0x70000,576K

第二步,重新编译 ESP-AT 工程,或者在 ESP-AT 根目录下执行 python 脚本生成 at_customize.bin。

python esp-idf/components/partition_table/gen_esp32part.py -q ./module_config/module_esp32_default/at_customize.csv at_customize.bin

然后,ESP-AT 根目录中会生成 at_customize.bin。

第三步,下载 at_customize.bin 至 flash。

在 ESP-AT 工程根目录下执行以下命令,并替换 PORTBAUD

python esp-idf/components/esptool_py/esptool/esptool.py -p PORT -b BAUD --before default_reset --after hard_reset --chip auto  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x20000 ./at_customize.bin
  • PORT 替换为端口名称。

  • BAUD 替换为波特率。