1. 前言

Arduino ESP32有多个不同的分区版本。
我们在ESP32 for Arduino的工具中,有一个选项,可以配置不同的分区表,这里已经做好了一些,一般我们都是使用默认的,如下图所示:
ESP32 for Arduino 分区信息-LMLPHP
分别代表什么意思呢?

我们找到这个描述文件,这里博主对应sdk版本是 2.0.11:

ESP32 for Arduino 分区信息-LMLPHP
我们打开default.csv,对应默认的分区表:
ESP32 for Arduino 分区信息-LMLPHP表格里面

  • Name 对应各个分区名字
  • Offset 对应的偏移地址
  • Size 对应占用大小

比如,nvs分区,从0x9000地址处开始,大小为0x5000,也就是20480字节的大小。

2. 分区表说明

网上找到一张ESP32的阿里云分区表。
ESP32 for Arduino 分区信息-LMLPHP

  • 0-0x1000 保留
  • 0x1000-0x8000 Bootloader分区
  • 0x8000-0x9000 Partition Table分区,保存着分区表
  • 0x9000-0xD000 NVS分区,可以存储一些PHY初始化数据,也可以存储其他数据,一些断电存储的数据建议放在这里
  • 0xD000-0xF000 OTA data分区,系统从哪个app分区启动由这里存储的数据决定
  • 0xF000-0x10000 PHy_init分区,用于存储的PHY初始化数据
  • 0x10000-0x3FFFFF Factory APP分区,保存出厂应用程序(也就是我们平常代码写入的地方),分区表有工厂应用程序就会启动这个分区的程序
  • Core dump分区,查找系统崩溃时的软件错误,以便开发者分析原因
  • OTA0/OTA1分区,保存OTA下载固件,交替保存在这两个分区,镜像验证无误之后,会更新OTA data分区,分配好下一次应该从哪里启动。
  • fctry分区,保存阿里云四元组,这个就是私有数据了,可以在存储空间的最后分配一些空间用于保存一些APP的激活数据之类的,没有用到就可以忽略。

3. 程序烧录

ESP32 for Arduino 分区信息-LMLPHP
这个烧录过程就有各个区分的操作过程,包括Bootloader区、Partition Table区、app区。

4. 分区表如何对应配置

ESP32 for Arduino 分区信息-LMLPHP
如何查找哪个配置对应哪个csv文件呢?
找一下Board.txt文件。
ESP32 for Arduino 分区信息-LMLPHP
随便以一个为案例(Default 4MB with spiffs):
ESP32 for Arduino 分区信息-LMLPHP

11-04 10:28