This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
DSP接收PC发送的以太包,但是DSP端一直接收不到数据,查看寄存器RXGOODFRAMES一直为0,但是寄存器RXFRAGMENTS却有数据,同时NETOCTETS寄存器也有值。给我的感觉是,数据包进来了,但是不知道为何DSP接收到了很多碎片,请问这是什么问题呢?
之前这一块通路还是好的,但是现在突然就不好了,通过示波器观察MII接口的TXCLK,TXEN,TXD,RXCLK,TXDV,RXD都没看到异常。
谢谢Andy!
硬件的连接和配置没有变化,我担心某些元器件损坏,所以从C6455到PHY到RJ45这个链路上的所有元器件我都重新换了一遍,问题依然存在。
我PC端发送的包的size均是大于64B,唯一让我觉得怀疑的就是,DSP接收到的包发生了破坏,但是现在不知道采用什么样的方法来验证这一点。
另外,DSP发送数据包,PC一样接收不到,但是DSP发送寄存器TXGOODFRAMES的数值是正常的,这个也很奇怪。
重启环境是什么意思?我使用的是XDS560PLUS Emulator,望不吝指教,谢谢
whisper.wind 您好:
TXGOODFRAMES和RXGOODFRAMES能统计到进出EMAC的报文,RXFRAGMENTS统计了报文错误的情况,一般是CRC错(链路信号不稳定)和包长小于(64)等的非正常包。
从统计寄存器情况来看应该是Ethernet传送中间信号问题,不过这个现象不好确定。
我建议你可以试试EMAC Loopback模式,如果Loopback模式能够测试通过,那么再仔细检查下是否链路中间有什么问题。
谢谢!
Thanks, King Wang!
我也是怀疑ethernet传输不稳定造成的,只是没有很好的方法去检测,我用示波器观察了MII接口的TX各路信号和RX各路信号,只从信号表象来看,也没发现明显异常。
另外,如果EMAC收到了错误的报文,我是否能够看到出错的以太包?也就是说RXFRAGMENTS寄存器有值的情况下,能否观察到以太包?
EMAC loopback模式,我试试,如果这个测试通过,应该可以排除EMAC本身的问题,是么?
我使用的是TI提供的EMAC CSL开发包,没有使用NDK。
whisper.wind您好,
EMAC是支持配置将错误的数据包保存到相应的memory的,具体还请看看user guide。
如果loopback没有问题的话说明EMAC收发包应该是没问题。
确认两点:
1. 请问DSP与PC链接中是否存在其他的switch硬件;
2. 跟之前相比,处理硬件更新之外,软件是否有变化。
谢谢。
thanks Andy!
如果要查看接收出错的以太包,是需要使能RXCEFEN,是么?
1. 请问DSP与PC链接中是否存在其他的switch硬件?
硬件中的链路是: DSP---PHY(LXT971A)----RJ45(内含1:1 transformer)---- cross over cable-----网卡(PC)
2. 跟之前相比,处理硬件更新之外,软件是否有变化。
板子的硬件只是更新了元器件,包括PHY和RJ45,没有任何原理图的改动。 软件没有做任何变化,我就是拿之前测试通过时候的软件来测, 发现得这个问题。
thanks!
to Andy and King :
我刚刚使能了RECEFEN,这样DSP接收到的数据包即便出错了,也可以存储在内存里。通过观察,发现一个比较有规律的现象,两位能否帮我看看问题出在什么地方?
接收到的以太包中,有数据丢失的现象,而且总是会接收一段正确的数据,丢失10个byte,再接收一段正确的数据,又丢失了10byte。 一个完整的以太包中,总是断断续续的丢数,但是每次丢数都丢10个byte。但是没丢的接收到的数据又是正确的。
这个问题太奇怪了,想不通会是什么问题。
希望两位能指点一下,谢谢!
whisper.wind 你好,
建议试试DSP EMAC loopback功能,从而定位是否DSP出的问题,如果DSP EMAC存在问题,loopback模式应该能复现上述问题;同时可以怀疑一下PHY的可能性问题。我们可以一步步进行排查,谢谢!
thanks Andy!
我今天会测试EMAC loopback模式,不过EMAC loopback模式的程序没有调通。
请问,Andy, EMAC loopback和PHY loopback 在实验时候分别要注意些什么?
谢谢!
to Andy:
问题已解决。 原因是MDCLK保持在了50KHz,看到这个值,我就知道问题出在哪儿了:
我设置C6455运行在1000MHz,并据此频率分频使得MDCLK保证在1MHz,这就是之前测试通过后的平台。但是现在不知道什么原因使得初始化后C6455内核时钟输入链路上的PLL模块被bypass了,结果C6455运行在了50MHz,而MDCLK就保持在了50KHz。 手动使能PLL模块之后,问题解决。
by the way: 我可以确信我之前是没有手动使能PLL模块的,而直接使用的时,系统上电后的初始化设置,DSP确实能运行在1000MHz,但是现在却不行了,让我觉得很奇怪, Andy能否给些建议? 谢谢
wind
前后加载方式是否一样?比如你是通过bootloader加载的还是根据6455中自身的bootrom 加载的?
建议系统上电后,你能否检查下你的PLL寄存器配置
whisper.wind 您好:
最近我也在研究DSP网口开发方面问题,新手上路,想向你请教这方面的问题,不知方便否?
我的邮箱: hafeigu_2006@126.com QQ:526461551
还请多多指教,谢谢!