在 Keil uVision 5 模拟器中对内存使用进行基准测试

Benchmarking memory use in the Keil uVision 5 simulator

我有一个 Keil uVision 项目,我想对其进行广泛的基准测试。该代码目前在模拟器模式下 运行。为了可视化结果,我们只需将字符存储在内存区域并将所述区域显示为 ASCII。

这种方法非常适合使用 Cortex-M 系统节拍获取计时。但是,我不知道代码的 ram 使用情况:

有没有办法获取这些值?我知道构建系统报告的最大堆栈大小。

有没有办法限制 uVision 模拟器中可用的 ram 数量?

谢谢

有一个相当明显的解决方案:只需计算内存中的 ram window。首先找到为堆和栈分配的内存区域(这通常可以在启动程序集文件中找到)。然后在调试器中检查内存 window 并查看内存未更改的位置。

Keil 通常将内存初始化为 0,这样可以很容易地看到堆栈边界。 堆栈总使用量可以通过以下方式计算

$TOTAL = $TOP - $BOTTOM

如果看不到边界,首先用模式初始化内存可能有意义 (see here)。