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.

[参考译文] SRIO 门铃路由到 INTDST0 ->CIC0->corePac

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612719/srio-doorbell-routing-to-intdst0---cic0--corepac

Hallo、

我尝试将 Doorbel 中断路由到 INTDST0  

/*设置 Doorbell 路由以确定要使用的路由表
*此配置表示中断路由表配置为
*如下:-
*
CSL_SRIO_SetDoorbellRoute (hSrio、1);

/*路由 Doorbell 中断。
*门铃寄存器0 -所有16个门铃都路由到中断目标0。
*门铃寄存器1 -所有16个门铃都路由到中断目标1。
*门铃寄存器2 -所有16个门铃都路由到中断目标2。
*门铃寄存器3 -所有16个门铃都路由到中断目标3。 *
对于(I = 0;I < 16;I++)
{
CSL_SRIO_RouteDoorbellInterrupts (hSrio、0、I、0);
CSL_SRIO_RouteDoorbellInterrupts (hSrio、1、I、1);
CSL_SRIO_RouteDoorbellInterrupts (hSrio、2、I、2);
CSL_SRIO_RouteDoorbellInterrupts (hSrio、3、I、3);
}

在我这么做之后、我尝试像那样将 INTDST0路由到 CIC0 102的输出

ERR_t BASE_SRIO_IRQ_InitChipIntc (void)
{
CSL_CPINTC_Handle HND;

HND = CSL_CPINTC_open (0);
if (! HND){
返回 ERR_FAIL;
}/*
禁用所有主机中断。 //
CSL_CPINTC_DisableAllHostInterrupt (HND);

//在 CPINTC 模块中配置无嵌套支持。 //
CSL_CPINTC_setNestingMode (HND、CPINTC_NO_Nesting);

//清除 CSL_INTC_EventID_RIOINT0 */
CSL_CPINTC_clearEventInterrupt (HND、CSL_INTC_EventID_RIOINT0);
//启用 SRIO 系统中断编号* CSOT_INTC_INTC0*中断


(HINTC_INTC0_RIOINT0) //
//将112 SRIO 系统中断映射到 CIC 输出102
CSL_CPINTC_mapSystemIntToChannel (HND、CSL_INTC_EventID_RIOINT0、BASE_SRIO_IRQ_INTC_OUTPUT);

//启用主机中断*/
CSL_CPINTC_enableHostInterrupt (HIRQ_BASE_INTC_OUTPUT);//

启用主机中断



*启用主机中断*

我将 INTC 映射到 Corepac INTC 向量9

ERR_t BASE_SRIO_IRQ_InitVec ()
{
内部16. EventID = BASE_SRIO_IRQ_INTC_OUTPUT;//中断 ID
CSL_IntcParam vectId = CSL_INTC_VECTID_9; //中断向量 ID

base_SRIO_IRQ_IntcHnd = CSL_intcOpen (&base_SRIO_IRQ_IntcObj、EventID、&vectId、NULL);
如果(! BASE_SRIO_IRQ_IntcHnd)
{
返回 ERR_FAIL;
}

base_SRIO_IRQ_EvtHdlrRecord[0].handler = base_CIC_IRQ_ISR;//中断函数
BASE_SRIO_IRQ_EvtHdlrRecord[0].arg =(void *) EventID;//中断 ID

CSL_intcPlugEventHandler (base_SRIO_IRQ_IntcHnd、base_SRIO_IRQ_EvtHdlrRecord);

/*在事件处于待处理状态时清除该事件*/
CSL_intcHwControl (base_SRIO_IRQ_IntcHnd、CSL_INTC_CMD_EVTCLEAR、NULL);
/*启用事件*/
CSL_intcHwControl (base_SRIO_IRQ_IntcHnd、CSL_INTC_CMD_EVTENABLE、NULL);
返回 ERR_SUCCESS;
//返回 rc;
} 

但 Doorbel 不会触发 ISR。

请帮我找出我的问题。

谢谢!

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

    我已通知软件团队。 他们的反馈将在此处发布。

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

    这到底是什么器件? BASE_SRIO_IRQ_INTC_OUTPUT 102吗? 在不同的芯片中、主/次级中断编号和主中断编号可能不同。

    在 base_SRIO_IRQ_InitVec ()中,我认为您在开头遗漏了:csl_intcGlobalNmiEnable()和 csl_intcGlobalEnable()。

    以 pdk_c667x_2_0_x\packages/ti\cSL\examples\cpintc\cpintc_test.c 为例。

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

    你(们)好

    我们使用器件 C6678。

    全局启用 将在 base_SRIO_IRQ_InitCoreIntc 中完成、这是第一个被调用的函数。

    ERR_t BASE_SRIO_IRQ_InitCoreIntc (void)
    {
    CSL_IntcGlobalEnableState;
    
    /* INTC 模块初始化*/
    base_SRIO_IRQ_IntcContext.eventhandlerRecord = base_SRIO_IRQ_EvtHdlrRecord;
    base_SRIO_IRQ_IntcContext.numEvtEntry = 2;
    if (CSL_intcInit (&base_SRIO_IRQ_IntcContext)!= CSL_Sok)
    返回 ERR_FAIL;
    
    /*启用 NMI */
    if (CSL_intcGlobalNmiEnable()!= CSL_SOK)
    返回 ERR_FAIL;
    
    /*启用全局中断*/
    if (CSL_intcGlobalEnable (&state)!= CSL_SOK)
    返回 ERR_FAIL;
    
    /* INTC 已成功初始化。 *
    返回 ERR_SUCCESS
    ;} 


    我找不到示例 pdk_c667x_2_0_x\packages/ti\cSL\examples\cpintc\cpintc_test.c
    我们使用 ti-processor-sdk-rtos-c667x-evm-03.00.04-linux-x86/pdk_c667x_2_0_2

    感谢你的帮助

      

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

    03.00.00.04是较旧的版本、但这些中断示例代码应保持不变。 您可以在 packages/ti\cSL\examples\cpintc\cpintc_test.c 下找到相同的内容

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

    还有一些有用的 E2E 讨论:
    e2e.ti.com/.../312741
    e2e.ti.com/.../329556
    e2e.ti.com/.../132181

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

    在我的驱动程序中、我还有一个 SRIO 器件中断使能:
    CSL_SRIO_EnableEventMgmtInterrupts (hSrio);//this 寄存器控制是启用还是禁用所有中断通知

    如果它已经启用、您可以尝试通过检查各种中断状态寄存器来跟踪中断传播:
    - SRIO DOORBELLn 中断条件状态寄存器
    - CIC0 INT_STATUS_REGx
    - CorePac EVTFLAGn

    对于 INTC 和 CPU 中断配置、您使用相同的 id base_SRIO_IRQ_INTC_output。 据我所知、INTC 输出通道不是 C6678输入事件。

    在我的驱动程序中、我具有以下内容:
    CSL_INTC_EventID_RIOINT0 -> BASE_SRIO_IRQ_INTC_OUTPUT -> BASE_SRIO_IRQ_INTC_OUTPUT_EVENT -> CPU 中断

    其中 BASE_SRIO_IRQ_INTC_OUTPUT_EVENT 根据 SPRS691C§7.9将 INTC 输出映射到 C6678事件。 例如、INTC0输出通道1映射到事件103。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Alberto、

    感谢您的支持。 我现在启用了 CSL_SRIO_EnableEventMgmtInterrupts。

    您能解释一下我是如何跟踪中断的。

    谢谢

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

    [引用用户="Fatih ERDAS"]

    您能解释一下我是如何跟踪中断的。

    [/报价]

    使用"trace"、我意味着"注入门铃、中断代码并检查器件寄存器"。 这并不重要、因为您必须找到寄存器的所有存储器地址、在 CCS 存储器浏览器窗口中显示它们并解码内容。 CCS 会有所帮助、因为您可以在"Register"窗口中找到基址。 例如,有组 SRIO->Rio_DoorBell_icsr。 遗憾的是、CCS 仅显示多个寄存器的第一个字、但您可以右键单击该寄存器并选择"View Memory at Address"

    对于 SRIO、我使用一个 GEL 文件"tci6616_SRIO_v0.11.gel"、作者是 Karthik Ramana Sankar、该文件是多年前在论坛中找到的。 可能可以从论坛中检索。 我现在无法开机自检、因为它不在我的 PC 上。


    无论如何、在我的最终驱动程序中、我通过使用直接进入 Core0的 INTd16作为事件20来绕过 INTC0。 即使它不适合您的需求。 您可以尝试确定问题是在 SRIO 中断生成还是在 INT0配置中。

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

    您好!

    我现在可以触发一个 CIC0广播事件来中断系统112 (CIC0上的 INTDST0输入)我的问题是 SRIO 不会触发这个系统中断。

    我进行测试并手动触发这个112系统中断。 我用于此测试附加的 Shannon_interrupts_v0.2.gel 文件、如果我使用 GEL 脚本触发中断112、则内核跳转到 ISR。

    但我不明白为什么 SRIO 不触发该事件。 我看到 RIO_Doorbell _Doorbell 寄存器中的即将到来的 Doorbell 值为0x00000003。

    我将 RIO_INTERRUPT_CTL 寄存器设置为1。 我了解门铃映射的配置是这样的。 门铃将路由到 INTDST0- INTDST15

    请帮我找到我的错误。

    e2e.ti.com/.../Shannon_5F00_Interrupts_5F00_v0.2.gel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没人能看到我的故障、为什么我无法将 SRIO 门铃路由到 CIC0系统中断112
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Fatih、

    您是否曾尝试在 INTdst_RATE_DIS 中禁用中断起搏或将0写入 INTST0_RATE_CNTL?
    有几个主题讨论门铃中断、这些主题可能会有所帮助:

    e2e.ti.com/.../371495
    e2e.ti.com/.../312741

    此致、Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您解决了我的问题、现在 SRIO Doorbels 已经是从 CIC0路由到了