Arm Cortex-M4中的RAM内存访问数

Arm Cortex-M4中的RAM内存访问数,arm,ram,cortex-m,Arm,Ram,Cortex M,我在STM32F4板上使用Cortex-M4,在Keil uVision5和 我试图计算CPU在内存RAM中执行的读取和写入的确切数量。包括加载、存储和获取的指令。在指令集模拟器的帮助下,我可以计算加载/存储和执行指令的数量,但是我需要确保这是一个很好的近似值。 我知道DTW寄存器,但它们没有足够的信息。Cortex-M4只有DWT寄存器,可以提供一些有限的性能信息。没有与PMU性能监视器单元等效的设备可以提供您在更大内核中寻找的信息。不过,在指令接口上更可能看到已执行指令的计数,而不是回迁 如

我在STM32F4板上使用Cortex-M4,在Keil uVision5和 我试图计算CPU在内存RAM中执行的读取和写入的确切数量。包括加载、存储和获取的指令。在指令集模拟器的帮助下,我可以计算加载/存储和执行指令的数量,但是我需要确保这是一个很好的近似值。 我知道DTW寄存器,但它们没有足够的信息。

Cortex-M4只有DWT寄存器,可以提供一些有限的性能信息。没有与PMU性能监视器单元等效的设备可以提供您在更大内核中寻找的信息。不过,在指令接口上更可能看到已执行指令的计数,而不是回迁


如果存在可能导致模拟不准确的实时事件,您可以使用ETM trace确认您在模拟中看到的序列,但这只会提供相同的“已执行指令”视图。

除非ARM对此有逻辑(我对此表示怀疑),否则这将是一项几乎不可能完成的任务。内存访问、指令获取、内存和闪存的速度等都将以一种你无法隔离任何东西的方式相互干扰和并行作用。也许,如果您可以一次在缓存中获取整个软件,那么抓取就在那里,但速度更快,并且内存访问将主导执行时间,将其与关闭缓存时的相同情况进行比较,您至少可以测量抓取时间。谢谢。我在架构中搜索了一下,找到了一些与周期相关的寄存器,但并不是很有用。我希望有人知道JTAG或SWD等调试器提供的函数。