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.

[参考译文] AM263P4-Q1:TaskP_loadGet () 更高优先级的任务

Guru**** 2546020 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1546365/am263p4-q1-taskp_loadget-higher-priority-task

器件型号:AM263P4-Q1


工具/软件:

尊敬的团队:

这个问题是相关主题的延续。

我的客户想知道他们是否使用了 TaskP_loadGet (),是否也会在 CPU 负载中计算更高优先级的任务?

此致、

Mari Tunnoda

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

    尊敬的 Mari:

    感谢您的耐心、我们在此为您分配了正确的所有者。 请留出一些时间让他们查看并提供反馈。

    此致、

    Zackary Fleenor

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

    您好、

    如果要计算特定任务的负载,可以使用: TaskP_loadGet ()。 如果要计算总 CPU 负载、请使用: TaskP_loadGetTotalCpuLoad()。

    TaskP_loadGet () 只计算通过 TaskP_Object *obj 传递给它的特定任务的 CPU 负载。 它不考虑其他任务(优先级较高或较低)。

    因此、如果优先级较高的任务经常运行、它将:
    -抢占当前任务,减少其累积运行时间 (accRunTime)
    -但除非传递特定任务的句柄、否则较高优先级任务的加载不会包含在 TaskP_loadGet () 结果中。
    - 以总系统运行时间的百分比形式返回单个任务的运行时间
    -计算方法是:  taskLoad->cpuLoad = TaskP_calcCpuLoad(taskObj->accRunTime, gTaskP_ctrl.accTotalTime)

    相反、您可以使用  TaskP_loadGetTotalCpuLoad() 来检查总体 CPU 利用率、该利用率还包括所有更高优先级的任务。

    返回除空闲任务之外的所有任务上花费的 CPU 时间百分比
    -计算方法是: cpuLoad = TaskP_LOAD_CPU_LOAD_SCALE - TaskP_calcCpuLoad(idleTaskTime, gTaskP_ctrl.accTotalTime)
    -这个函数从 100%中减去空闲任务的 CPU 使用率,以得到总 CPU 负载

    此致、
    Shaunak

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

    ...并且不要忘记 在每次调用 TaskP_loadGetTotalCpuLoad() 后调用 TaskP_loadResetAll()。  

    (+) AM263P4-Q1:FreeRTOS CPU 负载计算稳定时间 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛