This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2564MODA:A2DP + BLE:流式音频+发送 BLE 数据包时内存缓冲区已满

Guru**** 2595805 points
Other Parts Discussed in Thread: CC2564, TM4C123GH6PM

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/607266/cc2564moda-a2dp-ble-memory-buffer-size-full-when-streaming-audio-sending-ble-packet

器件型号:CC2564MODA
主题中讨论的其他器件:CC2564TM4C123GH6PM

您好、TI 支持团队、

在具有 Bluetopia 栈的双模蓝牙中使用 CC2564时、我们遇到了一些问题。  我们的应用需要定期发送 BLE 数据包、而不会丢失任何数据或时间。 这些数据包在1ms 线程中发送、我们在该线程中调用函数 GATT_Handle_Value_Notification()。 到目前为止、一切都运行良好、我们在 Android 应用程序中正确获取所有数据。 当我们不发送 BLE 数据包时、流式音频也能正常工作。

当我们尝试通过 A2DP 配置文件传输音频并同时发送 BLE 数据包时、会出现此问题。 稍后、我们可以听到一些短音频截止和 GATT_Handle_value_Notification ()返回错误消息 BTPS_ERROR_INFLOWITY_Buffer_space。 之后、我们无法再发送任何 BLE 数据包(即使调用了状态 callbacck etGATT_Connection_Device_Buffer_empty)

使用函数 BTPS_QueryMemoryUsage。 我观察到以下结果:  

未运行时的内存使用情况(无 BLE 和无 A2DP):已使用=5032/Free = 10332/maxfree = 10332

仅 BLE 时的内存使用情况: Used = 5032 / Free = 9152/ maxfree = 9060

 A2DP 时的内存使用:  USD=13004/ Free =2360/ maxfree =2236

 A2DP  + BLE 时的存储器使用:  使用= 13152/ Free = 2212/maxfree = 2200

我们无法分配更多内存、因为我们的 SRAM 分配已满...

我的问题是:

  • 运行任何内容时使用的内存是5032的“正常”吗? 我们是否可以优化某种方法来降低该值?  
  • 如果没有,是否可以通过修改某些参数(来自 SBC 编解码器或降低音频质量)来减少 A2DP 内存使用?  

MCU 参考:TM4C123GH6PM

如果您能向我提供有关此问题的一些信息、那将会非常好。

提前感谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,我们已将您的查询指派给 BT 专家。 我们很快会回来。

    谢谢、
    Saurabh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mickael、

    该1ms 间隔对于 BLE 数据包有多重要? 1ms 看起来非常低、这可能会导致缓冲区被备份、直到缓冲区耗尽空间。 如果可能、我建议您在应用允许的情况下使用更多时间进行实验。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 DFZ、

    实际上、我正在处理这个1ms 任务中的数据、但我仅在我有足够的数据(大约全部为16ms)时调用 GATT_Handle_Value_Notification()。
    通过尝试减少 SBC 编解码器的位池(设置为35)、从而降低流音频的位速率。

    这使我能够减小 SBC_buffer_size 并增加用于内核的 memory_buffer_size。 这种配置似乎效果相当好、但在经过几分钟的 A2DP + BLE 后仍然会出现问题。

    现在、我假设我需要在高质量音频流和 BLE 数据速率之间找到一个良好的折衷方案。
    因此,我的问题仍然是一样的:
    运行任何内容时使用的内存是5032的“正常”吗? 我们是否可以优化某种方法来降低该值?
    如果没有,是否可以通过修改某些参数(来自 SBC 编解码器或降低音频质量)来减少 A2DP 内存使用?

    提前感谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Mickael Ben Soussan"]*运行任何内容时使用的内存是否为5032? 我们是否可以优化某种方法来降低该值? [/报价]

    是的、因为 BT 堆栈的调度程序目前正在运行。 这因 MCU 而异。

    [引用 USER="Mickael Ben Soussan">如果不是,这是否可以通过修改某些参数(来自 SBC 编解码器或降低音频质量)来减少 A2DP 内存使用? [/报价]

    音频质量参数在 A2DP 源端确定、因此无法从接收端更改这些参数。 通常、如果存储器是问题、则可以使用 A3DP、但在这种情况下不起作用、因为您也在使用 BLE。 不幸的是、我无法想到另一种减少存储器消耗的方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您快速回答 DFZ!

    好的、我会尝试和一些配对者一起玩、如果我发现与我的问题相符的东西、我会回来的。

    非常感谢、我会尽可能短地回来=)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 TI 团队:

    我有一些关于我当前问题的新闻。 将我的位池减少到35使我的应用程序在某些 Android 支持(智能手机/平板电脑)上运行得非常好。

    问题是在某些 Android 支持上(我在平板电脑  Huawei BTV-W09上进行测试 ), 当我开始流式传输音频时,BLE 数据包会丢失很多。 另一方面、我使用平板电脑 Galaxy 选项卡 s2进行测试、所有操作都正常、没有任何丢失或不准确。

    这两台平板电脑最近才推出、使用蓝牙4.1并接受15ms 的连接间隔。 我不明白差异的来源。  

    您是否听说过类似的问题?  

    为了解决此问题,您是否有任何跟踪?  

    我已经尝试了很多修复(很多!) 但我现在真的很绝望。

    提前感谢。  

    Mickael Ben Soussan