最近在C6678 EVM板上实验PA_emacExmple的时候遇上了一些问题。这里例子默认是在core0上运行了,当我把代码移到core7(为以后有中断的多核程序做准备)上时pa,qmss等初始化都成功了,但发送过后最后收不到包,中断函数没有调起来。
在把代码移到core7的过程中,我按照文档上interrupt mapping修改了收队列号至711,并修改了对应的accChannel号至7,除此之外没有进行其他修改。想请问一下这么修改是不是对的,是否还要修改其他地方?accmulation的中断时怎样配置送到不同core的?我和Muticore的PA例子做过对比,后者除了没有中断意外基本和前者没有区别,但其network coprocesser的配置是在core0完成的。请问非得如此吗,在别的核完成配置和发送接收不行吗?谢谢~
Andy Yin1:
Netcp作为一个共享资源,首先可以肯定的是任意核都可以使用。你的修改是正确的,确认一下Q711是否有被其他使用,可以调试看看Q711中有没有接收到descriptor。
David Yang:
回复 Andy Yin1:
谢谢你的解答~我试着屏蔽了accumulator和硬中断的相关代码,改用pa_muticore例子中的方法,用代码轮询711号队列,发现10个包都在收队列里面全部能够收到。这排除了PA相关配置的问题,还是落在了硬中断没有引发上。排查了代码没有发现711号队列被其它地方使用,实质上只有配置RX的函数应用了收队列。您还有什么看法和意见吗,谢谢~
David Yang:
回复 Andy Yin1:
问题已经解决了。之前accumulator监视的queue,accChannel的号和队列号都修改正确。但我直接修改的赋值没有修改PA_ACC_CHANNEL_NUM的宏定义,而accChannel在中断服务函数Cpsw_RxISR中也有应用。Qmss_setEoiVector()要使用这个变量清除中断。改为修改宏定义后就能够在任何一个核上成功运行了。谢谢您的帮助!