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.

[参考译文] RM57L843:RM57L843机器指令需要更多的周期才能执行

Guru**** 2477705 points
Other Parts Discussed in Thread: RM57L843, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/687417/rm57l843-the-rm57l843-machine-instructions-require-more-cycles-to-be-executed

器件型号:RM57L843
主题中讨论的其他器件: HALCOGEN

您好!

我正在尝试在没有 HALCoGen 的情况下以汇编语言在 RM57L843上初始化应用。
在以汇编语言进行初始化之后、应用程序的运行速度比使用 HCG HALCoGen 进行初始化后的运行速度慢。

时钟看起来不错、当我跟踪循环测试时、我可以看到相同的指令需要在汇编语言初始化后执行更多周期。

对于 HCG、循环需要32个周期:

反汇编:字符串                       Cycl       D.Cycl

LDR      R1、[R10、#0x10]            0 2.             

SUB      R1、R1、r0                             2            1

添加      R3、R3、#1                            3            1

CMP      R2、R1                   4.        0

BPL      #0x7d74                              4            28

LDR      R1、[R10、#0x10]            32 2.           

 

在汇编语言循环中进行初始化时、需要超过60个周期:

反汇编:字符串                       Cycl       D.Cycl

LDR      R1、[R10、#0x10]            0 5.             

SUB      R1、R1、r0                             5            1

添加     R4、R4、#1                 6 1.             

CMP      R2、R1                   7.        0

BPL      #0x1800cc                          7            53

LDR      R1、[R10、#0x10]            60 5.           

 

这些差异的原因是什么?
感谢你的帮助。

Jerome

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

    1.检查主闪存的地址和数据等待状态的编号:
    FRDCNTL 寄存器
    2.或将指令复制到 SRAM 并在 SRAM 中执行这些指令:SRAM 没有等待状态
    3.配置 ECLK 以监控 VCLK 时钟(VCLK/x)、以确保 HCLK、VCLK 被正确设置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    非常感谢您的快速回复。

    FRDCNTL 寄存器= 0x00000303、因此有3个等待状态。 但该值与 HALCoGen 配置相同、HALCoGen 没有问题。

    我尝试在 RAM 中执行测试循环、但在 HALCoGen 和汇编初始化中获得了预取指令异常。

    HCLK 和 VCLK 的设置与 HALCoGen 和汇编初始化完全相同。

    此致

    Jerome

     

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、
    我找到了问题的根源。
    指令高速缓存未启用:SCTLR 寄存器的位 I 和 C (12和2)。
    现在一切都运行良好。
    感谢您的合作。
    Jerome