gpt4 book ai didi

c - 如何确定嵌入式系统 C 上正在使用的内存?

转载 作者:行者123 更新时间:2023-11-30 20:09:50 25 4
gpt4 key购买 nike

我想报告动态(嵌入式环境)使用了多少内存(闪存和 RAM)。有谁知道做到这一点的技术?我听说过使用“水印”,但真的不明白。

嵌入式系统是NXP MagniV系列的16位微 Controller ,应用方法是裸机。

最佳答案

可能不需要“即时”报告此类信息,因为内存使用情况是在链接代码时静态确定的。您的链接器生成的链接映射将提供此信息。

在运行时确定堆和堆栈的使用情况可能有用。如果可能的话,堆使用情况报告将完全取决于您正在使用的 C 库。例如,使用 ARM 的库 __heapstats()函数将提供这一点。

堆栈内存的“水印”涉及用特定的位模式填充它,然后扫描堆栈以查看该模式已更改的位置 - 这表示最大值 堆栈使用情况(高水位线)。

一些链接器能够对堆栈使用情况进行静态分析,并且可以报告最坏情况下的堆栈使用情况和任何特定函数的调用路径。然而,分析是最坏的情况,并且确定的调用路径在实际执行中永远不会发生。此外,此类分析无法提供通过函数指针变量或递归函数进行的调用的堆栈使用情况。

有关各种常见场景(裸机、RTOS、内存映射和工具链组合)的堆栈使用分析的建议可以在 this article 中找到。

关于c - 如何确定嵌入式系统 C 上正在使用的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com