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 ,一定要改这个参数!!!!!