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。
请帮我找出我的问题。
谢谢!