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.

C6455 EMAC开发问题【紧急求助】

DSP接收PC发送的以太包,但是DSP端一直接收不到数据,查看寄存器RXGOODFRAMES一直为0,但是寄存器RXFRAGMENTS却有数据,同时NETOCTETS寄存器也有值。给我的感觉是,数据包进来了,但是不知道为何DSP接收到了很多碎片,请问这是什么问题呢?

之前这一块通路还是好的,但是现在突然就不好了,通过示波器观察MII接口的TXCLK,TXEN,TXD,RXCLK,TXDV,RXD都没看到异常。

  • whisper.wind 您好,

    由于之前的测试通路是好的,所以我觉得可以重点比较确认一下前后的测试差异:

    1. 测试的硬件链接及配置;

    2. 相关发包的数据及软件等。

    从user guide来看,如果收到的包都是RXFRAGMENTS的话,说明收到的包大size小于64B,且存在CRC error,alignment及error code,请重点查一下这一块。

    另外建议重启环境进行一下测试,谢谢。

  • 谢谢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:

    EMAC loopback 模式是正常的, 发送数据包,和接收数据包能够对上,没有出现接收丢数的情况。

  • whisper.wind您好,

    请问目前问题解决了么,具体是什么原因导致的,分享一下吧,谢谢。

  • 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 BIOS下如何“手动使能PLL模块“? 先谢了!

  • whisper.wind 您好:

          最近我也在研究DSP网口开发方面问题,新手上路,想向你请教这方面的问题,不知方便否?

         我的邮箱: hafeigu_2006@126.com  QQ:526461551

         还请多多指教,谢谢!