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.

C6678 SGMII口问题



各位好

     我现在用正在调试我们自己板子的网口,遇到几个问题,向大家请教。

     硬件设计:DSP有两个SGMII口,其中SGMII[1]口参考的EVM开发板,SGMII[0]口的硬件电路与SGMII[0]口一样;

                        也就是我们板子上有两个RJ45口,希望SGMII[0]口可以实现SGMII[1]口一样的功能。

     目前进展:通过SGMII[1]口与PC机相连,可以运行MCSDK中的HUA例程。

     下一步想实现:可以通过SGMII[0]口运行HUA例程。

     问题:1.关于SGMII[0]的初始化,是只要在GEL中更改,还是在程序中都要修改?

                 2.具体需要修改的地方在哪,有没有针对SGMII[0]口的例程呢?

  • 参考如下帖子的说明:

    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/58507/132834.aspx#132834

  • 感谢Andy的回答

        按照你给的帖子的内容,我用两种方法都测试了,但是SGMII0口还是没有通。之前通过SGMII能够跑通HUA和Client程序,能通过电脑打开192.168.2.100的界面。

    ------------------------------------------------------------------------------------------------------------

    方法1. 用GE程序中的GE_TEST_DSP0_TO_DSP1程序对SGMII1和SGMII0口分别测试。

                a.首先,PC机与板子的网口SGMII1口相连,配置如下:

                    GE_Test_Data_Path test_data_path= GE_TEST_DSP0_TO_DSP1;

                    Ethernet_Mode ethernet_mode = ETHERNET_AUTO_NEGOTIAT_MASTER;

                    GE_Port_Connection port_connect[GE_NUM_ETHERNET_PORT]=
                    {
                      GE_PORT_CABLE_CONNECT, //SGMII port 0 
                      GE_PORT_NO_CONNECT //SGMII port 1
                     };

                     然后下载运行程序,显示结果为:              

    [C66xx_0] Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
    Initialize PASS clock = 100.00MHzx21/2 = 1050.000MHz
    Initialize DDR speed = 66.67MHzx20/1 = 1333.333MTS
    Enable Exception handling...
    GE auto negotiation (master) two DSPs test (DSP0 -> DSP1)...
    Unconnected SGMII0 port can only be used for internal loopback test
    Unconnected SGMII0 port can only be used for internal loopback test
    PHY1 link up. TSCL= 0x353b417
    PHY1 link up. TSCL= 0x353d287
    Transferred 1472 bytes with 32001584 cycles, throughput= 0Mbps.
    STATSA.RxGoodFrames =32
    STATSA.RxOctets =2048
    STATSA.Frame64 =32
    STATSA.NetOctets =2048
    STATSB.RxCRCErrors =2
    STATSB.TxGoodFrames =32
    STATSB.TxOctets =2048
    STATSB.Frame64 =32
    STATSB.Frame512t1023 =2
    STATSB.NetOctets =3346
    SGMII0 Link Partner Advertised Ability 10Mbps Half Duplex
    SGMII port 0 is in the idle state.
    SGMII1 Link Partner Advertised Ability 100Mbps Full Duplex
    SGMII port 1 is in the idle state.
    MDIO ALIVE flag: 0x00000002
    MDIO LINK flag: 0x00000002
    GE test complete.

                             用wireshark抓包,并没有相关的包,感觉数据没有发送出来。

                   b.PC网口与SGMII0口相连,程序配置与上面相反。结果:

    [C66xx_0] Initialize DSP main clock = 100.00MHz/1x10 = 1000MHz
    Initialize PASS clock = 100.00MHzx21/2 = 1050.000MHz
    Initialize DDR speed = 66.67MHzx20/1 = 1333.333MTS
    Enable Exception handling...
    GE auto negotiation (master) two DSPs test (DSP0 -> DSP1)...

                     感觉更不对。

    方法2. 改platform.c程序,PLATFORM_EMAC_PORT_MODE_AMC替换为PLATFORM_EMAC_PORT_MODE_PHY

                 参考链接http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/150203/547893.aspx#547893

                 但是,结果还是不能跑通SGMII0口。

    -------------------------------------------------------------------------------------------------------------------------------------------

    板子的88E1111的电压和时钟都没有问题,SGMII两口与PC相连都可以自协商成100M;

    求帮忙分析分析,看问题出哪了。

  • 你好,我也在使用这个例程,改为dsp0到dsp1,可是有个wait_phy_link过不了,请问这是什么原因,phy芯片使用的也是88e1111.

    谢谢

  • qian cui

    你好,我现在做的都是用的dsp0核实现的以太网通信。

    对于用其他核的实现不是很清楚。

  • 我也是用0核和pc之间通信,配置和你上面说的修改的一样,在ge_init初始化完后有一个wait-phy-link的函数,一直等待了,你不是用过这个例程么,想问下什么问题导致的
  • 我不知道你用的是SGMII[1]口还是SGMII[0]口,如果是1口的话是不用修改程序的。

    如果是【0】口,请参考我的另外一个帖子的修改:

    http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/p/62432/140854.aspx#140854

    这个程序正常跑完之后,结果如下:

    [C66xx_0] QMSS successfully initialized
    CPPI successfully initialized
    PA successfully initialized
    HUA version 2.00.00.04
    Setting hostname to tidemo-
    MAC Address: 40-5F-C2-C1-A3-4D
    EVM in StaticIP mode at 192.168.2.100
    Set IP address of PC to 192.168.2.101
    PASS successfully initialized
    Ethernet subsystem successfully initialized
    Ethernet eventId : 48 and vectId (Interrupt) : 7
    Registration of the EMAC Successful, waiting for link up ..
    Network Added: If-1:192.168.2.100
    Service Status: THTTP : Enabled : : 000

  • 是1端口,跑完后打印是 service status:dhcp:enable: 000 service status:dhcp:enable:running:000 service status:dhcp:enable:fault:000 这是什么问题,无法收到数据
    • 如果是端口1的话,请参考下面链接:

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/239643.aspx

                可能需要下一个TFTPD32软件

    • 你可以把完整的结果显示复制过来看看
  • 之前下载的一个helloword历程是不需要这个DHCP的,偶尔连接上后可以接收PC发送的数据。但是经常给出错误unable to register the EMAC。后来说是下载一个新的历程,现在又给出这个问题?

    还有一个问题是,如果要通过bootloader启动,gel文件就不能使用,哪么将gel文件里的初始化接口放到main函数那里?bios_start前后还是其它位置?.cfg文件有memory map的说明,目前是映射到DDR3的,如果不用gel文件,这个东西映射到那个空间?如果改为L2SRAM编译过不了

  • 我也是新手,你提的问题已经超出我的能力范围。。。

  • 如果项目开发时间紧急,且商用,可以用我们提供C6678平台软件。

    我帮客户弄的时候,只需要在C6678 BSP头文件中,重定义一个网口宏开关,然后根据Sgmii连接PHY或BMxxxx交换芯的模式设置Sgmii Master或Slave模式(也通过宏定义),即可轻松搞定。 

    哪有这么复杂。

    William.dong@enea.com

  • 请问如果要BOOT话,GEL的内容你后来是怎么处理的