Quantcast
Channel: C6000™多核 - 最近的话题
Viewing all articles
Browse latest Browse all 5545

TMS320C6678 SGMII1 无法link up的问题

$
0
0

    自己参考开发板设计的6678通过SGMII1接口与88E1111相连进行以太网通信的板卡(SGMII0没有连接),连接与配置都与开发板一样。

    问题描述如下:

    (1):板子刚做好调试的时候,利用MCSDK下的helloworld例程,在电脑上可以ping通;

    (2):由于项目一直没有交,板子搁置了很久一段时间,现在再连接通信的时候,千兆以太网的指示LED灯并不是每次上电的时候都能点亮,需要重复上电好几次才会亮,一开始以为是网线与板卡连接的网口有问题,后来将网线直接飞线到板卡上,还是同样的情况;

    (3):当千兆以太网灯亮的时候,再用helloworld例程,则程序在初始化SGMII的时候总是初始化不过,发现程序卡在platform_lib_evmc6678l中的Init_SGMII函数中如下标红的部分:

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);

    }

    这应该是SGMII1的link up没有link通,初步估计是硬件问题,但检查电源时钟都没有问题,且同样的代码在开发板上完全可以跑通并ping通!

 

    求指导,如果是硬件问题,应该从哪里开始检查,还是88E11111的外围电路配置有问题??

   谢谢!


Viewing all articles
Browse latest Browse all 5545

Trending Articles