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

当ESP32使用蓝牙、WiFi和OTA功能导致程序超过1M时,系统可能无法启动。解决方法是自定义分区表扩大程序存储空间。步骤包括创建CSV文件并修改`menuconfig`中的分区表选项。确保分区大小为4k的倍数,并保持ota分区与factory分区大小一致。此方法适用于因程序过大引起的启动问题。
摘要由CSDN通过智能技术生成

序言

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)相同

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32是一种具有低功耗的WiFi蓝牙双模片,它可广泛应用于物联网项目中。而Arduino是一款开源的电子原型平台,提供简单易用的软件和硬件。在ESP32和Arduino的结合下,可以实现蓝牙OTA(Over-The-Air)功能,即通过无线方式对固件进行升级。 蓝牙OTA是一种方便且灵活的升级方式,不需要使用USB或串口进行连接,使得固件升级更加简便。使用ESP32 Arduino库,我们可以轻松地在ESP32上实现蓝牙OTA功能。 要使用蓝牙OTA功能,首先需要确保ESP32正常连接到蓝牙设备上。可以使用ESP32的BluetoothSerial库来简化蓝牙串口通信。然后,我们需要准备新的固件文件并将其传输到ESP32。可以使用ESP32的WirelessUpdate库,该库提供了OTA功能所需的基本函数和方法。 在传输固件文件期间,我们需要确保蓝牙连接的稳定性和数据传输的完整性。可以在代码中使用一些检查和验证机制,如CRC校验,以确保固件的正确传输。 最后,需要在ESP32上配置OTA服务器的相关参数,如服务器的IP地址和固件文件的位置。一旦配置完成,ESP32就可以通过蓝牙连接到OTA服务器,并根据指令进行固件升级。 总结起来,ESP32 Arduino蓝牙OTA功能是一种方便且灵活的固件升级方式,可以通过无线方式进行升级,而不需要使用USB或串口连接。通过使用ESP32 Arduino库和WirelessUpdate库,我们可以轻松地在ESP32上实现蓝牙OTA功能,并通过蓝牙连接到OTA服务器进行固件升级。这为物联网项目的开发和维护提供了便利和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值