esp32 同时打开蓝牙,wifi和ota后程序过大导致无法启动

序言

esp32如果使同时使用了蓝牙模块、wifi模块和ota的话很有可能会导致程序过大(超过1M),系统无法启动的情况。这里提供一种通过修改分区表扩大程序储存空间的方法来避免这一问题。这一解决方法同样只用于因为其他问题导致的程序过大的情况。

现象

上电后esp32会屏幕重启,如果此时接通串口0观察到打印出来的内容。如果开启了日志则会如图1,否则会如图2

        图1                  图2

 解决

造成这一现象的原因是程序超出了flash中预先分配的程序存储空间(1M),通过修改分区表可以解决。步骤如下:

1.建立自己的分区表.CSV文件

扫描二维码关注公众号,回复: 7094370 查看本文章

2.make menuconfig 菜单中 Partition Table-->Partition Table选择Custom partition table CSV,Custom partition CSV file中指定CSV文件地址。

这里提供一个我的分区表:

nvs, data, nvs, , 0x4000,
otadata, data, ota, , 0x2000,
phy_init, data, phy, , 0x1000,
factory, app, factory, , 0x14F000,
ota_0, app, ota_0, , 0x14F000,
ota_1, app, ota_1, , 0x14F000,

需要注意的是:

1、分配分区表的时候空间一定要是4k的整数倍也就是:存储空间%4096=0。这是因为flash的一个区块是4k。

2、ota分区(ota_0,ota_1)的空间最好和原厂程序(factory)相同

猜你喜欢

转载自www.cnblogs.com/zornlink/p/11408925.html