码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-25 19:41:56      阅读:447      评论:0      收藏:0      [点我收藏+]

标签:file   factory   info   超过   class   col   idt   width   code   

序言

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后程序过大导致无法启动

标签:file   factory   info   超过   class   col   idt   width   code   

原文地址:https://www.cnblogs.com/zornlink/p/11408925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!