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.

[参考译文] RTOS/AM3358:UIA CPU 负载未出现#39;t 工作

Guru**** 2943030 points

Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/673535/rtos-am3358-uia-cpu-load-didn-t-work

器件型号:AM3358
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我们正在从 AM335x 上的 RTOS USB 应用调试客户问题。 当定时器中断速率很高时、我们看到所有应用程序函数都被阻止执行。 我们添加了 UIA 来跟踪这是否是因为 A8 CPU 完全忙。

所附的是针对这个的.cfg。 我们可以收集实时会话并绘制执行图、但 CPU 负载完全为空。 SYSBIOS:6.52.0.12、UIA:2.21.2.07。 设置有什么问题?

此致、Eric

  

e2e.ti.com/.../usb_5F00_arm_5F00_am335x.cfg

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

    感谢您附加.cfg 文件。 是否可以从该模块中删除业务代表模块? 这是一个旧模块、已被 UIA 取代。 我希望它会破坏通过 LoggingSetup 完成的配置。 我们实际上不再在 SYS/BIOS 中提供它...您是否将它复制回了?

    如果这不起作用,您可以粘贴 Tools->ROV->LoggerStopMode-> Records 的图片吗? 我想了解创建了哪些记录器以及它们中是否有任何内容。

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

    Todd、

    感谢您的快速响应! cfg 是从某个位置复制的、我不知道 Agent 的用法。 我删除了这些业务代表行,问题相同。

    "arg3"中的92是计时器中断编号。 我们需要查看 CPU 对于中断的上下文切换是否太忙(ISR 代码本身只是一个简单的计数器)。

    此致、Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不好。 我也没有提到 LoggerBuf。 您是否也可以从.cfg 中删除这些内容? LoggingSetup 将设置您所需的所有内容(通常,至少95%的用例...其他5%的用例会有点棘手)。 我预计加载记录将进入 LoggerBuf、系统分析器无法对该记录器进行解码。

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

    Todd、

    附加的是最新的.cfg、我仍然有执行图、但没有 CPU 负载。

    此致、Eric

    e2e.ti.com/.../6177.usb_5F00_arm_5F00_am335x.cfg

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

    好的。 我找到了。 您已禁用空闲任务、而简短的故事是、您需要启用它才能记录加载日志记录。

    task.enableIdleTask = true;

    为什么不需要?

    长故事...

    CPU 负载记录被记录在空闲任务中。 我试着让空闲函数仍然被调用、但在最后一个运行任务结束时的上下文中、 但这不起作用、因为加载逻辑假定有一个空闲任务(并获得一个 NULL 指针和爆炸...在这个上打开一个 Jira 票证)。
    VAR 空闲= xdc.useModule('ti.sysbios.knl.Idle');
    task.allblockedFunc = Idle.run;//在上一个活动任务的上下文中运行空闲函数

    注意:使用此技巧、您可能需要增加任务堆栈大小、任何任务都可能会结束调用所有空闲函数。

    我也尝试了
    VAR Load = xdc.useModule('ti.sysbios.utils.Load');
    load.updateInIdle = false;
    然后在'C'代码中调用 Load_update(),但加载的假设是存在空闲任务导致了崩溃。

    其他潜在原因(不是您的问题、但为了完整起见、已添加):
    -您的应用程序正在使用100%的 CPU,并且从不允许空闲运行记录。
    -您已将 Load.windowInMS 设置为一个真正的大值。

    Todd