1. 前言
Arduino ESP32有多个不同的分区版本。
我们在ESP32 for Arduino的工具中,有一个选项,可以配置不同的分区表
,这里已经做好了一些,一般我们都是使用默认的,如下图所示:
分别代表什么意思呢?
我们找到这个描述文件,这里博主对应sdk版本是 2.0.11:
我们打开default.csv
,对应默认的分区表:
表格里面
- Name 对应各个分区名字
- Offset 对应的
偏移地址
- Size 对应
占用大小
比如,nvs分区,从0x9000地址处开始,大小为0x5000,也就是20480
字节的大小。
2. 分区表说明
网上找到一张ESP32的阿里云分区表。
- 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. 程序烧录
这个烧录过程就有各个区分的操作过程,包括Bootloader区、Partition Table区、app区。
4. 分区表如何对应配置
如何查找哪个配置对应哪个csv文件呢?
找一下Board.txt文件。
随便以一个为案例(Default 4MB with spiffs):