我正在STM32H753I-EVAL2板上对STM32H7进行一些评估。我使用STMicro示例代码在内存映射模式下配置,写入和读取QSPI Flash。
我对LDR指令持续时间的一些数字感到惊讶:
我使用SysTick(连接到CPU时钟)测量指令的周期数。据我了解:SysTick的一个周期= CPU的一个周期。
我测量了两条完全相同的ldrb.w Rn, [Rp, Rq]
指令,除了Rp在一种情况下是DTC-RAM中的地址,在另一种情况下是地址
在QSPI Flash中。
结果是(从内部闪存执行的代码):DCTM-RAM需要15个周期,QSPI需要12个周期。
我对结果感到惊讶,我想如果QSPI内容被缓存了,那么它可以解释这些数字吗?
我还发现一条LDR指令的15个周期似乎很多,您怎么看?我的程序有问题吗?
答案 0 :(得分:0)
如果未缓存内部闪存,或者缓存无效,或者流水线被刷新或...(还有许多其他),则可能比QSPI闪存定位的指令花费更多的时间。
要测量执行时间,您需要特殊的寄存器。