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.

[参考译文] ISR 中的 SRIO 门铃清除(INTDST0 ->CIC0->corePac)

Guru**** 2595800 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/643184/srio-doorbell-clearing-in-isr-intdst0---cic0--corepac

Hallo  

我们获得非常快的门铃中断(16us 间隔内)、该中断作为广播中断路由到 CorePack、只有 Core0在 ISR 中设置门铃清除寄存器(DoorBell_ICCR)。

问题是、我们得到的 ISR 运行次数大约为5-10次、而 ISR 不会再次调用、因为门铃清除寄存器(DoorBell_ICCR)未设置。

如果我 通过调试器设置门铃清除寄存器(DoorBell_ICCR)、则它会再次运行5-10次、并且会发生相同的情况。

CSL_SRIO_ClearDoorBellPendingInterrupt (hSrio、0、0xFFFF); 

您能告诉我做了什么错了。

谢谢

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

    我已通知 RTOS 团队。 他们的反馈将直接发布在此处。

    请发布您正在使用的 SDK 版本。

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

    你(们)好

    我们使用 ti-processor-sdk-rtos-c667x-evm-03.00.04-linux-x86。

    只有当所有内核都在运行时、问题才会出现。 如果我仅使用 core0运行、则门铃被正确贴合。

     这是 ISR:

    静态空 base_CIC_IRQ_ISR (UARg 参数)
    {
    CSL_SrioHandle hSrio;
    
    
    如果(DNUM = 0)
    {
    hSrio = CSL_SRIO_Open (0);
    
    CSL_SRIO_ClearDoorbellPendingInterrupt (hSrio、0、0xFFFFFFFF);
    
    }
    
    } 

    谢谢

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

    >>只有 Core0设置 ISR 中的门铃清除寄存器(DoorBell_ICCR)
    >>仅当所有内核都在运行时才会出现此问题

    您能否详细说明"所有内核正在运行"? 即使所有内核都在运行、门铃也只发往内核0、对吧?
    您是否尝试如 base_CIC_IRQ_ISR 中的 SRIO 驱动程序中所示,从 SRIO_DIO_tput.c 插入'SRIO_DIOCommpleIsr ()'以清除门铃挂起中断?

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

    您好、Garrett、

    所有内核在空闲任务中运行正确、CIC 的广播中断路由到每个内核。

    中断 ISR 在每个内核上触发、我可以通过调试器看到它。

    现在,在针对 core0的 ISR 中调用'sirio_dioCommpleIsr()'时,它运行稳定,但其他内核有时会获得与 ca 有关的中断。 2US 周期时间。

    静态空 base_CIC_IRQ_ISR (UARg 参数)
    {
    timem = TSCL;
    
    timediff = timem - time_old;
    TIME_OLD = timem;
    
    如果(DNUM = 0)
    {
    SRIO_dioCompleIsr ((SRIO_DrvHandle)参数、0);
    }
    
    } 

    我的问题是、为什么其他内核上有时会出现来自 CIC 的如此快速的中断?

    我也应该清除 CIC 上的中断吗? 如果是、我该如何操作?

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

    您是否尝试禁用中断嵌套模式?
    /*在 CPINTC 模块中不配置嵌套支持。 *
    CSL_CPINTC_setNestingMode (HND、CPINTC_NO_Nesting);
    请参阅 processors.wiki.ti.com/.../Configuring_Interrupts_on_Keystone_Devices

    此主题讨论用于 CIC 上清除中断的 API - e2e.ti.com/.../433421

    此致、
    Garrett