TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6678: 6678网口SGMII1 无法link up的问题

Part Number:TMS320C6678Other Parts Discussed in Thread:CDCM6208

1,用NDK测试

测试环境:phy芯片是88E1111,dsp的SGMII 1 与phy链接,时钟250MHz。

软件上,serdes的时钟配置为0x00000051;这个也没问题。

结果:网口初始化会卡在CSL_SGMII_setAdvAbility (macPortNum, &sgmiiCfg);函数中的最后一步,一直不往下运行。现在测量PHY的输入时钟都有,PHY复位时间也做了延长,都没效果。

if (macPortNum == 1) {

        /* Hold the port in soft reset and set up

         * the SGMII control register:

         *      (1) Disable Master Mode

         *      (2) Enable Auto-negotiation

         */

        CSL_SGMII_startRxTxSoftReset (macPortNum);

        CSL_SGMII_disableMasterMode (macPortNum);

        CSL_SGMII_enableAutoNegotiation (macPortNum);

        CSL_SGMII_endRxTxSoftReset (macPortNum);

 

        /* Setup the Advertised Ability register for this port:

         *      (1) Enable Full duplex mode

         *      (2) Enable Auto Negotiation

         *      (3) Enable the Link

         */

        sgmiiCfg.linkSpeed      =   CSL_SGMII_1000_MBPS;

        sgmiiCfg.duplexMode     =   CSL_SGMII_FULL_DUPLEX;

        CSL_SGMII_setAdvAbility (macPortNum, &sgmiiCfg);

 

        do

        {

            CSL_SGMII_getStatus(macPortNum, &sgmiiStatus);

        } while (sgmiiStatus.bIsLinkUp != 1);

 

        /* Wait for SGMII Autonegotiation to complete without error */

        do

        {

            CSL_SGMII_getStatus(macPortNum, &sgmiiStatus);

            if (sgmiiStatus.bIsAutoNegError != 0)

                return; /* This is an error condition */

        } while (sgmiiStatus.bIsAutoNegComplete != 1);

    }

2,GE测试loopback

SERDES 内部loopback测试。

会打印出;

Disable power domain 2 timeout!

enable power domain 2 timeout

external exception happened. MEXPFLAG[3] = 0X84000000.

Event 122:DMC_CMPA CPU ……………………….

等一系列log。

这些是什么原因造成的呢?

该怎么解决?

Shine:

请参考下面帖子中PHY的配置是否正确?https://e2echina.ti.com/support/processors/f/processors-forum/64173/tms320c6678-sgmii1-link-up

,

wapdasta:

上面的帖子中是没有解决方案的。未解答。参考不了。我这边phy芯片是88E1111,最常用的的

今日最新测试用MDIO接口读取phy的状态,addr 1是access successful 的,说明MDIO到PHY是能通信的,但是还是卡在函数,初始化完成不了。

        CSL_SGMII_setAdvAbility (macPortNum, &sgmiiCfg);

        do

        {

            CSL_SGMII_getStatus(macPortNum, &sgmiiStatus);

        } while (sgmiiStatus.bIsLinkUp != 1);

,

wapdasta:

发现dsp SGMII 1接口获取到的MR_LP_ADV_ABILITY寄存器的值总跳变。

软件没配置PHY的情况下,电脑端与88E1111协商也只有10MHz,并且状态很不稳定。

这可能是同一种原因导致,但是目前不知道是什么原因。

,

Shine:

我把您的问题升级到e2e论坛,请关注下面的帖子。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1006848/tms320c6678-sgmii1-can-t-link-up

,

wapdasta:

最新测试结果:

1,88E1111与网口自协商到10MHz是因为做的网线连接器有问题。已整改。

2,网口初始化不过是因为CDCM6208出来的SGMII时钟不稳定,抖动很大。已整改。

3,最新遇到问题:经过一系列调整,网口初始化能过了,查看寄存器,自协商也正常,link正常。但是电脑端ping不通板卡。希望TI工程师给予建议,解决方法。

,

wapdasta:

我查看了网口的一些STAT寄存器,比较了正常板卡和异常板卡的区别,确实有dsp网口发送失败的计数,但是不知道是什么原因导致。

补充一点:以下寄存器的计数,是跟随PC端发的ARP包相关,一起跳变。如果把pc上的ping停止,寄存器就不再增加。

异常板卡初始化正常,但是ping不通。wireshark收不到dsp发出的任何数据。

,

Shine:

请问SERDES 内部loopback测试可以通过吗?

,

wapdasta:

测试是可以通过的,对EMAC loopback SGMII loopback  SERDES loopback 都进行了测试。都是没问题。测试结果和下图类似

,

Shine:

正常的板用的也是88E1111吗?异常板和正常板硬件一样么?

,

wapdasta:

是不同的设计.相同点就是都用得88E1111phy ,6678DSP芯片. phy的硬件配置一样.

不同点:时钟产生电路不一样,正常板卡的时钟质量很好,异常板卡是用CDCM6208配置出来的.,最开始质量不行,抖动厉害,后来改了一下配置,SGMII 初始化就能通过.

             端口不一样: 正常板卡用的SGMII 0 ,异常板卡用的SGMII 1.

              phy出来接的电路也不一样,正常板卡出来直接接HR871190A(自带变压器的RJ45).异常板卡出来先是接变压器,再用连接器接的网线.(这块接线应该没问题).

,

wapdasta:

最新测试发现88E1111 与 dsp 网口通信的SGMII 差分信号有很大区别.

正常板卡62M左右很稳.异常板卡跳变很厉害 .但是测试phy 的电源 25M时钟都很好.这是什么原因导致.

 

正常板卡的波形.

异常板卡的波形.

,

Shine:

请参考下面的设计文档检查一下布线和时钟设计。6.4.2 System Implementation of SGMIIhttps://www.ti.com/lit/an/sprabi2d/sprabi2d.pdf

,

wapdasta:

你好,问题已解决.

在这把解决方法分享一下:

1,波形采集的乱是因为示波器地线距离板卡太远.

2,导致ping不通的原因是:platform.c文件中的一个参数没颠倒过来。 PLATFORM_EMAC_PORT_MODE_PHY.应该是哪个端口接phy,就用这个配置。之前好的板卡是用的SGMII 0 所以如果要使用SGMII ,一定要改这个参数!!!!!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6678: 6678网口SGMII1 无法link up的问题
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1