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.

关于 6678 中断事件与 中断服务子函数 绑定与解除绑定的问题

您好,

问题1:比如6678 edma 完成中断事件 EDMA3CC1 CCINT0,第一次搬移 通过CpIntc_dispatchPlug ( EDMA3CC1_CCINT0, (CpIntc_FuncPtr)fun1, (UArg)0, TRUE),响应了 fun1。下一次搬移我可能需要将该中断事件 与fun2绑定:CpIntc_dispatchPlug ( EDMA3CC1_CCINT0, (CpIntc_FuncPtr)fun2, (UArg)0, TRUE),从而通过EDMA3CC1 CCINT0 事件去响应fun2。目前它只会响应fun1,(可以确定中断配置没有问题,注释掉fun1的配置可以响应fun2)请问该如何做才能响应了fun1,重新配置后又能去响应fun2??

问题2:6678 edma 有8个region,每个核分配一个region,只使用一个edmacc,而对于一个edmacc,每个核只能通过 EDMA3CCm CCINTx (x:core id)和 EDMA3CCmCC_GINT 输出中断,这是否意味着这种方式下一个核只能响应两种edma 完成中断(即有两个edma 完成中断服务子函数)??

谢谢!

  • 1 不建议动态修改中断挂接函数,可以在中断服务函数中根据相关的标志位如通过读取IPR,根据IPR中不同植置位bit执行不同的函数;

    2 每个EDMA CC可以对global region,及shandow region分别产生中断,总共9个中断事件连接到CPINTC,然后可以通过CPINTC进行路由到Corepac INTC,也就是说每个core可以区分9个EDMA中断。如果软件分配每个core对应一个shandow region,可以配置对应region产生的中断事件路由到相应core,然后在中断服务函数中根据不同IPR bit来区分EDMA channel事件。