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.

[参考译文] EK-TM4C123GXL:从 RAM 执行的时间较慢

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/656444/ek-tm4c123gxl-slower-execution-time-from-ram

器件型号:EK-TM4C123GXL

将示波器连接到 GPIO 输出引脚时、我可以测量它所花费的时间
以重复循环。 环路只需切换 GPIO 引脚。 时钟速率
Tiva C 系列 Launchpad 记录为80MHz (周期为12.5ns)。

从 ROM 运行代码时、我测量到脉宽为100ns (8
周期)。 而是从 RAM 获得125ns (10个周期)。

在这种情况下、为什么从 RAM 运行更慢? 我实际上期望的是
相反、RAM 执行速度更快。

谢谢、
 罗德里戈

从 ROM 执行中删除

00000000000002b0 0000001c :
 2b0:   LDR   R3,[PC,#20]   ;(2c8. )
 2B2:   LDR   R2、[R3、#4]
 2B4:   ldrb   R1、[R3、#21]
 2B6:   MOV   R3、#0
 2B8:   str.w   R3、[R2、R1、LSL #2]
 2bc:   LDR.w   R3、[R2、R1、LSL #2]
 2c0:   mvns   R3、R3
 2C2:   str.w   R3、[R2、R1、LSL #2]
 2c6:   b.n   2bc.
 2c8:   .word   0x2000026c

RAM 执行

200002b0:   LDR   R3,[PC,#20]   ;(200002c8. )
200002b2:   LDR   R2、[R3、#4]
200002b4:   ldrb   R1、[R3、#21]
200002b6:   MOV   R3、#0
200002b8:   str.w   R3、[R2、R1、LSL #2]
200002bc:   LDR.w   R3、[R2、R1、LSL #2]
200002c0:   mvns   R3、R3
200002c2:   str.w   R3、[R2、R1、LSL #2]
200002c6:   b.n   200002bc.
200002c8:   .word   0x20000a6c

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

    我相信您的问题的答案在于 TM4C 架构师。 如下图所示、您将看到直接从 CPU 访问闪存、而 RAM 访问通过 RAM 和外设共享的总线矩阵。 对 GPIO 寄存器的写入和读取会干扰从 RAM 取指令、但不会干扰从闪存取指令。