工具与软件:
您好!
我正在尝试使用 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 中触发中断的方法是否正确?
谢谢!
本