完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个项目使用ESP32-WROVER-E 模块,需要实现BLE/A2DP 共存工作。功能要求是:
1.连接BLE后使用手机的MAC地址(保存在FLASH中)去连接A2DP。 2.关闭BLE后同时也断开A2DP连接。 我遇到的问题是: 使用esp_a2d_sink_disconnect 函数断开A2DP后,再尝试连接BLE,重复功能1的操作。发现会一定概率(没有规律)的出现系统重启的现象。log提示的错误是 Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.然而紧接的Backtrace 却不是我能修改的内容,如下所示: 0x401391de: r_ea_interval_duration_req at ??:? 0x4013fcaa: hci_le_rem_con_param_req_reply_cmd_handler at llc_hci.c:? 0x40085ffc: ke_task_schedule at ke_task.c:? 0x40137ae7: r_rw_schedule at ??:? 0x40138168: btdm_controller_task at ??:? 我搜索所有的ADF都没办法定位到这几个函数,应该是蓝牙协议栈lib里面的函数。 紧接着我用排除法去分析问题,做了几次尝试后发现:其他代码都不动的条件下只要不使用esp_a2d_sink_disconnect 函数断开连接就基本不会有这个问题。 麻烦各位有过类似经历,或者ADF的大神帮忙分析一下。附件是发生重启的日志。基本都是在BLE建立连接的时候发生的重启。 |
|
相关推荐
1个回答
|
|
以下是一些建议和解决方案,希望对您有所帮助:
1. **检查资源分配**:确保在BLE和A2DP共存时,系统资源(如内存、堆栈等)分配得当。如果资源不足,可能会导致系统崩溃。您可以尝试优化代码,减少资源消耗。 2. **优化中断处理**:在BLE和A2DP共存的情况下,中断处理可能会变得复杂。确保中断处理函数尽可能简洁,避免在中断处理中执行耗时的操作。同时,检查是否存在中断优先级设置不当的问题。 3. **使用任务调度**:在ESP32中,可以使用FreeRTOS的任务调度功能来管理BLE和A2DP的任务。确保在任务切换时,资源得到正确释放和分配,避免资源竞争。 4. **检查代码逻辑**:仔细检查您的代码逻辑,确保在BLE和A2DP连接、断开过程中,所有的状态转换都是正确的。例如,确保在断开A2DP连接之前,已经正确地关闭了BLE连接。 5. **使用ESP-IDF的调试工具**:ESP-IDF提供了一些调试工具,如esp_app_trace、esp_core_dump等,可以帮助您定位问题。尝试使用这些工具来分析系统崩溃的原因。 6. **更新ESP-IDF版本**:如果您使用的ESP-IDF版本较旧,可能会存在一些已知的bug。尝试更新到最新版本的ESP-IDF,看看问题是否得到解决。 7. **查看错误日志**:根据您提供的错误日志,"Guru Meditation Error: Core 1 panicked (LoadProhibited)" 表示发生了一个未处理的异常。这可能是由于代码中的某个错误导致的。尝试在Backtrace中找到与您的代码相关的部分,以便更好地定位问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
540浏览 6评论
451浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
433浏览 5评论
435浏览 4评论
406浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 07:21 , Processed in 0.470222 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号