DSP接收PC发送的以太包,但是DSP端一直接收不到数据,查看寄存器RXGOODFRAMES一直为0,但是寄存器RXFRAGMENTS却有数据,同时NETOCTETS寄存器也有值。给我的感觉是,数据包进来了,但是不知道为何DSP接收到了很多碎片,请问这是什么问题呢?
之前这一块通路还是好的,但是现在突然就不好了,通过示波器观察MII接口的TXCLK,TXEN,TXD,RXCLK,TXDV,RXD都没看到异常。
Andy Yin:
whisper.wind 您好,
由于之前的测试通路是好的,所以我觉得可以重点比较确认一下前后的测试差异:
1. 测试的硬件链接及配置;
2. 相关发包的数据及软件等。
从user guide来看,如果收到的包都是RXFRAGMENTS的话,说明收到的包大size小于64B,且存在CRC error,alignment及error code,请重点查一下这一块。
另外建议重启环境进行一下测试,谢谢。
whisper.wind:
回复 Andy Yin:
谢谢Andy!
硬件的连接和配置没有变化,我担心某些元器件损坏,所以从C6455到PHY到RJ45这个链路上的所有元器件我都重新换了一遍,问题依然存在。
我PC端发送的包的size均是大于64B,唯一让我觉得怀疑的就是,DSP接收到的包发生了破坏,但是现在不知道采用什么样的方法来验证这一点。
另外,DSP发送数据包,PC一样接收不到,但是DSP发送寄存器TXGOODFRAMES的数值是正常的,这个也很奇怪。
重启环境是什么意思?我使用的是XDS560PLUS Emulator,望不吝指教,谢谢
King Wang:
回复 whisper.wind:
whisper.wind 您好:
TXGOODFRAMES和RXGOODFRAMES能统计到进出EMAC的报文,RXFRAGMENTS统计了报文错误的情况,一般是CRC错(链路信号不稳定)和包长小于(64)等的非正常包。
从统计寄存器情况来看应该是Ethernet传送中间信号问题,不过这个现象不好确定。
我建议你可以试试EMAC Loopback模式,如果Loopback模式能够测试通过,那么再仔细检查下是否链路中间有什么问题。
谢谢!
whisper.wind:
回复 King Wang:
Thanks, King Wang!
我也是怀疑ethernet传输不稳定造成的,只是没有很好的方法去检测,我用示波器观察了MII接口的TX各路信号和RX各路信号,只从信号表象来看,也没发现明显异常。
另外,如果EMAC收到了错误的报文,我是否能够看到出错的以太包?也就是说RXFRAGMENTS寄存器有值的情况下,能否观察到以太包?
EMAC loopback模式,我试试,如果这个测试通过,应该可以排除EMAC本身的问题,是么?
我使用的是TI提供的EMAC CSL开发包,没有使用NDK。
Andy Yin:
回复 whisper.wind:
whisper.wind您好,
EMAC是支持配置将错误的数据包保存到相应的memory的,具体还请看看user guide。
如果loopback没有问题的话说明EMAC收发包应该是没问题。
确认两点:
1. 请问DSP与PC链接中是否存在其他的switch硬件;
2. 跟之前相比,处理硬件更新之外,软件是否有变化。
谢谢。
whisper.wind:
回复 Andy Yin:
thanks Andy!
如果要查看接收出错的以太包,是需要使能RXCEFEN,是么?
1. 请问DSP与PC链接中是否存在其他的switch硬件?
硬件中的链路是: DSP—PHY(LXT971A)—-RJ45(内含1:1 transformer)—- cross over cable—–网卡(PC)
2. 跟之前相比,处理硬件更新之外,软件是否有变化。
板子的硬件只是更新了元器件,包括PHY和RJ45,没有任何原理图的改动。 软件没有做任何变化,我就是拿之前测试通过时候的软件来测, 发现得这个问题。
thanks!
whisper.wind:
回复 whisper.wind:
to Andy and King :
我刚刚使能了RECEFEN,这样DSP接收到的数据包即便出错了,也可以存储在内存里。通过观察,发现一个比较有规律的现象,两位能否帮我看看问题出在什么地方?
接收到的以太包中,有数据丢失的现象,而且总是会接收一段正确的数据,丢失10个byte,再接收一段正确的数据,又丢失了10byte。 一个完整的以太包中,总是断断续续的丢数,但是每次丢数都丢10个byte。但是没丢的接收到的数据又是正确的。
这个问题太奇怪了,想不通会是什么问题。
希望两位能指点一下,谢谢!
Andy Yin:
回复 whisper.wind:
whisper.wind 你好,
建议试试DSP EMAC loopback功能,从而定位是否DSP出的问题,如果DSP EMAC存在问题,loopback模式应该能复现上述问题;同时可以怀疑一下PHY的可能性问题。我们可以一步步进行排查,谢谢!
whisper.wind:
回复 Andy Yin:
thanks Andy!
我今天会测试EMAC loopback模式,不过EMAC loopback模式的程序没有调通。
请问,Andy, EMAC loopback和PHY loopback 在实验时候分别要注意些什么?
谢谢!
whisper.wind:
回复 whisper.wind:
to Andy:
EMAC loopback 模式是正常的, 发送数据包,和接收数据包能够对上,没有出现接收丢数的情况。