想用edma从core0的local L2搬移到core1的local L2。core0上的程序传输结束后,core1的程序能够收到中断。
问题:core1上只需要安装edma中断就可以了么?core1也需要初始化edma和channel么?
Andy Yin1:
EDMA是多核共享资源,EDMA的配置只需要一个核做就好。像你这种应用,可以由core0进行EDMA的配置,core1上配置中断映射即可。
对于keystone DSP来说,core与core之间的数据传输,还可以用CPPI完成,此时core0上配置发送端,core1上配置接收端,具体请参考Navigator手册。
Enoeht lea:
回复 Andy Yin1:
andy你好,问题是如果我先跑core0上的edma等的初始化以及,再跑core1,core1可以收到中断
如果先跑core1,再跑core0,core1就收不到中断了。
是不是core1上也要加上下面这段代码?
regionIpr.region = CSL_EDMA3_REGION_GLOBAL; regionIpr.intr = 1 << (channel_num); regionIpr.intrh = 0;
CSL_edma3HwControl(hModule1,CSL_EDMA3_CMD_INTR_ENABLE, ®ionIpr);
Andy Yin1:
回复 Enoeht lea:
初始化只需要在一个core上做就可以,你上面提到的代码是用于enable某个channel的中断,我觉得只需要在一个core上运行就好,你可以试试在core1上加上后效果如何。建议在初始化后查看EDMA相关的寄存器确认配置是否符合预期,这样可以确认在没收到中断时的中断寄存器IPR是否置位,如果置位,则说明中断事件已经产生,需要确认中断控制器的配置等。