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.

[参考译文] CC2340R5:CC2340R53 BLE 连接/断开时堆泄漏问题

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1652927/cc2340r5-cc2340r53-heap-leakage-issue-while-ble-connection-disconnection

器件型号: CC2340R5

尊敬的 TI 团队:

我们看到 CC2340R53 上的 BLE5 栈内部出现缓慢的堆泄漏、最终导致 pvPortMalloc 在 BLE 栈任务内返回 NULL、触发 vApplicationMallocFailedHook。

===环境===

设备  :CC2340R53
SDK    :SimpleLink 低功耗 F3 SDK 8.10.01.02.
角色   :外围设备
PHY    :仅 1M
RTOS   :freeRTOS、heap_4.c、configTOTAL_heap_size = 0x7886 (30,854 B)
编译器 :TI ARM Clang v4.0.0.LTS 
连接:60 ms 间隔、1 M PHY、247 B MTU、延迟 5、外围设备角色

=== Propblem Description===

建立 BLE 连接后、中央器件重复执行应力测试、其中包括:

  1. 连接到外设
  2. 交换数据
  3. 断开连接
  4. 再次订购

测试在“边沿“条件下执行、其中中央和外设之间的距离 接近 因断开原因 0x08 而导致连接通常终止的点

在这些连接/数据/断开周期内、FreeRTOS 的 xMinimumEverFreeBytesRemining 会减小、直到堆大小低于要分配的所需数据

===捕获的调用链 ===

在泄漏分析期间、我们跟踪堆分配并记录从未发布的内存块的分配调用链(通过跟踪 PC(程序计数器))。 调用链为:

 pvPortMalloc                  (heap_4.c)
  <- malloc                  (TI_freertos_config.o)
    <- iCall_heapMalloc            (iCall_POSIX.o)
     <- iCall_malloc            (iCall_POSIX.o)
       osal_mem_alloc          (StackWrapper_OSAL_osal_memory_iCall.o)
        <- osal_bm_alloc  (StackWrapper_OSAL_osal_bufmgr.o)
          <- LL_RX_BM_alloc (OneLib_LL_ll.obj)
           <- llAllocatePDU(泄漏功能)

TI 能否回顾一下这是否是 SimpleLink 低功耗 F3 SDK 8.10.01.02 随附的 BLE5 堆栈中的已知问题、特别是在链路层接收缓冲器/PDU 分配路径中?

我们希望得到以下方面的指导:

  1. llAllocatePDU() 在重复连接中断/断开的情况下、预计分配是否会保持未完成状态。
  2. 与 CC2340R53 上的链路层 RX 缓冲区管理相关的任何已知内存泄漏修复、补丁或权变措施。
  3. 可帮助确定未发布这些分配的原因的任何建议的工具或诊断。

感谢你能抽出时间。