我正在使用带有自定义分区表的 PlatformIO 对 ESP32 S2 WROOM 进行编程,该分区表允许我在 app0 分区中存储尽可能多的数据,并在 nvs 分区中存储相当多的用户设置。
我尝试看看我可以获得多大的分区,首先我通过手动计算分区偏移量,并将大小增加到像 600MB 这样的巨大数字,因为编译器似乎并不关心我的任何分区的大小,只要它们保持在 32 位数字的范围内。这不好,因为我的 ESP 模型最多只能存储 4MB,所以我尝试以不同的方式溢出内存偏移量和大小,看看编译器是否真的不关心...它不关心。这是一个问题,因为我现在永远不知道我制作的分区表是否实际上有效。这是最新的迭代: 分区表图片
也是的,在编译我的代码时,我可以看到 app0 大小增加了,因此它实际上读取了表格。
简而言之: 尝试过: 尝试将不同分区的内存大小设置为巨大的大小
预期结果: 编译器会因为我使用无效的内存地址/大小而对我大喊大叫
实际发生了什么: 编译器不关心
分区工具不知道您设备上的 SPI Flash 的大小。这是因为闪存是外部组件,理论上可以采用市场上销售的任何尺寸。乐鑫销售带有 4-32 MiB 大小闪存芯片的开发套件。另外,您可以安装自己的任何尺寸的闪存芯片。
只有当您将图像写入特定设备时,检查它是否适合才有意义,而 flasher 工具正是这样做的。在此之前,你有责任做算术:)