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.

[参考译文] CC2651R3:即使 SRAM 足够可用、也会出现堆内存故障

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1204844/cc2651r3-heap-memory-failure-eventhough-enough-sram-is-available

器件型号:CC2651R3

大家好、是极客!

我使用的是 CC2651R3 (ble SDK 5.40)。

我们将堆配置为自动大小。

在使用 iPhone 连接(MTU 设置为250)和进行数据传输时、我会观察到堆内存故障(启用了 HEAPMGR_Metrics)。

HeapmemFail =2 (请见下图)。 SRAM 用量(来自链接器映射的 r/w 数据)为29646字节。( 32kB 的90.47%)。 我还没有启用高速缓存 RAM。

启用缓存 RAM 后、我同样观察如下所示的堆内存故障

您能告诉我堆内存失败的原因是什么吗?

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

    您好!

    感谢您与我们联系。

    我能想到的第一个元素是系统无法找到足够的连续存储器来分配。 当在很长的运行时间后尝试大型分配时、更有可能发生这种情况。

    如果有关于导致此堆内存失败的内存分配的更多详细信息、会很有意思。 除其他外、她想知道尝试分配的长度以及 RAM 在该点的状态。

    我希望这将有所帮助、

    此致、

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

    您好、Clement、

    我能想到的第一个元素是系统无法找到足够的连续内存来分配。 如果在很长的操作时间后尝试了大的分配,则更有可能发生这种情况。

    感谢您的输入。 但我在开始数据传输后立即观察到它(MTU 设置为250)

    如果有关于导致堆内存失败的内存分配的更多详细信息,那将会很有趣。 除其他外,了解尝试分配的长度和 RAM 在该点的状态是很有趣的。[/引号]

    RAM 分配为29646字节。 您能指导我如何在那个时间点检查 RAM 的状态吗?

    当设置的 MTU 值超过245MTU 时、我们会观察到这个问题、但如果 MTU 值设置为200字节、则不会出现这个问题。

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

    尊敬的 Ddnr:

    首先、我始终建议您及时了解最新的 SDK。

    您有多个 BLE 连接、还是只有一个 BLE 连接?

    内存似乎被填满的速度有多快?

    此致、

    Rogelio

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

    感谢您提供信息。 已经进入了迁移过程。

    仅一个 BLE 连接。

    内存似乎填充的速度有多快?

    在连接时立即执行、或在开始数据传输时立即执行(立即意味着在2-3秒内执行)。

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

    尊敬的 Ddnr:

    只有一条连接后、除非您的应用占用大量内存、否则应该会出现任何内存问题。  

    您的应用所基于的示例以及进行了哪些更改。

    此致、

    Rogelio