专家好!
本人最近想提供SRIO实现两块C6678 DSP间的数据环路通信,程序是在TI官方提供的SRIO例程上修改得到的,软件版本号5.3.0,其中遇到了一些问题,望解答!
1、在例程中的uiSrc其为发送数据的源地址,是不是不能赋给它DDR3的地址,为什么?
2、现在两边数据通信时,首先DSP1采用乒乓操作,分别循环给两块地址发数,在DSP2的doorbell服务函数里根据doorbell值分别进行DMA搬移,等全部数据接收完后,该DSP2再将该段数据以同样方式发送回去,DSP1也以同样方式接收,只是地址不同而已。现在的问题是当我两端程序跑起来后,偶尔会出现DSP1给DSP2数能发送完,可是在DSP2端,doorbell响应次数少2次,而且一定为第1包和第3包数;或者DSP1能给DSP2发数,DSP2也能正确接收,当DSP2给DSP1发回去时,又出现少两包情况,也是第1包和第3包。
然后我就怀疑是不是DSP发数太快,导致第一包被2包冲掉了,第3包被第4包冲掉了,所以我试着在两端DSP程序的第1次和第2次发数间都加了延时,结果环路数据是能正确传了,但是把循环次数加大,又会出现上述问题,是不是在程序里我需要修改些参数,毕竟加延时影响性能,求解答!!!
下面就是我修改后的程序,标题中的256M表示我发数65536次,每次4096B,此时能实现数据环路传递,次数改大就不行,希望专家能给我看看,哪里出现了问题,需要怎么修改?
谢谢!