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.

am3352 RGMII接口问题

Other Parts Discussed in Thread: AM3352

hi,大神们

我现在自己的板子使用的AM3352,两个端口都使用的RGMII接口模式,现在两个端口表现一样的情况,ping数据包不通,测试发现TXD没数据,RXD和RXCLK,txclk都有数据,这个是什么原因啊,忘解答啊,谢谢啦!

  • 把问题描述的更加清楚一点呗

    1、比如你用的什么操作系统

    2、比如你做了哪些修改

    等等

  • 同时请说明用的PHY型号?

  • hi,Gary Wu

         我这使用的PHY型号为RTL8211E. 我的应用中是想把2个端口都使用为RGMII模式,分别连接一个PHY。在u-BOOT环境下调试

    PHY的硬件地址设置为:1和4;

    修改的内容有:

    mux.c中的配置如下:

    static struct module_pin_mux rgmii1_pin_mux[] = {
     {OFFSET(mii1_txen), MODE(2)},   /* RGMII1_TCTL */
     {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE}, /* RGMII1_RCTL */
     {OFFSET(mii1_txd3), MODE(2)},   /* RGMII1_TD3 */
     {OFFSET(mii1_txd2), MODE(2)},   /* RGMII1_TD2 */
     {OFFSET(mii1_txd1), MODE(2)},   /* RGMII1_TD1 */
     {OFFSET(mii1_txd0), MODE(2)},   /* RGMII1_TD0 */
     {OFFSET(mii1_txclk), MODE(2)},   /* RGMII1_TCLK */
     {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE}, /* RGMII1_RCLK */
     {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE}, /* RGMII1_RD3 */
     {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE}, /* RGMII1_RD2 */
     {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE}, /* RGMII1_RD1 */
     {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE}, /* RGMII1_RD0 */
     {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */
     {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
     {-1},
    };

    static struct module_pin_mux rgmii2_pin_mux[] = {
     {OFFSET(gpmc_a0), MODE(2)},   /* RGMII2_TCTL */
     {OFFSET(gpmc_a1), MODE(2) | RXACTIVE},  /* RGMII2_RCTL */
     {OFFSET(gpmc_a2), MODE(2)},   /* RGMII2_TD3 */
     {OFFSET(gpmc_a3), MODE(2)},   /* RGMII2_TD2 */
     {OFFSET(gpmc_a4), MODE(2)},   /* RGMII2_TD1 */
     {OFFSET(gpmc_a5), MODE(2)},   /* RGMII2_TD0 */
     {OFFSET(gpmc_a6), MODE(2)},   /* RGMII2_TCLK */
     {OFFSET(gpmc_a7), MODE(2) | RXACTIVE},  /* RGMII2_RCLK */
     {OFFSET(gpmc_a8), MODE(2) | RXACTIVE},  /* RGMII2_RD3 */
     {OFFSET(gpmc_a9), MODE(2) | RXACTIVE},  /* RGMII2_RD2 */
     {OFFSET(gpmc_a10), MODE(2) | RXACTIVE},  /* RGMII2_RD1 */
     {OFFSET(gpmc_a11), MODE(2) | RXACTIVE},  /* RGMII2_RD0 */
     {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
     {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
     {-1},
    };

    board.c

    更改PHY 地址:

    static struct cpsw_slave_data cpsw_slaves[] = {
     {
      .slave_reg_ofs = 0x208,
      .sliver_reg_ofs = 0xd80,
      .phy_id  = 1,
     },
     {
      .slave_reg_ofs = 0x308,
      .sliver_reg_ofs = 0xdc0,
      .phy_id  = 4,

     },
    };

    设置gmii_sel:0x3A 

    writel(RGMII_MODE_ENABLE, &cdev->miisel);
      cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
        PHY_INTERFACE_MODE_RGMII;

    am335x_evm.h 中

    #define CONFIG_PHY_REALTEK   增加定义

    在net/phy.realtek

    中更改ID 为:0x1cc915 PHY的ID

    主要是做了这些修改,前期调试发现TX_CLK只有输出10Mhz,后面更改core_pll_config(OPP_100)能够正常出25Mhz;{初始化的时候为core_pll_config(OPP_50);}

    现在ping包的时候:

    U-Boot# setenv ipaddr 192.168.100.5
    U-Boot# ping 192.168.100.20
    link up on port 0, speed 1000, full duplex
    Using cpsw device
    ping failed; host 192.168.100.20 is not alive

    用示波器测试,TXD上面什么信号都没有,但RXD上数据正常

     

    各位大神,请帮忙指导啊,小弟以前没搞过驱动,现在都是在瞎弄啊,没头绪了,你们有没好的指导手册如果更改PHY这块啊,感觉TI 的这个CPU 怎么还有个CPSW,这个需要配置么?

    坐等到天明,3Q

     

  • hi,leo chen

       我用的linux 现在的版本是官网下载的6.0版本,具体改动如下面描述:TI 的EEPROM 搞死人啊,刚开始都起不来,费了好大劲让伟大的FAE帮忙弄好了,现在是驱动问题了。

     真心说一句,TI的软件移植性真差,官网上面各个版本的变化真是大啊,对我们这些不熟悉底层的小白,真是难搞啊。

  • hi ,gary wu

      我现在的情况是有TX,RX都有时钟输出,但是ping包不通啊。

     

    就是我PC协商多少M速率的时候,PHY的CLK能够改变,但是CPU输出始终是25Mhz,这个是什么情况,是驱动没配置对吗?

  • 这个PHY我有在SDK06的U-boot下面调通过,主要就是把PHY_ID和Pinux改了就可以了,如果收发都有clock,那么可能需要你检查下硬件。

  • hi,jian zhou

           我在boot下ping命令的时候还是不通,但是我在boot下可以通过tftp传输kernel等文件,并且当我tftp 0x82000000 uImage 的时候就能够在PC的CMD端ping到单板了,好奇怪。

        我加载了kernel后就能够在文件系统下正常的ping数据啦。好奇怪的现象啊,求大神解答!

  • 是不是你的PHY的协商过程比较慢啊

  • 你好jian zhou,我用的3352的cpu,跟交换芯片marvell 88e6097通信,cpu那一侧时钟不对,怎么修改,在内核下调试的,模式是rgmii,交换芯片那一侧的rclk时钟正确是125M,希望能尽快得到您的回复,期待!

  • jian zhou 你倒是回话啊。。。。。。。急死了

  • 明显u-boot配置有错,用mii命令查一下PHY数据对错。

  • 现在时钟正常了是125M,但是交换芯片的跟cpu的数据通道还是不通,交换芯片的上行mac还是ping不通,交换芯片网口能不经过cpu进行转发,请问还需要设置什么东西能让跟cpu连着的口能ping通?谢谢

  • ti的大牛们,帮我看一下啊