您好:
目前我使用到了core0和core1,两者分别控制协处理器TCP3e和TCP3d,单核调试时均调通了,但是多核运行时两个核跑部分程序后就不跑了,停止的核停在了接收rcv event上,即接收不到应该接受的event而一直在等待…
我比较了一下两个核使用到的模块,感觉问题出在EDMA3上了,两个核初始化时均使用到了同一个EDMA3_DRV_LINK_CHANNEL,Core0先进行了初始化打开了EDMA3_DRV_LINK_CHANNEL,然后Core1进行初始化同样打开了EDMA3_DRV_LINK_CHANNEL,这时Core0与EDMA3_DRV_LINK_CHANNEL的连接不正常了,无法正常接收到EDMA发来的event 信息,而程序不能继续。
想问一下我对这个问题的分析对不对?
目前我想到的一个解决方案是:两个核不在同一时刻使用tcp3d和tcp3e,应该交替使用,即Core0使用完tcp3e后Core1才能用tcp3d,Core1使用完成tcp3d后再用Core0的tcp3e,并且每次都要调用tcp3e或tcp3d前都要初始化。
但是初始化占用的cycle数较多,感觉是重复浪费,其次,这样使用没能把tcp3e和tcp3d真正的并行起来。
想问问大家有没有更好的办法解决这个问题?
谢谢了,对EDMA的event还不是很熟悉,谢谢解答啦^_^