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.

[参考译文] RM48L952:Hercules RM48L952 DMIPS 等级

Guru**** 2469520 points
Other Parts Discussed in Thread: RM48L952, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/671886/rm48l952-hercules-rm48l952-dmips-rating

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

支持路径:/Product/Help、带器件选择/

您好!

我有一个 RM48L952 HDK 电路板。  我们的产品将由电池供电、因此我们将以40MHz 的时钟速率运行以节省功耗。  我为一个 HCLK = GCLK = PLL1 = 40MHz 配置了 HALCoGen。  CPU 时钟和外设也设置为40MHz。  我构建了代码并添加了一个计数为100、000的 for 循环、然后切换 LED。  LED 每40 ms 切换一次。  我在该测试中禁用了中断。 我查看了为此循环生成的汇编代码(如下所示)。  在从0到100、000的计数范围内、总共执行9个操作码。

我的问题: 9个操作码 x 100、000、000、每秒处理大约22、500、000条指令。  但 RM48L9xx 被通告以1.66 DMIPS/MHz 的频率运行。  因此、我预计每秒大约有66、000、000条指令(1.66 x 40 MHz)、并且我的循环执行速度应该快3倍。

HDK 电路板上是否有一些 RM48L952时钟输出、我可以查看该 IC 是否实际以40MHz 的频率运行?  代码从内部闪存运行、因此外部存储器总线未激活。  我还可以查看哪些内容来验证我是否实际以40MHz 的频率运行?

谢谢、

Keith

=================== 对于(i=0;i< 100000;i++)

$C$L61:
000189dc:  E59F0144           LDR       r0、[PC、#0x144]
000189e0:  E590C000           LDR       R12、[R0]
000189e4:  E28CC001           添加       R12、R12、#1
000189e8:  E580C000           str       R12、[r0]
 67               if (idleCount > 100000){
000189ec:  E59FC134           LDR       R12、[PC、#0x134]
000189f0:  E59F0134           LDR       r0、[PC、#0x134]
000189f4:  E59CC000           LDR       R12、[R12]
000189f8:  E150000C           CMP       r0、R12
000189fc:  2AFFFF6           BHS       $C$L61

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

    从闪存读取数据的指令可能需要1个以上的周期。 该数字基于 FRDCNTL 寄存器中定义的闪存数据读取等待状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ、

    当我使用调试器在运行时分解为代码时、显示 FRDCNTL 寄存器值= 0 (无等待状态。)   您能解释一下假设 CPU 时钟为0、等待状态为40 MHz 时、我测量的执行时间吗?  接下来要看什么?

    此外、我无法在 调试器中更改 FRDCNTL 寄存器值、您知道如何操作吗?  控制台消息为:      

    CortexR4:写入长度0x4的第0页0xf87000处的内存块时遇到问题:(错误-1065 @ 0x0)无法访问设备内存。 验证内存地址是否在有效内存中。 如果错误仍然存在、请确认配置、对电路板进行下电上电和/或尝试更可靠的 JTAG 设置(例如、较低的 TCLK)。 (仿真包7.0.100.0)。

    谢谢、

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

    对于40MHz CPU 时钟、零等待状态正常。 FRDCNTL 的位0和位用于启用预取模式、请启用预取。

    在特权模式下、闪存模块控制寄存器只能由 CPU 读取和/或写入。

    我可以使用您的测试代码和编译选项吗? 我想在工作台上尝试一下、谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ、

    我正在运行单个 FreeRTOS 任务(随附代码)。  编译器优化已关闭。  我通过切换 HDK 板上的 LED 来测量延迟。  在另一个测试中、我还在启动循环之前禁用了任务内的中断(进入了一个临界区)。  禁用中断时、环路时序无差异。

    e2e.ti.com/.../2626.appstartup.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Keith、我将在没有 RTOS 的情况下进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Keith、

    我使用我的代码进行了测试、测试结果是每个周期1条指令。 代码位于闪存上、也在闪存上执行、CPU 速度为40MHz。

    我的测试中使用的指令是:ADD 和 SUB (总共100条指令)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    未优化代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ、

    您是否在 Hercules HDK 开发板上运行?  您能否发布完整的 CCS 项目/文件?  我想检查您的 Halcogen 和编译器设置。

    谢谢、

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

    是的、我在 LS31x HDK 上进行了测试。 我将发布该项目供您参考。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1. sys_main()中有3个函数:main()、 test_add32_10(); test_add32_20()

    add32_10():10添加或子指令; test_add32_20():110添加或子指令

    目的是消除开销

    e2e.ti.com/.../3036.TMS570LS3137_5F00_DMIPS_5F00_Test.7z

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

    感谢 QJ