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.

[参考译文] TMS320F280049:可视化 CPU 和 CLA 的负载

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/767554/tms320f280049-visualizing-the-load-of-cpu-and-cla

器件型号:TMS320F280049

您好、香榭丽舍

是否有任何方法可以单独直观地显示 CPU 负载和 CLA 负载?
我们的客户希望看到这些数据、以便他们可以调整其计划的重新定位。

此致、
Hitoshi

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

    您能不能描述一下负载意味着什么? 您是指 CPU 利用率吗? 还是指已编程的内存量和可用的内存?

    如果您是以后提到的、则可以使用.map 文件来标识程序和数据大小。

    如果您是指前者、则可以设置 CPUTimer 在已知周期内进行计时、并在后台任务中设置 while 循环、该循环会递增计数器、而不使用 NOP 执行任何其他操作。 然后、您可以对要迭代该 while 循环的周期数进行计数。 然后、当 CPUTimer 生成中断时、您可以读取计数器值并将其乘以每个循环的周期数。

    希望这对您有所帮助、
    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sal、
    感谢您的跟进。
    我想测量 CPU 和 CLA 的利用率。
    我想清楚地了解 CPUTimer 节拍的方法。
    您能否描述一下如何计算 CPU 和 CLA 上任务的周期?

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

    请考虑我在上面随下面的代码提供的具体说明。

    添加全局计数器:
    volatile uint32_t g_ui32SysTickCount = 0;//全局系统节拍计数器。

    在 main()中,作为系统设置的一部分:
    //
    //启用系统节拍1ms。
    //
    SysTickInit();
    SysTickPeriodSet (200000UL);
    SysTickIntRegister (SysTickIntHandler);
    SysTickIntEnable();
    SysTickEnable();

    在后台循环中:

    //
    //应力-这是发生 USB 中断的地方。
    //使用中断将 CPUTimer 设置为1ms。
    //每个循环迭代的周期数#。
    //在 CPUTimer 中断中,将周期计数乘以计数器,以找出1ms 内空闲的#个周期
    //
    while (1)

    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    globalCounter++;//循环迭代应为100个周期
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");
    _asm (" RPT #10 || NOP");


    添加 SysTick 中断处理程序:
    //
    // SysTickIntHandler -系统节拍计数器的中断处理程序。
    //
    _interrupt void
    SysTickIntHandler (空)

    //
    // SAL 应力
    //
    IdleCycles =全局计数器* 100U;

    全局计数器= 0UL;

    //
    //更新我们的系统节拍计数器。
    //
    G_ui32SysTickCount++;
    PieCtrlRegs.PIEACX.ALL |= 1;


    SAL
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sal、
    我现在明白了。
    非常感谢您的友好解释。
    此致、
    Hitoshi