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.

evm6678l GE测试link状态跳变问题求助



官方evm6678l rev.3B单板,使用K1_STK_v1.1中GE工程测试,测试模式设置DSP0 -> DSP1 (or PC),直接使用PC接收,运行后反复触发link状态变化中断,更换PC及网线、单板都有此问题,请专家协助解决下,谢谢。

ps:使用pdk_c667x_2_0_9

打印信息如下:

[C66xx_0] JTAG ID= 0x1009e02f. This is C6678/TCI6608 device, version variant = 1.
DEVSTAT= 0x00000001. little endian, No boot or EMIF16(NOR FLASH) or UART boot, PLL configuration implies the input clock for core is 50MHz.
SmartReflex VID= 60, required core voltage= 1.084V.
Die ID= 0x0301000e, 0x0403e83e, 0x00000000, 0x03f20001
Device speed grade = 1000MHz.
Enable Exception handling...
board type:2
Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
Initialize PASS PLL clock = 100.00MHz/2x21 = 1050.000MHz
Initialize DDR speed = 66.67MHzx/1x20 = 1333.333MTS
GE auto negotiation (slave) two DSPs test (DSP0 -> DSP1)...
begin mdio init
begin eth port init
wait emac 1 rest ok
EMAC 1 rest ok
Unconnected SGMII0 port can only be used for internal loopback test
Unconnected SGMII0 port can only be used for internal loopback test
Ethernet PHY1 link down. TSCL= 0x9900e1
received 70 bytes (last byte=0x1), packet type = 0x86dd, from srouce address 0xc85b76bce6a2 to destination address 0x333300010003
received 50 bytes (last byte=0x1), packet type = 0x0800, from srouce address 0xc85b76bce6a2 to destination address 0x01005e0000fc
Ethernet PHY1 link down. TSCL= 0x99dca6
Ethernet PHY1 link up. TSCL= 0x99fed9
SGMII1 Link Partner Advertised Ability 1000Mbps Full Duplex
received 78 bytes (last byte=0x1), packet type = 0x0800, from srouce address 0xc85b76bce6a2 to destination address 0xffffffffffff
Ethernet PHY1 link up. TSCL= 0x9aa981
SGMII1 Link Partner Advertised Ability 1000Mbps Full Duplex
Ethernet PHY1 link up. TSCL= 0x9af7b8
SGMII1 Link Partner Advertised Ability 1000Mbps Full Duplex
Ethernet PHY1 link down. TSCL= 0x9b4603
Ethernet PHY1 link up. TSCL= 0x9b684f
SGMII1 Link Partner Advertised Ability 1000Mbps Full Duplex
Ethernet PHY1 link down. TSCL= 0x9bb69b
received 78 bytes (last byte=0x1), packet type = 0x0800, from srouce address 0xc85b76bce6a2 to destination address 0xffffffffffff
Ethernet PHY1 link up. TSCL= 0x9c34e0
SGMII1 Link Partner Advertised Ability 1000Mbps Full Duplex
Ethernet PHY1 link up. TSCL= 0x9c8329

  • 试试跑一下NDK例程,看有没有同样的问题。
    www.ti.com/.../sprac57.pdf
  • ndk例子中没有检测链路link状态,数据通道是通的(ping192.168.1.4没有丢包),在GE测试中数据通道也是通的,只是link 中断会不断触发

    在ndk的main函数里面加入mdio配置代码,不断查询mdio的LINK_REG寄存器,LINK_REG也是经常会出现变为0的情况,会不会是gel文件哪地方配置需要优化,我使用的evmc6678l.gel文件版本是#define GEL_VERSION     2.005

    void KeyStone_MDIO_Init(Ethernet_MDIO_Config *  mdio_cfg)  //clock_div=350,link_INT1_PHY_select=1

    {

       if(NULL == mdio_cfg)

           return;

       gpMDIO_regs->CONTROL_REG= CSL_MDIO_CONTROL_REG_ENABLE_MASK

           |CSL_MDIO_CONTROL_REG_FAULT_MASK    /*write 1 to clear this bit*/

           |CSL_MDIO_CONTROL_REG_FAULT_DETECT_ENABLE_MASK

           |(mdio_cfg->clock_div<<CSL_MDIO_CONTROL_REG_CLKDIV_SHIFT);

       //link INT1 setup

       if(mdio_cfg->link_INT1_PHY_select<=MDIO_INT_SELECT_PHY_31)

           gpMDIO_regs->USER_GROUP[1].USER_PHY_SEL_REG=

               CSL_MDIO_USER_PHY_SEL_REG_LINKINT_ENABLE_MASK

               |(mdio_cfg->link_INT1_PHY_select<<CSL_MDIO_USER_PHY_SEL_REG_PHYADR_MON_SHIFT);

       /*The MDIO module powers up in an idle state before it is enabled.

       wait for it is not idle (really enabled)*/

       while(gpMDIO_regs->CONTROL_REG&CSL_MDIO_CONTROL_REG_IDLE_MASK);

    }

    测试结果:

    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x0000000a
    MDIO LINK  flag: 0x00000000
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000000
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000000
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000000
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000002
    MDIO LINK  flag: 0x00000000
    MDIO alive reg : 0x00000000
    MDIO LINK  flag: 0x00000002
    MDIO alive reg : 0x00000002