esp32 同时打开蓝牙,wifi和ota后程序过大导致无法启动
Posted zornlink
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了esp32 同时打开蓝牙,wifi和ota后程序过大导致无法启动相关的知识,希望对你有一定的参考价值。
序言
esp32如果使同时使用了蓝牙模块、wifi模块和ota的话很有可能会导致程序过大(超过1M),系统无法启动的情况。这里提供一种通过修改分区表扩大程序储存空间的方法来避免这一问题。这一解决方法同样只用于因为其他问题导致的程序过大的情况。
现象
上电后esp32会屏幕重启,如果此时接通串口0观察到打印出来的内容。如果开启了日志则会如图1,否则会如图2
图1 图2
解决
造成这一现象的原因是程序超出了flash中预先分配的程序存储空间(1M),通过修改分区表可以解决。步骤如下:
1.建立自己的分区表.CSV文件
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)相同
以上是关于esp32 同时打开蓝牙,wifi和ota后程序过大导致无法启动的主要内容,如果未能解决你的问题,请参考以下文章
解决方法:ESP32同时打开蓝牙WIFI和OTA后程序过大导致无法启动
解决方法:ESP32同时打开蓝牙WIFI和OTA后程序过大导致无法启动