我有几个问题,附件是一个非常简化的DMA例子,可以实现一个核内数据的搬移,但是只有Core0可以用,其他Core都一直在等待interrupt,一直在while中出不来。。
while (irqRaised1 == 0u)
{
printf ("waiting for interrupt...\n");
}
也就是只有core0在transfer complete之后触发了完成中断,修改了irqRaised1。
其他核并不能产生中断。
我理解的是,根据手册:完成中断有两种类型,一种是Global Transfer Completion Interrupt,一种是Transfer Completion Interrupt Shadow Region x。
为了使每个核都可以搬移数据,是不是需要采用第二种方式?这是由哪里配置的?
unsigned int gblCfgReqdArray [NUM_DSPS] = {
0, /* DSP#0 is Master, will do the global init */
1, /* DSP#1 is Slave, will not do the global init */
1, /* DSP#2 is Slave, will not do the global init */
1, /* DSP#3 is Slave, will not do the global init */
};