C6678千兆网调试及性能问题

            各位专家及大牛,我在调试C6678的千兆网时,使用了CCS自带的MCSDK下的hua daemo例程,在其中网络连接建立后加入了自己用SOCKET向计算机(xp系统)发送数据的函数,实际测试中发现采用IPPROTO_UDP协议时,发送速率能达到400Mbps左右,发送200万个包其中大概有4、5个丢失,请问用socket传输速率(最好是你们实际中实现的速率)最大能达到多少?我后来想改成IPPROTO_TCP(参照的是NDK目录下spru523文档中的例子),但用connect函数建立连接时始终失败,错误代码61,我查了一下是拒绝连接,请问这个是什么原因及怎么解决。

           另外,我看了一下PA_EmacExample那个例子,这个例子对网络的配置是不是比hua daemo更底层?在zhen kong发表的帖子“C6678千兆网调试”中 回复说“例子中注释掉 CSL_SGMII_enableLoopback (macPortNum); cpsw_mng.c 即可取消internal loopback模式,请参看附件中的代码在C6678 EVM上来实现千兆以太网的SGMII和SERDES的配置。”我照着做了PLL能锁定,但程序中有一段查询SGMII状态寄存器的代码,显示始终无连接(寄存器连接状态位一直为0,网线已经连接好),程序在这死循环不能继续运行,请问是否需要配置MDIO?如果需要怎么配置?例子中有一个Init_Mdio的函数,但没有实现。如果不需要配置,那怎么才能建立连接?

谢谢!

  • Water Sea,

       1. 目前的NDK暂未发布基于C6678L EVM的benchmark数据 (请关注http://www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=spraaq5a

     2. 请问你测试400Mbps测试中所用的包长是多少?另,发送2M个包有4,5 个包的丢失是在多大的发送速率下?你可以根据NDK 的相关统计以及C6678 以太网用户手册中(sprugv9a.pdf)交换端口的统计来判断丢包的原因。

     3.PA_EmacExample是不带TCP/IP协议栈的例子,包含了底层的SGMII/CPSW/NETCP等的初始化过程。该例子也可以改为大量数据测试,该层的测试结果表明C6678以太网能达到线速。当然NDK中的例子因为包含协议栈,所以效率会有所下降。

     4. 如果你是用的C6678L EVM做与PC之间的收发包测试,则PDK默认的例子需要一点修改。因为C6678L EVM的SGMII port 1连接到了板子上的PHY,另一个SGMII port连接到了总线上。如果你get SGMII port 0的状态,可能一直是link down的,请参考我附上的文件。

     5. C6678L EVM上的PHY比较简单,跑PDK例子的时候,MDIO不需要初始化,也不必通过MDIO来配置PHY。当然你可以尝试这样做,硬件条件是允许的。

    cpsw_mgmt.c
  • 回复 Marvin Liang:

    感谢Marvin Liang的回答!

    1.我测试包长是1514字节,现在发送速率极限可以达到900Mbps左右,但计算机收不下来。另外socket发送用UDP没问题,一改成TCP就connect函数失败,报拒绝连接,请教一下这是什么原因。

    2.dsp上一个核发送的时候我怎么看占用了多少资源?

    3。第四点我也发现了,没有连接的是port0.

    再次感谢!

  • 回复 water sea:

    1. 如果你想做网口吞吐量测试,只有一个EVM可以用内部环回模式,或者用两个EVM直接连接测试。TCP失败原因很多,请根据我们的例子来修改你的代码(NSP包中含有测试实例)

    software-dl.ti.com/.../index.html

    2. 你可以用TSC寄存器来测量发送函数耗用的cycle数 (refer to sprugh7)

  • 回复 Marvin Liang:

    “ 4. 如果你是用的C6678L EVM做与PC之间的收发包测试,则PDK默认的例子需要一点修改。因为C6678L EVM的SGMII port 1连接到了板子上的PHY,另一个SGMII port连接到了总线上。如果你get SGMII port 0的状态,可能一直是link down的,请参考我附上的文件。

        我又试了一下,发现SGMII port 1也一直没有连接,这个是插好网线就可以吗,还是需要其他配置

  • 回复 water sea:

    你是用的我附上的文件吗?这是我在C6678L EVM板上验证过的,如果还有问题请参考

    ...\pdk_C6678_1_0_0_17\packages\ti\platform\evmc6678l\platform_lib\src\evmc6678_phy.c

  • 回复 Marvin Liang:

    我是用你的文件替换了例子中原来的文件,感谢你的帮助,我再仔细看看。

  • Water sea,

    你好,我是DSP新手,现在在用EVM6670,同样我也想用C6670的千兆网口向PC发送数据及接收数据,可是我不知道怎么写发送数据的函数及接收数据的函数,怎么在PC上观察到接收的数据,怎么在DSP中读到PC发的数据,请您能帮助我入门,谢谢。邮箱:huasy123@126.com/qq:769976412

  • 回复 Marvin Liang:

    Marvin Liang,

    您好,我是DSP新手,现在在用EVM6670,同样我也想用C6670的千兆网口向PC发送数据及接收数据,可是我不知道怎么写发送数据的函数及接收数据的函数,怎么在PC上观察到接收的数据,怎么在DSP中读到PC发的数据,请您能帮助我入门,谢谢。

  • 回复 Marvin Liang:

    您好,我在6678上跑的hua结果运行对吗?

    [C66xx_0] **************************************************

    [C66xx_0] ******* Ethernet Single Core Example Start *******

    [C66xx_0] **************************************************

    [C66xx_0] QMSS successfully initialized

    [C66xx_0] CPPI successfully initialized

    [C66xx_0] PASS successfully initialized

    [C66xx_0] Ethernet subsystem successfully initialized

    [C66xx_0] Tx setup successfully done

    [C66xx_0] Rx setup successfully done

    [C66xx_0] PASS setup successfully done

    [C66xx_0] Following is the ALE table before transmits.

    [C66xx_0] Port = 0, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 1, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 2, MAC address = 20:21:22:23:24:25, unicast_type = 0

    [C66xx_0] Packet Transmission Start ...

    [C66xx_0] Following is the ALE table after transmits.

    [C66xx_0] Port = 0, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 1, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 2, MAC address = 20:21:22:23:24:25, unicast_type = 0

    [C66xx_0] Packet Transmission Done.

    [C66xx_0] Wait for all packets to be Received ...

    [C66xx_0] Packets Sent = 10

    [C66xx_0] Packets Received = 10

    [C66xx_0] Example Done!

    [C66xx_0] **************************************************

    [C66xx_0] ******** Ethernet Single Core Example End ********

    [C66xx_0] **************************************************

    [C66xx_0] **************************************************

    [C66xx_0] ******* Ethernet Single Core Example Start *******

    [C66xx_0] **************************************************

    [C66xx_0] QMSS successfully initialized

    [C66xx_0] CPPI successfully initialized

    [C66xx_0] PASS successfully initialized

    [C66xx_0] Ethernet subsystem successfully initialized

    [C66xx_0] Tx setup successfully done

    [C66xx_0] Rx setup successfully done

    [C66xx_0] PASS setup successfully done

    [C66xx_0] Following is the ALE table before transmits.

    [C66xx_0] Port = 0, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 1, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 2, MAC address = 20:21:22:23:24:25, unicast_type = 0

    [C66xx_0] Packet Transmission Start ...

    [C66xx_0] Following is the ALE table after transmits.

    [C66xx_0] Port = 0, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 1, MAC address = 10:11:12:13:14:15, unicast_type = 0

    [C66xx_0] Port = 2, MAC address = 20:21:22:23:24:25, unicast_type = 0

    [C66xx_0] Packet Transmission Done.

    [C66xx_0] Wait for all packets to be Received ...

    [C66xx_0] Packets Sent = 10

    [C66xx_0] Packets Received = 10

    [C66xx_0] Example Done!

    [C66xx_0] **************************************************

    [C66xx_0] ******** Ethernet Single Core Example End ********

    [C66xx_0] **************************************************

    [C66xx_0] QMSS successfully initialized

    [C66xx_0] CPPI successfully initialized

    [C66xx_0] PA successfully initialized

    [C66xx_0] HUA version 2.00.00.03

    [C66xx_0] Setting hostname to tidemo-

    [C66xx_0] MAC Address: 90-D7-EB-2C-68-A8

    [C66xx_0] EVM in StaticIP mode at 192.168.2.100

    [C66xx_0] Set IP address of PC to 192.168.2.101

    [C66xx_0] PASS successfully initialized

    [C66xx_0] Ethernet subsystem successfully initialized

    [C66xx_0] Ethernet eventId : 48 and vectId (Interrupt) : 7

    [C66xx_0] Registration of the EMAC Successful, waiting for link up ..

    [C66xx_0] Network Added: If-1:192.168.2.100

    [C66xx_0] Service Status: THTTP    : Enabled  :          : 000

    为什么不能ping通 也不能link网页?会不会是phy硬件接口有问题呢

  • 回复 keke colin:

    抱歉  最后那个是hua的结果  上面的是PA emac的结果  请看看