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:KSZ9021 PHY 问题

Guru**** 2577385 points
Other Parts Discussed in Thread: AM3354

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/629473/linux-am3354-ksz9021-phy-issue

器件型号:AM3354

工具/软件:Linux


主席先生,

我们拥有专为2个1Gbps 以太网端口通过 RGMII 接口设计的定制板。 我们使用基于 Yocto 的 Linux 3.12。

通过 rgmii2总线连接的 ksz9021是 id=1的 emac1、而通过 rgmii1总线连接的 ksz9021接口是 id 2的 emac0。

我们已在 DTS 文件中针对引脚多路复用和 RGMII 模式的 emac0和 emac1进行了修改。


am33xx_pinmux{(am33xx_pinmux)}
Ethernet0_pins:pinmux_ethernet0{
pinctrl-single、pins =<
0x114 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_TX_en.rgmii1_tctl *
0x118 (PIN_INPUT_PULLUX | MUX_MODE2)/* mi1_RX_dv.rgmii1_rctl *
0x11c (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd3.rgmii1_td3 */
0x120 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd2.rgmii1_td2 */
0x124 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd1.rgmii1_TD1 *
0x128 (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd0.rgmii1_td0 */
0x12c (PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_TX_clk.rgmii1_tclk *
0x130 (PIN_INPUT_PULLUX | MUX_MODE2)/* mii1_Rx_clk.rgmii1_RCLK *
0x134 (PIN_INPUT_PULLUX | MUX_MODE2)/* mii1_rxd3.rgmii1_rd3 *
0x138 (PIN_INPUT_PULLUX | MUX_MODE2)/* mii1_rxd2.rgmii1_RD2 *
0x13c (PIN_INPUT_PULLUX | MUX_MODE2)/* mii1_rxd1.rgmii1_RD1 *
0x140 (PIN_INPUT_PULLUX | MUX_Mode2)/* mii1_rxd0.rgmii1_rd0 *
>;
};

MDIO_Pins:pinmux_MDIO{
pinctrl-single、pins =<
/* MDIO */
0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO_DATA *
0x14c (PIN_OUTPUT 上拉| MUX_MODE0)/* MDIO_clk.MDIO_clk *
>;
};
};

cpsw_emac0{&cpsw_emac0}
PHY_ID =<&Davinci_MDIO>、<1>;
PHY-MODE ="RGMII";
DUAL_EMAC_res_vlan =<1>;

/*寄存器260 (104h)–RGMII 时钟和控制板偏差*/
RXC-SKET-ps =<1400>;
rxdv-skie-ps =<0>;
txc-skim-ps =<1400>;
txen-skim-ps =<0>;

/*寄存器261 (105h)–RGMII RX 数据垫偏斜*/
rxd3-skie-ps =<0>;
rxd2-skie-ps =<0>;
rxd1-skie-ps =<0>;
rxd0-skie-ps =<0>;

/*寄存器262 (106h)–RGMII TX 数据垫偏斜*/
txd3-skim-ps =<0>;
Txd2-skim-ps =<0>;
txd1-skim-ps =<0>;
txd0-skim-ps =<0>;

状态="正常";
};

DaVinci_MDIO{
pinctrl-names ="default";
pinctrl-0 =</MDIO_PINs>;
状态="正常";
};

Mac{(&M)
从器件=<1>;
pinctrl-names ="default";
pinctrl-0 =<和 ethernet0_pines>;
状态="正常";
};


/*以太网*/
am33xx_pinmux{(am33xx_pinmux)}
Ethernet1_pins:pinmux_ethernet1{
pinctrl-single、pins =<
0x40 (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_a0.rgmii2_tctl *
0x44 (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A1.rgmii2_rctl *
0x48 (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A2.rgmii2_td3 */
0x4c (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A3.rgmii2_td2 *
0x50 (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A4.rgmii2_TD1 *
0x54 (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A5.rgmii2_td0 */
0x58 (PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A6.rgmii2_tclk *
0x5c (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A7.rgmii2_RCLK *
0x60 (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A8.rgmii2_rd3 *
0x64 (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A9.rgmii2_RD2 *
0x68 (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A10.rgmii2_RD1 *
0x6c (PIN_INPUT_PULLUX | MUX_MODE2)/* GPMC_A11.rgmii2_rd0 *
>;
};
};

cpsw_emac1{&cpsw_emac1}
PHY_ID =<&Davinci_MDIO>、<2>;
PHY-MODE ="RGMII";
DUAL_EMAC_res_vlan =<2>;

/*寄存器260 (104h)–RGMII 时钟和控制板偏差*/
RXC-SKET-ps =<1400>;
rxdv-skie-ps =<0>;
txc-skim-ps =<1400>;
txen-skim-ps =<0>;

/*寄存器261 (105h)–RGMII RX 数据垫偏斜*/
rxd3-skie-ps =<0>;
rxd2-skie-ps =<0>;
rxd1-skie-ps =<0>;
rxd0-skie-ps =<0>;

/*寄存器262 (106h)–RGMII TX 数据垫偏斜*/
txd3-skim-ps =<0>;
Txd2-skim-ps =<0>;
txd1-skim-ps =<0>;
txd0-skim-ps =<0>;

状态="正常";
};

Mac{(&M)
从器件=<2>;
pinctrl-names ="default";
pinctrl-0 =<&ethernet0_pins &ethernet1_pines>;
DUAL_EMAC;
状态="正常";
};

在硬件配置中、对于 RGMII2 (emac1)、TX 线路中有22 Ω 串联端接电阻器、RX 线路中有33 Ω。 跟踪长度在 TX 和 Rx 组的时钟和数据线内匹配。 rgmii2的所有布线长度为40mm。 我们能够完美地 ping 10/100和1000 Mbps。

对于 RGMII1 (emac0)、我们使用了相同的配置、TX 线路中有22欧姆串联端接电阻器、RX 线路中有33欧姆。 跟踪长度在 TX 和 Rx 组的时钟和数据线内匹配。 rgmii2的所有布线长度为70mm。 我们无法 ping 通10/100和1000 Mbps。

对于 RGMII1、我们将所有终端电阻器更改为22欧姆。 10/100Mbps ping 已顺利启动、但仍有1000Mbps 未 ping 通。
此后、我们更改了所有电阻为0欧姆的串联端接电阻。 此后、1Gbps ping 开始、但每3到4个 ping 中断一次。 我们将 RXC-SKET-ps 和 txc-SKET-ps 的偏移值更改为3000和1Gbps Ping 启动良好。

但是、由于移除了终端电阻器、rgmii1上的第二个 ksz9021在大约78摄氏度的情况下通过1Gbps 通信变得过热。

您能不能指导我为什么 emac0上的 phy (rgmii1)在1Gbps 和10/100Mbps 上与 emac1上的 phy (rgmii2)不能使用相同的硬件和软件配置。

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

    尊敬的 Biser 先生:

    我还没有收到 TI 以太网专家团队的任何回复。

    此外、请告诉我 AM3354处理器的 RGMII 接口的驱动器输出阻抗值是多少。

    此致、

    Ajay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已上报请求。 很抱歉耽误你的时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在适用于 RGMII 的 AM335x 上、这是唯一支持的 PHY 模式、请将两个 PHY 的 PHY 模式更改为该选择。

    PHY-MODE ="RGMII-txid";

    我将与大家一起讨论 PHY 的其他延迟。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我想 Schuyler 已经指出了 MAC 上 RGMII 模式设置的主要问题。 通过在 SW 中使用错误的 PHY 模式、您可能会插入双延迟(MAC 延迟+ PHY 延迟)。

    AM335x 不支持 RGMII-ID (内部延迟)模式、因此在 PCB 上插入所需的延迟或让 PHY 处理该延迟非常重要。 在本例中、您似乎是让 PHY 在 TXC 和 RXC 上插入1.4ns 延迟。 此延迟的 RGMII 规范典型值为1.8ns、因此在更改 phy-mode 配置后 、我建议您还评估 PCB 上的总线时序(数据到 TXC/RXC 延迟)并根据需要调整 PHY 中的延迟值。


    如果在进行这些更改后仍然看到此问题、请在此处发布总线时序的示波器图。