BLE 应用中有内存泄漏。 如果我在5-10倍后连接和断开、处理器将堆/资源用完。
我想用 ROV 和 HeapMem 来调试这个问题。 我尝试将 HEAPMGR_CONFIG=0x80更改为 HEAPMGR_CONFIG=0x82、但得到错误:致命错误:"XDC/cfg/global.h"
我在 simple_peripheral_oad_offchip 示例工程中收到相同的错误。
谢谢!
布赖恩
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.
BLE 应用中有内存泄漏。 如果我在5-10倍后连接和断开、处理器将堆/资源用完。
我想用 ROV 和 HeapMem 来调试这个问题。 我尝试将 HEAPMGR_CONFIG=0x80更改为 HEAPMGR_CONFIG=0x82、但得到错误:致命错误:"XDC/cfg/global.h"
我在 simple_peripheral_oad_offchip 示例工程中收到相同的错误。
谢谢!
布赖恩
大家好、Jan、
我更新到了 latset SDK 7_10_02_23、好消息是在示例 SimplePeripheral_off_chip_oad 上不会发生该行为。
遗憾的是、我使用的定制电路板具有不同引脚上的外部闪存、因此 OAD 仍然可以使用此电路板。
我附上了每次器件连接时堆增长的屏幕截图。 是否可以结合使用 HeapMem 和 BLE5STACK 等工具? 可以看到哪些行正在分配所有未释放的内存吗?
我的大多数应用逻辑都位于完全独立的任务中、因此我将开始将示例代码移植到我的应用的各个部分、以查看我是否能找到问题所在。 非常感谢任何用于发现内存泄漏的指针。
此致!
布赖恩
大家好、Jan、
我认为内存泄漏来自 OAD,可能是 OAD_Cancel()设备断开连接。 也许这与我自定义的外部闪存有关吗?
在我的应用程序中、我有一个禁用 OAD 的定义、当我禁用 OAD 时、内存泄漏消除了。 定义在初始化时禁用 OAD_open、OAD 回调以及断开时禁用 OAD_Cancel()。
对此有什么想法吗? 我将继续深入 OAD 以查看导致内存泄漏的原因。
此致!
布赖恩
Luke、您好!
该文档指出 HeapMem/Heaptrack 应该可用于 BLE 调试。 这是不是已经过时了? 我无法获得 heapmem 来处理任何未经更改的示例。
是否有其他方法可以查看什么是所有空闲内存?
泄漏似乎与我的 BLE 服务配置文件有关。 当我禁用它们时、它会消失。 但是、泄漏发生在仅连接而不与服务交互的情况下。 我将尝试将我的一项服务移植到 launchpad 示例代码中、看看它是否仍然出现。
此致!
布赖恩
Luke、您好!
很抱歉我上周出差的延迟回复。 不用担心、如果文档已过时、我将尝试查看内存浏览器。
如需相关文档、请参阅 BLE5Stack -> Debugging Common Heap Problems -> Troubleshooting Heap Problems
https://dev.ti.com/tirex/explore/node?node=A__AHaph7YfvcrVy2cDlmb4sQ__com.ti.SIMPLELINK_CC13XX_CC26XX_SDK__BSEc4rl__LATEST ("BLE5用户指南"中"Trouble Shooth Problems"的 ctrl-f 将会找到)
此致!
布赖恩