官方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/1×10 = 1000MHz
Initialize PASS PLL clock = 100.00MHz/2×21 = 1050.000MHz
Initialize DDR speed = 66.67MHzx/1×20 = 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
Shine:
试试跑一下NDK例程,看有没有同样的问题。
www.ti.com/…/sprac57.pdf
hl gu:
回复 Shine:
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 : 0x00000002MDIO LINK flag: 0x00000002MDIO alive reg : 0x0000000aMDIO LINK flag: 0x00000000MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000000MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000000MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000000MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000002MDIO LINK flag: 0x00000000MDIO alive reg : 0x00000000MDIO LINK flag: 0x00000002MDIO alive reg : 0x00000002