Arduino IDE增加ESP32flash分区配置选项

Arduino IDE增加ESP32 flash分区配置选项


在ESP32程序开发过程中,可能会遇到编译报内存容量不够,二十几的代码量却没有什么,这可能是是由于硬件分区没有配置好导致的。

注意:自定义分区表特别要注意和你的硬件相对应,flash芯片的大小决定这个分区是否有效,否则有意想不到的事情发生。

前些天把ESP32 DEVKITVI 板子更换了一颗16MB容量的SPI flash,ESP32板是支持16M的Flash,16MB用16进制数表示存储地址的范围是:0x0 - 0x01000000 。

Arduino IDE增加ESP32flash分区配置选项_第1张图片

硬件信息配置文件位置:

  • 这是我的电脑,文件位置:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\tools\partitions
    Arduino IDE增加ESP32flash分区配置选项_第2张图片
  • 对应Arduino IDE里面的地方:
    Arduino IDE增加ESP32flash分区配置选项_第3张图片
  • 配置文件信息要写入到对应的型号开发板的地方才能进行配置,
    我的配置主板文件位置:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6
    Arduino IDE增加ESP32flash分区配置选项_第4张图片
  • 我要将:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\tools\partitions\large_spiffs_16MB.csv 这个配置信息加入到
    Arduino IDE增加ESP32flash分区配置选项_第5张图片

意思就是我在选择ESP32 Dev Modeule开发板的时候,我的esp32硬件分区配置那里可以选到最底下那个配置Biboard V0(4.5MB APP with OTA /6.9MB SPIFFS)
Arduino IDE增加ESP32flash分区配置选项_第6张图片

  • 里面的信息我进行了一下容量备注Arduino IDE增加ESP32flash分区配置选项_第7张图片

从上述分区表中可以看出:APP0区和APP1区各4.5M;数据区为SPIFFS,大小越为6.9M。

  • 在配置前在Arduino IDE中,ESP32 Dev Module的硬件分区配置选项中未包含这项配置:
    Arduino IDE增加ESP32flash分区配置选项_第8张图片

我们要为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,如下图所示:
Arduino IDE增加ESP32flash分区配置选项_第9张图片

在此配置文件中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:

Arduino IDE增加ESP32flash分区配置选项_第10张图片

  • 编译程序后,结果如下图所示:
    Arduino IDE增加ESP32flash分区配置选项_第11张图片

编译完成,程序占用了 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分区配置选项_第12张图片

  • 烧录查看分区配置信息的程序,是否配置成功。
    Arduino IDE增加ESP32flash分区配置选项_第13张图片
  • 符合我们的设置分区的预期效果

你可能感兴趣的:(Arduino,ESP32,零基础入门实例教程,ESP32,ESP32硬件分区方法,esp32硬件分区)