wjhx 2024-09-06 09:55 采纳率: 84.6%
浏览 24
已结题

ESP32的蓝牙配网出现内存不足的问题

使用ESP32S3连接wifi,蓝牙配网出现内存不足的错误:


    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));

    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
    esp_err_t ret = esp_bt_controller_init(&bt_cfg);
    if (ret)
    {
        BLUFI_ERROR("%s initialize bt controller failed: %s\n", __func__, esp_err_to_name(ret));
    }

错误提示:

E (2014) BLE_INIT: Malloc failed
E (2014) BLUFI_EXAMPLE: wifi_init_sta initialize bt controller failed: ESP_ERR_NO_MEM

目前从Flash上说,空间是有的,那这个空间的分配在哪里控制,是不是menuconfig,没有找到对应的项,而且感觉一些使用的组件的原因,这个配置菜单也不是固定的,或者怀疑,这个里面对应的配置项是不是没有。
烦请指点,谢谢。

  • 写回答

1条回答 默认 最新

  • 小ᶻZ࿆ 前沿技术领域新星创作者 2024-09-07 10:36
    关注

    该回答引用自GPT-4o,由博主小ᶻZ࿆编写:

    根据题主提供的问题,ESP32S3 在使用蓝牙配网时出现了内存不足的错误,代码如下:

    ESP_ERROR_CHECK(esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT));
    
    esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT();
    esp_err_t ret = esp_bt_controller_init(&bt_cfg);
    if (ret)
    {
        BLUFI_ERROR("%s initialize bt controller failed: %s\n", __func__, esp_err_to_name(ret));
    }
    

    错误提示:

    E (2014) BLE_INIT: Malloc failed
    E (2014) BLUFI_EXAMPLE: wifi_init_sta initialize bt controller failed: ESP_ERR_NO_MEM
    

    分析与解决思路:

    1. 内存不足的原因:该错误提示内存分配失败(Malloc failed),说明系统在初始化蓝牙控制器时可用的内存不足。虽然 Flash 空间足够,但问题可能出在 RAM 的分配上。

    2. 可能的解决方案:

    • 检查 menuconfig 设置:建议在 menuconfig 中检查与蓝牙控制器相关的配置项,特别是内存分配设置。例如,检查 Component config -> Bluetooth 下是否有与内存大小相关的选项。
    • 减少其他功能的内存占用:如果系统中启用了过多的功能(如 Wi-Fi 和蓝牙同时启用),可能会导致 RAM 不足。可以尝试禁用一些暂时不需要的功能来释放内存。
    • 调整 heap 大小:如果确实需要更多的内存,可以在 menuconfig 中调整堆的大小以增加可用内存。
    1. 检查日志和堆使用情况:使用 ESP32 提供的 FreeRTOS heap 监控工具查看系统内存的使用情况。通过以下代码查看当前可用堆内存:
      printf("Free heap size: %d\n", esp_get_free_heap_size());
      
    2. 修改蓝牙堆内存分配:通过 menuconfig 确保蓝牙的堆内存分配足够,必要时可以手动调整堆大小。

    通过这些步骤,应该能够解决蓝牙配网时的内存不足问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月20日
  • 已采纳回答 9月12日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?