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:RM48L952 PMU 的数量似乎是使用事件==周期数时预期的两倍(2x)周期

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1401051/rm48l952-rm48l952-pmu-seems-to-be-counting-twice-as-many-2x-cycles-as-expected-using-event-cycle-count

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

工具与软件:

我将按照 TI 文献 SPNA138A 中的建议使用 PMU

我将事件计数器0配置为对处理器周期进行计数。  

当我执行下面的循环时、进行"自由运行"、在循环结束后、计数的周期数量大约是我预期的两倍。

for 循环的每次迭代为10条 asm 指令(如图所示)

如果我运行循环500次、我会在计数器中得到大约10,000、我预计会在计数器中得到5000

如果我运行循环1000次、我将在计数器中得到20,000、我预期会在计数器中得到10,000。

因此、计数器中的值是我预期的两倍大

处理器时钟速度是200 MHz、但我不认为这一点很重要。

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

    您好!

    我们有关此主题的专家今天不在办公室,请期待下周早些时候的答复,谢谢。

    此致、

    Ralph Jacobi

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

    尊敬的 Kip:

    对延迟响应深表歉意。

    这是我第一次看到此应用手册。

    如果可能、您能在我的结尾分享您用于快速调试的示例代码吗?

    ——

    谢谢、此致、
    Jagadish。

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

    e2e.ti.com/.../pmu_5F00_XDER.cpp

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

    TI 在这方面取得了哪些进展?

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

    尊敬的 Kip:

    我对延迟回复表示诚挚的歉意。我休假了几天、然后是周末。

    我看不到您的代码有任何问题、我觉得一切正常。 我唯一怀疑的是:

    (+)[RM57L LaunchPad]执行时间测量-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    如果您验证上述线程、则会提到:

    PMU 运行在 CPU 的时钟频率(GCLK)上、而不是在系统模块时钟频率(HCLK)上。

    我认为在我们的案例中、我们也使用 HCLK 而不是 GCLK。

    我想这里 HCLK 也是 GCLK 的一半、这就是我们使用 PMU 为测量获取两倍时钟的原因。 我的意思是 PMU 给出的计数是 GCLK 的冬季、但我们使用 HCLK 计算周期(是 GLCK 的一半)、这就是我们为 PMU 执行测量获得两倍周期值的原因。

    ——
    谢谢、此致、
    Jagadish。

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

    Jagadish --你的评论很有趣、但没有解决我的问题。

    在我的系统中、HALCoGen 进行了配置、使得 GCLK == HCLK == 200 MHz。因此我不认为涉及 PMU 的时钟源。  

    只需将程序加载到带有 Hercules 开发套件的 CCS 调试器中、然后在"for"循环中对汇编指令进行计数、那么您将看到计数器计数的处理器周期数将超过 for 循环中实际计数的两倍(2倍)。  

             L1美元:
    0000d028:  E59F012C           LDR       r0、[PC、#0x12c]
    0000d02c:  E590C000           LDR       R12、[R0]
    0000d030:  E28CC001           添加       R12、R12、#1
    0000d034:  E580C000           str       R12、[r0]

     56          表示(uint32 I= 0;I<LOOP_COUNT;I++)

    0000d038:  E59DC000           LDR       R12、[R13]
    0000d03c:  E28CC001           加上       R12、R12、#1
    0000d040:  E58DC000           str       R12、[R13]
    0000d044:  E59DC000           LDR       R12、[R13]
    0000d048:  E35C0F7D           CMP       R12、#0x1F4
    0000d04c:  3AFFFF5           Blo       $C$L1

    我觉得所有这些 asm 指令都是1个处理器时钟周期

    我的测试条件为:

    禁用所有变量、寄存器、表达式等的刷新、因此 JTAG 不会刷新数据

    自由运行、然后在断点处手动停止。

    下面是可能导致此问题的一些原因:

    • Blackhawk SDS200调试探针在秘密中插入大量指令

    这不是浮点问题、因为我刚刚讨论的是处理器周期。

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

    Jagadish --你的评论很有趣、但没有解决我的问题。

    在我的系统中、HALCoGen 进行了配置、使得 GCLK == HCLK == 200 MHz。因此我不认为涉及 PMU 的时钟源。  

    只需将程序加载到带有 Hercules 开发套件的 CCS 调试器中、然后在"for"循环中对汇编指令进行计数、那么您将看到计数器计数的处理器周期数将超过 for 循环中实际计数的两倍(2倍)。  

             L1美元:
    0000d028:  E59F012C           LDR       r0、[PC、#0x12c]
    0000d02c:  E590C000           LDR       R12、[R0]
    0000d030:  E28CC001           添加       R12、R12、#1
    0000d034:  E580C000           str       R12、[r0]

     56          表示(uint32 I= 0;I<LOOP_COUNT;I++)

    0000d038:  E59DC000           LDR       R12、[R13]
    0000d03c:  E28CC001           加上       R12、R12、#1
    0000d040:  E58DC000           str       R12、[R13]
    0000d044:  E59DC000           LDR       R12、[R13]
    0000d048:  E35C0F7D           CMP       R12、#0x1F4
    0000d04c:  3AFFFF5           Blo       $C$L1

    我觉得所有这些 asm 指令都是1个处理器时钟周期

    我的测试条件为:

    禁用所有变量、寄存器、表达式等的刷新、因此 JTAG 不会刷新数据

    自由运行、然后在断点处手动停止。

    下面是可能导致此问题的一些原因:

    • Blackhawk SDS200调试探针在秘密中插入大量指令

    这不是浮点问题、因为我刚刚讨论的是处理器周期。

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

    尊敬的 Kip:

    在我看来、所有这些 asm 指令都是1个处理器时钟周期

    不能 Kip、所有这些指令不会花费单个时钟周期、其中一些指令可能花费超过一个时钟周期。

    请参阅以下链接、详细了解这一点:
    (+) cortex R4执行周期-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    为什么执行 LDR 需要两个周期-架构和处理器论坛-支持论坛- Arm 社区

    ——
    谢谢、此致、
    Jagadish。