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.

[参考译文] DRA821U:在没有 PHY 的情况下连接 RGMII 和 RGMII

Guru**** 2455560 points
Other Parts Discussed in Thread: J7200XSOMXEVM, DRA821U

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1474805/dra821u-rgmii-to-rgmii-connection-without-a-phy

器件型号:DRA821U
Thread 中讨论的其他器件:J7200XSOMXEVM、、 DRA821

工具与软件:

大家好、团队成员:

我们 已根据 J7200XSOMXEVM 参考设计设计设计了定制电路板。

我们正在使用 PROCESSOR-SDK-LINUX-RT J7200(10.00.07.03)为定制电路板开发软件。

在定制电路板上、我们尝试在不通过 PHY 的情况下、使用 RGMII 固定链路连接来连接 DRA821U 和另一个制造商的 IC。

因此、我们通过参考以下论坛修改了器件树和驱动程序(am65-cpsw-nuss.c)。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1275896/am623-rgmii-to-rgmii-connection-without-a-phy

-设备树

&cpsw0_port3 {
	status = "okay";
	phy-mode = "rgmii";
	fixed-link {
		speed = <1000>;
		full-duplex;
    };
};

-驱动程序(board-support/ti-linux-kernel-6.6.32+git-ti-rt/drivers/net/ti/am65-cpsw-nuss.c)

+		if (of_phy_is_fixed_link(port_np)) {
+			ret = of_phy_register_fixed_link(port_np);
+			if (ret) {
+				if (ret != -EPROBE_DEFER) {
+					dev_err(dev, "%pOF error retrieving port phy: %d\n",
+						port_np, ret);
+					goto of_node_put;
+				}
+			}
+			port->slave.phy_node = of_node_get(port_np);
+		}else{
			port->slave.ifphy = devm_of_phy_get(dev, port_np, NULL);
			if (IS_ERR(port->slave.ifphy)) {
				ret = PTR_ERR(port->slave.ifphy);
				dev_err(dev, "%pOF error retrieving port phy: %d\n",
					port_np, ret);
				goto of_node_put;
			}

			/* Initialize the Serdes PHY for the port */
			ret = am65_cpsw_init_serdes_phy(dev, port_np, port);
			if (ret)
				goto of_node_put;

+		}

 

在 Linux 中、接口按配置运行(1000baseT/Full)。

~# ethtool eth2
Settings for eth2:
        Supported ports: [ MII ]
        Supported link modes:   1000baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  1000baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: No
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x000020f7 (8439)
                               drv probe link ifdown ifup rx_err tx_err hw
        Link detected: yes

但是、RGMII3_TXC 的频率为2.5MHz (10Mbps)。

此外、相关的寄存器值​​如下:

如何将器件树设置反映在寄存器中?

此致、

Mizutani

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

    您好!

    您能否检查所使用的 MAC 端口3的 PN_MAC_CTRL 寄存器。
    # devmem2 0x0C24330

    此致、
    Sudheer

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

    您好!

    读取 CPSW_PN_MAC_CONTROL_REG_k 寄存器的结果如下所示。

    # devmem2 0x0C024330
    /dev/mem opened.
    Memory mapped at address 0xffff9e126000.
    Read at address  0x0C024330 (0xffff9e126330): 0x000000A1

    此致、

    Mizutani

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

    您好!

    您还可以提供"k3conf 转储时钟19"的转储。

    此致、
    Tanmay

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

    您好!

    "k3conf"的结果如下所示。

    # k3conf dump clock 19
    |------------------------------------------------------------------------------|
    | VERSION INFO                                                                 |
    |------------------------------------------------------------------------------|
    | K3CONF | (version 0.3-nogit built Thu Jul 25 14:13:02 UTC 2024)              |
    | SoC    | J7200 SR2.0                                                         |
    | SYSFW  | ABI: 4.0 (firmware version 0x000a '10.0.8--v10.00.08 (Fiery Fox))') |
    |------------------------------------------------------------------------------|
    
    |------------------------------------------------------------------------------------------------------------------------------------|
    | Device ID | Clock ID | Clock Name                                                              | Status          | Clock Frequency |
    |------------------------------------------------------------------------------------------------------------------------------------|
    |    19     |     0    | DEV_CPSW0_MDIO_MDCLK_O                                                  | CLK_STATE_READY | 0               |
    |    19     |     1    | DEV_CPSW0_GMII3_MT_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |     2    | DEV_CPSW0_GMII2_MR_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |     3    | DEV_CPSW0_SERDES4_RXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |     4    | DEV_CPSW0_CPTS_GENF0                                                    | CLK_STATE_READY | 0               |
    |    19     |     5    | DEV_CPSW0_PRE_RGMII4_TCLK                                               | CLK_STATE_READY | 0               |
    |    19     |     6    | DEV_CPSW0_RGMII3_RXC_I                                                  | CLK_STATE_READY | 0               |
    |    19     |     7    | DEV_CPSW0_RGMII4_RXC_I                                                  | CLK_STATE_READY | 0               |
    |    19     |     8    | DEV_CPSW0_PRE_RGMII3_TCLK                                               | CLK_STATE_READY | 0               |
    |    19     |     9    | DEV_CPSW0_RGMII1_RXC_I                                                  | CLK_STATE_READY | 0               |
    |    19     |    10    | DEV_CPSW0_RGMII_MHZ_250_CLK                                             | CLK_STATE_READY | 250000000       |
    |    19     |    11    | DEV_CPSW0_GMII4_MT_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    13    | DEV_CPSW0_GMII3_MR_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    14    | DEV_CPSW0_SERDES4_RXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    15    | DEV_CPSW0_CPTS_RFT_CLK                                                  | CLK_STATE_READY | 200000000       |
    |    19     |    16    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_HSDIV4_16FFT_MAIN_3_HSDIVOUT1_CLK         | CLK_STATE_READY | 200000000       |
    |    19     |    17    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_POSTDIV2_16FFT_MAIN_0_HSDIVOUT6_CLK       | CLK_STATE_READY | 200000000       |
    |    19     |    18    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_BOARD_0_MCU_CPTS0_RFT_CLK_OUT             | CLK_STATE_READY | 0               |
    |    19     |    19    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_BOARD_0_CPTS0_RFT_CLK_OUT                 | CLK_STATE_READY | 0               |
    |    19     |    20    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_BOARD_0_MCU_EXT_REFCLK0_OUT               | CLK_STATE_READY | 0               |
    |    19     |    21    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_BOARD_0_EXT_REFCLK1_OUT                   | CLK_STATE_READY | 0               |
    |    19     |    22    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_WIZ16B8M4CT2_MAIN_1_IP2_LN0_TXMCLK        | CLK_STATE_READY | 0               |
    |    19     |    23    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_WIZ16B8M4CT2_MAIN_1_IP2_LN1_TXMCLK        | CLK_STATE_READY | 0               |
    |    19     |    24    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_WIZ16B8M4CT2_MAIN_1_IP2_LN2_TXMCLK        | CLK_STATE_READY | 0               |
    |    19     |    25    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_WIZ16B8M4CT2_MAIN_1_IP2_LN3_TXMCLK        | CLK_STATE_READY | 0               |
    |    19     |    30    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_HSDIV4_16FFT_MCU_2_HSDIVOUT1_CLK          | CLK_STATE_READY | 500000000       |
    |    19     |    31    | DEV_CPSW0_CPTS_RFT_CLK_PARENT_K3_PLL_CTRL_WRAP_MAIN_0_CHIP_DIV1_CLK_CLK | CLK_STATE_READY | 500000000       |
    |    19     |    32    | DEV_CPSW0_SERDES1_TXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    33    | DEV_CPSW0_CPPI_CLK_CLK                                                  | CLK_STATE_READY | 320000000       |
    |    19     |    34    | DEV_CPSW0_SERDES2_RXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    35    | DEV_CPSW0_SERDES1_RXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    36    | DEV_CPSW0_GMII_RFT_CLK                                                  | CLK_STATE_READY | 125000000       |
    |    19     |    37    | DEV_CPSW0_SERDES1_TXMCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    38    | DEV_CPSW0_SERDES1_REFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    39    | DEV_CPSW0_RMII_MHZ_50_CLK                                               | CLK_STATE_READY | 0               |
    |    19     |    40    | DEV_CPSW0_GMII4_MR_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    41    | DEV_CPSW0_RGMII_MHZ_50_CLK                                              | CLK_STATE_READY | 50000000        |
    |    19     |    42    | DEV_CPSW0_SERDES3_TXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    43    | DEV_CPSW0_SERDES3_RXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    45    | DEV_CPSW0_PRE_RGMII2_TCLK                                               | CLK_STATE_READY | 0               |
    |    19     |    46    | DEV_CPSW0_SERDES2_TXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    47    | DEV_CPSW0_SERDES1_RXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    48    | DEV_CPSW0_SERDES1_TXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    49    | DEV_CPSW0_RGMII2_RXC_I                                                  | CLK_STATE_READY | 0               |
    |    19     |    50    | DEV_CPSW0_SERDES2_TXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    51    | DEV_CPSW0_PRE_RGMII1_TCLK                                               | CLK_STATE_READY | 0               |
    |    19     |    52    | DEV_CPSW0_RGMII_MHZ_5_CLK                                               | CLK_STATE_READY | 5000000         |
    |    19     |    53    | DEV_CPSW0_GMII2_MT_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    54    | DEV_CPSW0_SERDES4_TXMCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    55    | DEV_CPSW0_SERDES3_TXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    56    | DEV_CPSW0_SERDES2_TXMCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    57    | DEV_CPSW0_GMII1_MR_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    58    | DEV_CPSW0_SERDES4_REFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    59    | DEV_CPSW0_SERDES3_TXMCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    60    | DEV_CPSW0_SERDES2_REFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    61    | DEV_CPSW0_SERDES3_REFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    62    | DEV_CPSW0_SERDES3_RXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    63    | DEV_CPSW0_GMII1_MT_CLK                                                  | CLK_STATE_READY | 25000000        |
    |    19     |    64    | DEV_CPSW0_SERDES2_RXFCLK                                                | CLK_STATE_READY | 0               |
    |    19     |    66    | DEV_CPSW0_SERDES4_TXCLK                                                 | CLK_STATE_READY | 0               |
    |    19     |    67    | DEV_CPSW0_SERDES4_TXFCLK                                                | CLK_STATE_READY | 0               |
    |------------------------------------------------------------------------------------------------------------------------------------|

    此致、

    Mizutani

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

    您好!

    您是否有关于此问题的任何更新?

    此致、

    Mizutani

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

    您好!

    您能否查看 MAC 端口3的 RGMII 状态寄存器(0x0C000038)。
    当设置千兆模式时、CPSW 将在 RGMII 模式下输出125MHz 时钟。

    此外、您的原理图是否由 TI H/W 工程师审核?

    此致、
    Sudheer

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

    您好!

    CPSW_SS_RGMII3_STATUS_REG (0x0C000038)的值为0x00000000。

    为什么即使设置了千兆位模式也未反映启用(CPSW_PN_MAC_CONTROL_REG_k = 0x000000A1)?

    此外、我们确认电路图的配置简单、没有问题。

    DRA821           连接 IC
    --------------------------------------------------------
    TXC                   ⇔         RXC
    TX_CTL             ⇔RX_CTL          
    TD[3:0]             ⇔         RXD[3:0]
    RXC                   ⇔         TXC
    RX_CTL             ⇔TX_CTL          
    RD[3:0]             ⇔         TXD[3:0]
    --------------------------------------------------------

    此致、

    Mizutani

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

    无法确定使用了哪个 IC 连接、但要确保 RXC 是输入(例如)。  在许多 PHY 器件上、RXC、RX_CTL、RXD[]是 输出。  可以将输出连接到输出。  只需验证处理器输出(TXC、TX_CTL、TD[])是否与 PHY 输入连接。  不要假设引脚名称。

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

    你(们)好

    这是由连接的 IC 的设置中的错误导致的。

    通过正确设置、我能够确认125MHz 是输出。