器件型号: 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 连接后、中央器件重复执行应力测试、其中包括:
- 连接到外设
- 交换数据
- 断开连接
- 再次订购
测试在“边沿“条件下执行、其中中央和外设之间的距离 接近 因断开原因 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 分配路径中?
我们希望得到以下方面的指导:
-
llAllocatePDU()在重复连接中断/断开的情况下、预计分配是否会保持未完成状态。 - 与 CC2340R53 上的链路层 RX 缓冲区管理相关的任何已知内存泄漏修复、补丁或权变措施。
- 可帮助确定未发布这些分配的原因的任何建议的工具或诊断。
感谢你能抽出时间。