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.

[参考译文] CCS/AM3359:Hwi 未命中

Guru**** 2541420 points
Other Parts Discussed in Thread: AM3359, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/605592/ccs-am3359-hwi-misses

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

工具/软件:Code Composer Studio

各位专家、您好!

我们将 AM3359与以下 STK 搭配使用。

PROCESSOR_SDK_RTOS_AM335x_3_00_00_04

PDK_AM335x_1_0_3

NDK 2.24.3.35

SYS/BIOS 6.45.1.29

运行示例项目"Nimu_BasicExample"是可以的。 添加了每10us 调用一次的 HWI 任务后、我们注意到 HWI 不会每10us 发生一次。 大多数情况下、我们 每100 个 HWI 事件丢失一个事件。 Hwi ISR 非常短 、只 会使 计数器递增。 停止 NDK 任务时不会发生这种情况。 HWI 实例的数量仅为一个。

您能给我一些关于这种现象的根本原因的考虑吗?

此致、Uchikoshi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Uchikoshi、

    NDK 内部具有由 EMAC 中接收到的以太网包触发的 HWI 中断。 您是否尝试过不同的 Hwi 优先级来查看您的 HWI 是否仍然未命中?

    software-dl.ti.com/.../Hwi.html

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

    我们将 HWI 优先级设置为8、但错过了一些 HWI。 如果没有其他方法、我们必须考虑其他方法。

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

    您好!

    简单地说,我将下面的代码添加到“Nimu_BasicExample”中。

      Clock_Params_init (clkParams);

      clkParams.startFlag = true;

      clkParams.period = 1; // 时钟节拍= 100us 在.cfg 文件中、SWI 优先级设置为15。

      clock_create (clk0Fxn、2、&clkParams、NULL);

    空 clk0Fxn (UARg arg0)

      /*切换 LED1 */

      GPIO_TOGGLE (USER_LED1);

    硬件是 BeagleBoneBlack。 RJ45上未连接以太网电缆。

    下面是切换波形的捕获。

    是否有任何方法可以防止丢失具有 NDK 的 swi ISR?

    此致、

    Uchikoshi

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

    Uchikosi-San、

    您能否通过将日志记录添加到您的 RTOS 配置中来启用 TI RTOS 系统分析器跟踪:

    VAR LoggingSetup = xdc.useModule('ti.uia.sysbios.LoggingSetup');
    LoggingSetup.loadLogging = true;
    LoggingSetup.loadLoggerSize = 1024;
    LoggingSetup.mainLoggerSize = 32768;
    LoggingSetup.sysbiosLoggerSize = 32768;
    LoggingSetup.sysbiosSwiLogging = true;
    LoggingSetup.sysbiosHwiLogging = true;
    LoggingSetup.sysbiosSemaphoreLogging = true;
    LoggingSetup.loadTaskLogging = true;
    LoggingSetup.loadSwiLogging = true;
    LoggingSetup.loadHwiLogging = true;
    LoggingSetup.enableTaskProfiler = true;
    LoggingSetup.sysbiosHwiLoggingRuntimeControl = true;
    LoggingSetup.sysbiosLoggRuntimeControl = true;
    LoggingSetup.eventUploadMode = LoggingSetup.JTAGSTOPTMODE;
    

    然后、您可以在系统分析器中查看执行图、以查看是否可以捕获 HWI 和 SWI 并关联系统中发生这种情况的原因。

    另请注意、SWI 与系统中的 HWI 具有较低的优先级、因此请确保其他 HWI 不会挤占 SWI。

    此致、

    Rahul

    PS:日志记录设置工具 wiki:

    http://processors.wiki.ti.com/index.php/UIA_2.0_LoggingSetup 

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

    您好 Rahul、

    我捕获了系统执行图。 NDK 任务 NDK_CONFIG_Global_stackThread()每200us 运行一次,似乎会阻止 HWI 执行。  

    e2e.ti.com/.../execution.zip

    您能否检查所附的雾文件、并确认 在 NDK 情况下这是否是无法使用的现象。

    如果您需要更多信息、请告诉我。

    此致、

    Uchikoshi   

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

    n`t 查看系统分析器图、会发现一个信标发布和挂起与系统对 HWI 没有响应的时间相关。 Hwi 和 SWIn`t 运行至完成、并且应该在任何信标上挂起。 仅建议在任务中使用信标。 您能否检查系统中哪个线程正在发布可能会阻止系统不响应 HWI 触发器的信号量。

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

    查看运行 global_stack 任务的放大图会很有用。 因此、基本上将其放大(与 X 轴单位一起)。

    是否存在其他运行 GLOBAL_STACK 但不会导致问题的情况。

    注意:如果没有.out *、.UIA.xml 和* rta.xml 文件、bin 文件将不会很有用。

    Todd

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

    您好、Rahul、Todd

     

    感谢你的建议。

    为了简化它、我只在 PDK 原样中运行了 Nimu_BasicExample、并打开 UIA 以进行记录。 您能看到附加的文件吗?

     

    e2e.ti.com/.../nimu_5F00_bbbam335x_5F00_xa8fg.uia.zip

    PROCESSOR_SDK_RTOS_AM335x_3_00_00_04

    PDK_AM335x_1_0_3

    NDK 2.24.3.35

    SYS/BIOS 6.45.1.29

    UIA 2.0.6.52

     

    TI_SYSBIOS_KNL_Clock_workFunc__E ()发布信标。 这不是每次都是在执行 ti_ndk_config_Global_stackThread()之前。

     

    感谢您的任何建议。

     

    此致、

    Uchikoshi