你好!
本人现在自己的板子上调试SGMII通信,板子上是两片DSP间通过Port 0直接相连,程序是在TI自带的emacExample的基础上改的。目前遇到的问题有三个:
1、当DSP1(跑发数程序)发往DSP2(跑收数程序),发现DSP2是能响应中断,且中断服务函数Cpsw_RxISR()中能收到数据包,但只有包头是完整的,后面的数据却丢失了,不知道是什么原因?。如下图所示,图1是DSP1产生的UDP数据包,图2s是DSP2收到后的UDP数据包
图1
图2
2、还是在中断服务函数Cpsw_RxISR()中,尽管DSP2能收到数据包,但是想将其通过DMA方式搬移到DDR3发现,行不通。但是将地址改为MSMC的地址,却可以实现搬移,具体代码如下:
DMA_Init(0);
DMA_transportAB(0,(UInt32 *)Convert_CoreLocal2GlobalAddr((UInt32)pHostDesc->buffPtr+0x2c), pkt_size , pkt_size , (UInt32 *) (0xa0000000+pkt_size*gRxCounter*4),pkt_size, 4);
waitDMAover(0);
3、如果DSP1跑收数程序,而DSP2跑发数程序,这时DSP1中断不能响应,DSP2数据不能正确赋值,请问这是什么情况?
急,望解答!!!
谢谢!
Andy Yin1:
1 看接收包头后面的数据还挺有规律的,貌似是哪个地方发过来的数据,把接收包头后面的数据清零,然后再测试看看有没有变化确认是否受到以太网收发数据的影响;
2 你的DDR有初始化么?
3 DSP2不能正确赋值是啥意思,是生成以太网包的时候不能正确赋值么,你的数据地址在哪里?