A2DP/BLE coex 情况下 连接BLE的时候会造成系统重启

luxianquan
Posts: 20
Joined: Tue Jul 13, 2021 12:23 pm

A2DP/BLE coex 情况下 连接BLE的时候会造成系统重启

Postby luxianquan » Thu Jan 11, 2024 6:24 am

我有一个项目使用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建立连接的时候发生的重启。
Attachments
BLE连接后自动重启bug.ini
(17.46 KiB) Downloaded 1357 times

expresspotato
Posts: 24
Joined: Fri May 28, 2021 1:58 pm

Re: A2DP/BLE coex 情况下 连接BLE的时候会造成系统重启

Postby expresspotato » Sat Apr 13, 2024 2:01 am

Hello,

I am seeing the same bug here on v4.3.7. Changing connection parameters consistently causes a crash with the following stack.

Anyone else?

Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.

Core 0 register dump:
PC : 0x40015788 PS : 0x00060830 A0 : 0x80049eba A1 : 0x3ffdf7d0
A2 : 0x3ffdf800 A3 : 0x3ffdf818 A4 : 0x000000ff A5 : 0x00000001
A6 : 0x00000003 A7 : 0x00000001 A8 : 0x0014f00f A9 : 0x00000000
A10 : 0x00000050 A11 : 0x00000050 A12 : 0x00000000 A13 : 0x000000c0
A14 : 0x3ffdcf0c A15 : 0x00000001 SAR : 0x0000001d EXCCAUSE: 0x0000001c
EXCVADDR: 0x0014f013 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0xffffffff

Backtrace:0x40015785:0x3ffdf7d0 0x40049eb7:0x3ffdf800 0x40164d72:0x3ffdf850 0x40042386:0x3ffdf880 0x40089706:0x3ffdf8a0 0x40019d11:0x3ffdf8d0 0x40055b4d:0x3ffdf8f0 0x4015b5c3:0x3ffdf910 0x4015bc46:0x3ffdf930

0x40164d72: hci_le_rem_con_param_req_reply_cmd_handler at llc_hci.c:?
0x40089706: ke_task_schedule at ke_task.c:?
0x4015b5c3: r_rw_schedule at ??:?
0x4015bc46: btdm_controller_task at ??:?


luxianquan
Posts: 20
Joined: Tue Jul 13, 2021 12:23 pm

Re: A2DP/BLE coex 情况下 连接BLE的时候会造成系统重启

Postby luxianquan » Thu Nov 21, 2024 7:04 am

Hi,Guys Thanks for your reply.
这个问题我将idf_4.4.3 升级到idf_5.2.1 改善了。但是它也只能说是大大改善并没有完全解决。
这个问题在使用idf_4.4.3的时候iPhone ,Samsung 手机是偶发,在xiaomi 14 手机上则是频繁发生,概率上统计应该是:
iPhone,Sumsung 10% 发生故障。
xiaomi 14 60%发生故障。

我将idf 升级到 5.2.1 以后,在 iPhone ,Sumsung基本上没有再遇到这样的故障,但是xiaomi 14 依然偶有发生。我个人的判断是xiaomi 14 的BLE 蓝牙协议栈有问题,在a2dp 连接手机的时候会产生BLE 数据异常从而造成crash 并复位。我建议您通过sniffer 监测BLE 数据从中找到原因并解决。希望我这些信息对您有帮助。

Who is online

Users browsing this forum: Google [Bot] and 19 guests