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.

[参考译文] Linux/AM3354:RMII 问题

Guru**** 2605765 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651461/linux-am3354-rmii-issue

器件型号:AM3354

工具/软件:Linux

您好!

我已经使用外部50MHz 时钟将 Micrel ksz8081与 RMII 模式中的 AM335x 相连接。 能够启动链路,但通信失败,DHCP 无法启动。 如果我设置静态 IP 和 ping、我可以在 Wireshark 上观察 ARP 消息、在示波器上探测 Rx 线路、能够在 RXD0和 RXD1上观察到通信、MAC 无法将 RX 消息处理到上层。 请指导我如何解决此问题。

谢谢、此致、

Dileep

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以太网专家已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请发布 CPSTATS 的内容。

    这可以在 Linux 中通过'ethtool -S eth (n)'实现
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ethtool -S eth0
    NIC 统计信息:
    正常 Rx 帧:0
    广播 Rx 帧:0
    多播 Rx 帧:0
    暂停 Rx 帧:0
    RX CRC 错误:0
    RX 对齐/代码错误:0
    超大 RX 帧数:0
    RX Jabber:0
    欠大小(短) Rx 帧:0
    RX 片段:0
    RX 八位位组:0
    良好的 Tx 帧:12.
    广播 Tx 帧:4.
    多播 Tx 帧:8.
    暂停 Tx 帧:0
    延迟的 Tx 帧:0
    冲突:0
    单冲突 Tx 帧:0
    多个冲突 Tx 帧:0
    冲突过多:0
    晚期冲突:0
    TX 欠运转:0
    载波侦听错误:0
    TX 八位位组:2064
    RX + Tx 64字节帧:0
    RX + Tx 65-127八位位组帧:8.
    RX + Tx 128-255八位位组帧:0
    Rx + Tx 256-511八位位组帧:4.
    RX + Tx 512-1023八位位组帧:0
    Rx + Tx 1024个八位位组帧:0
    净八位位组:2064
    帧溢出的 RX 起始:0
    帧的 RX 中间溢出:0
    RX DMA 超限:0
    RX DMA 通道:head_enqueue:1.
    RX DMA 通道:tail_enqueue:127
    RX DMA 通道:PAD_ENqueue:0
    RX DMA 通道:错误排队:0
    RX DMA 通道:DESC_ALLOC_FAIL:0
    RX DMA 通道:PAD_ALLOC_FAIL:0
    RX DMA 通道:runt_receive_buf:0
    RX DMA 通道:runt_transmit:buf:0
    RX DMA 通道:empty_dequeue:0
    RX DMA 通道:BUSY_DEqueue:0
    RX DMA 通道:Good:Dequeue:0
    RX DMA 通道:要求:0
    RX DMA 通道:teardown_dequeue:0
    TX DMA 通道:head_enqueue:12.
    TX DMA 通道:tail_enqueue:0
    TX DMA 通道:PAD_ENqueue:0
    TX DMA 通道:排队错误:0
    TX DMA 通道:DESC_ALLOC_FAIL:0
    TX DMA 通道:PAD_ALLOC_FAIL:0
    TX DMA 通道:runt_receive_buf:0
    TX DMA 通道:runt_transmit;buf:0
    TX DMA 通道:empty_dequeue:12.
    TX DMA 通道:BUSY_DEqueue:0
    TX DMA 通道:Good Dequeue: 12.
    TX DMA 通道:要求:0
    TX DMA 通道:teardown_dequeue:0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。

    您使用的是哪个操作系统版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    操作系统版本:ti-sdk 中提供了 Linux-4.9.41

    附加的日志和设备树 file.e2e.ti.com/.../4621.am335x_5F00_boot_5F00_log.txte2e.ti.com/.../7345.am335x_2D00_evm.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CPSTATS 根本不报告任何 RX 数据包、但您说您可以在 RX 线路上看到活动。 请检查您的引脚多路复用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在回复中附加了日志和设备树文件。

    我正在粘贴的内容 w.r.t MII

    cpsw_default:cpsw_default{
    pinctrl-single、pins =<
    /*从属设备1 */
    0x10c (PIN_INPUT 下拉| MUX_MODE1)/*(H17) gmii1_crs.rmii1_crs_dv */
    0x110 (PIN_INPUT 下拉| MUX_MODE1)/*(J15) gmii1_rxer.rmii1_rxer *
    0x114 (PIN_OUTPUT PULLUP | MUX_MODE1)/*(J16) gmii1_txen.rmii1_txen *
    0x128 (PIN_OUTPUT PULLUP | MUX_MODE1)/*(K17) gmii1_txd0.rmii1_txd0 */
    0x124 (PIN_OUTPUT PULLUP | MUX_MODE1)/*(K16) gmii1_txd1.rmii1_txd1 */
    0x140 (PIN_INPUT 下拉| MUX_MODE1)/*(M16) gmii1_rxd0.rmii1_rxd0 */
    0x13c (PIN_INPUT_PULLUX | MUX_MODE1)/*(L15) gmii1_rxd1.rmii1_rxd1 */
    0x144 (PIN_INPUT | MUX_MODE0)/*(H18) rmii1_REFCLK.rmii1_REFCLK */
    >;
    };

    cpsw_sleep:cpsw_sleep{
    pinctrl-single、pins =<
    /*从器件1复位值*/
    0x10c (PIN_INPUT 下拉| MUX_MODE7)/*(H17) gmii1_crs.rmii1_crs_dv */
    0x110 (PIN_INPUT_PULLUX | MUX_MODE7)/*(J15) gmii1_rxer.rmii1_rxer *
    0x114 (PIN_INPUT 下拉| MUX_MODE7)/*(J16) gmii1_txen.rmii1_txen */
    0x128 (PIN_INPUT 下拉| MUX_MODE7)/*(K17) gmii1_txd0.rmii1_txd0 */
    0x124 (PIN_INPUT 下拉| MUX_MODE7)/*(K16) gmii1_txd1.rmii1_txd1 */
    0x140 (PIN_INPUT_PULLUX | MUX_MODE7)/*(M16) gmii1_rxd0.rmii1_rxd0 */
    0x13c (PIN_INPUT_PULLUX | MUX_MODE7)/*(L15) gmii1_rxd1.rmii1_rxd1 */
    0x144 (PIN_INPUT 下拉| MUX_MODE7)/*(H18) rmii1_REFCLK/rmii1_REFCLK *
    >;
    };

    DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
    pinctrl-single、pins =<
    /* MDIO */
    AM33XX_IOPAD (0x948、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO_DATA *
    AM33XX_IOPAD (0x94c、PIN_OUTPUT 上拉| MUX_MODE0)/* MDIO_clk.MDIO_clk *
    >;
    };

    DaVinci_MDIO_SLEEP:DaVinci_MDIO_SLEEP{
    pinctrl-single、pins =<
    /* MDIO 复位值*/
    AM33XX_IOPAD (0x948、PIN_INPUT 下拉| MUX_MODE7)
    AM33XX_IOPAD (0x94c、PIN_INPUT 下拉| MUX_MODE7)
    >;
    };

    Mac{(&M)
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&cpsw_default>;
    pinctrl-1 =<&cpsw_sleep>;
    状态="正常";
    };

    DaVinci_MDIO{
    pinctrl-names ="default"、"sleep";
    pinctrl-0 =<&Davinc_MDIO_default>;
    pinctrl-1 =<&Davinc_MDIO_SLEEP>;
    状态="正常";
    };

    cpsw_emac0{&cpsw_emac0}
    PHY_ID =<&Davinci_MDIO>、<2>;
    PHY-MODE ="RMII";
    };

    cpsw_emac1{&cpsw_emac1}
    PHY_ID =<&Davinci_MDIO>、<4>;
    PHY-MODE ="RMII";
    };

    phy_SEL{&
    RMII-时钟-外部;
    };

    此致、
    Dileep
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    假设您使用的是 ZCZ 封装、并且已将您的端口连接到 RMII1而不是 RMII2、我看不到这方面的问题。

    验证相关的 PADCONF 寄存器是否实际包含在引脚多路复用器中编程的值将很有用。
    此外、请转储 PHY 寄存器(uboot 'ii dump [PHY address]')和相关的 MACCONTROL 寄存器、并在此处发布这些值。