Arduino IDE增加ESP32flash分区配置选项
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino IDE增加ESP32flash分区配置选项相关的知识,希望对你有一定的参考价值。
Arduino IDE增加ESP32 flash分区配置选项
在ESP32程序开发过程中,可能会遇到编译报内存容量不够,二十几的代码量却没有什么,这可能是是由于硬件分区没有配置好导致的。
注意:自定义分区表特别要注意和你的硬件相对应,flash芯片的大小决定这个分区是否有效,否则有意想不到的事情发现。
前些天把ESP32 DEVKITVI 板子更换了一颗16MB容量的SPI flash
ESP32板是支持16M的Flash,16MB用16进制数表示存储地址的范围是:0x0 - 0x01000000 。
硬件信息配置文件位置:
- 这是我的电脑,文件位置:C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\tools\\partitions
- 对应Arduino IDE里面的地方:
- 配置文件信息要写入到对应的型号开发板的地方才能进行配置,
我的配置主板文件位置:C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6
- 我要将:
C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\tools\\partitions\\large_spiffs_16MB.csv
这个配置信息加入到
意思就是我在选择ESP32 Dev Modeule开发板的时候,我的esp32硬件分区配置那里可以选到最底下那个配置Biboard V0(4.5MB APP with OTA /6.9MB SPIFFS)
- 里面的信息我进行了一下容量备注
从上述分区表中可以看出:APP0区和APP1区各4.5M;数据区为SPIFFS,大小越为6.9M。
- 在配置前在Arduino IDE中,ESP32 Dev Module的硬件分区配置选项中未包含这项配置:
我们要为ESP32 Dev Module加入这个配置。
打开开发板配置文件:C:\\Users\\C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\boards.txt
定位开发板的名字:esp32.name=ESP32 Dev Module,如下图所示:
在此配置文件中ESP32 Dev Module分区配置的最后一行代码是:
esp32.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
- 继续打开board.txt文件在
esp32.name=ESP32 Dev Module
型号下面加入以下配置信息:
esp32.menu.PartitionScheme.large_spiffs=Biboard V0(4.5 MB APP with OTA /6.9 MB SPIFFS)
esp32.menu.PartitionScheme.large_spiffs.build.partitions=large_spiffs_16MB
esp32.menu.PartitionScheme.large_spiffs.upload.maximum_size=4685824
下面分别解释一下这3行代码的含义:
esp32.menu.PartitionScheme.large_spiffs=Biboard V0(4.5 MB APP with OTA /6.9 MB SPIFFS)
ESP32 分区配置的名字,我们起名叫Biboard V0(4.5M APP with OTA /6.9 MB SPIFFS),也可以换成你熟悉的其它名字。
esp32.menu.PartitionScheme.large_spiffs.build.partitions=large_spiffs_16MB
分区配置文件信息,就是large_spiffs_16MB.csv文件。你也可以自己写一个分区文件调整APP和数据区的文件大小。
esp32.menu.PartitionScheme.large_spiffs.upload.maximum_size=4685824
此行代码指定上传最大的程序大小 4685824 bytes。
下面我们试着编译一个简单的程序,测试以上配置是否设置成功。
重新打开Arduino IDE,我们可以看到刚才配置的Biboard:
- 编译程序后,结果如下图所示:
编译完成,程序占用了 246134 字节(KB)的程序存储空间(Flash)(5%)最大可使用4685824 字节( bytes)=4MB。
其中4685824( bytes)就是刚才增加到配置文件的第三行代码中指定的最大程序上传字节数。
至此您已在Arduino IDE中完成了对拥有最大Flash空间的开发板的配置。
对于程序空间分配4MB容量我还是觉得不适合我,于是我将OTA1的去掉,把此空间腾给app0也就是程序存放的空间
- 我在配置13MB的程序存储空间,程序编译后,所占比例更是到了1%。
- 配置如下:去掉了OTA1,节省的空间全部腾给app
- boards.txt文件里面,
esp32.name=ESP32 Dev Module
下面添加配置如下
esp32.menu.PartitionScheme.app65_spiffs=DIY2(6.5 MB APP with OTA /2.9 MB SPIFFS)
esp32.menu.PartitionScheme.app65_spiffs.build.partitions=diy_16MB
esp32.menu.PartitionScheme.app65_spiffs.upload.maximum_size=6553600
esp32.menu.PartitionScheme.app13noota_spiffs3MB=DIY3(13MB No OTA/3MB SPIFFS)
esp32.menu.PartitionScheme.app13noota_spiffs3MB.build.partitions=app13no_ota
esp32.menu.PartitionScheme.app13noota_spiffs3MB.upload.maximum_size=13369344
- 烧录查看分区配置信息的程序,是否配置成功。
- 符合我们的设置分区的预期效果
以上是关于Arduino IDE增加ESP32flash分区配置选项的主要内容,如果未能解决你的问题,请参考以下文章
Arduino ESP32 flash分区表配置信息查询示例程序
Arduino ESP32 flash各型号分区表配置详略整理
Arduino方式开发ESP32笔记:使用Preferences保存数据