工具与软件:
您好!
我正在尝试使用 Cortex-R5F 上的 UART1外设触发中断。 我可以使用 TI 的 DRV 功能来使用 UART、但使用 A53特定中断(CSL_GIC0_INTR_USART1_BUS_USART_IRQ)不起作用。
因此、我们研究了如何使用类似于本文所述的中断路由方法: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/779597/am6526-creating-an-interrupt-from-pru-to-r5f。但遇到了问题。
我们将使用 SR2.0并尝试使用 CSL 库配置中断路由、执行此操作的代码如下所示:
/* Configure MAIN2MCU_LVL_INTRTR0 interrupt router */ int32_t configureIntrRouter( uint32_t intrRtrInIntNum, uint32_t intrRtrOutIntNum ) { CSL_IntrRouterCfg intrRouterMain2MCUCfg; int32_t retVal; /* Initialize Main to MCU Interrupt Router config structure */ intrRouterMain2MCUCfg.pIntrRouterRegs = (CSL_intr_router_cfgRegs *)(uintptr_t)(CSL_MAIN2MCU_LVL_INTRTR0_CFG_BASE); intrRouterMain2MCUCfg.pIntdRegs = (CSL_intr_router_intd_cfgRegs *)(uintptr_t)NULL; intrRouterMain2MCUCfg.numInputIntrs = 192; intrRouterMain2MCUCfg.numOutputIntrs = 64; retVal = CSL_intrRouterCfgMux(&intrRouterMain2MCUCfg, intrRtrInIntNum, intrRtrOutIntNum); if (retVal < 0) { return -1; } return 0; }
我们这样称呼它:
configureIntrRouter(CSLR_MAIN2MCU_LVL_INTRTR0_IN_UART1_USART_IRQ_0, 2);
根据我们可以看到的情况、我们正在尝试将中断 CSLR_MAIN2MCU_LVL_INTR0_IN_UART1_USART_IRQ_0路由到中断2、以便 TI UART 驱动程序可以向其附加 OSAL 中断。
问题是、我们的代码正在遇到函数 CSL_intrRouterCfgMux 中的数据中止处理程序、特别是在我们尝试禁用中断输出的行:
regVal &= ~INTR_ROUTER_CFG_MUXCNTL_INT_ENABLE; CSL_REG32_WR( &pCfg->pIntrRouterRegs->MUXCNTL[outputIntrNum], regVal );
TI 是否知道出现这种情况的原因? 我们从 UART1在 R5F 中触发中断的方法是否正确?
谢谢!
本