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.

[参考译文] DP83TD510E:使用 AM3359和 DP83TD510E 在 UBoot 中建立 RMII 接口

Guru**** 2524460 points
Other Parts Discussed in Thread: DP83TD510E

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1167053/dp83td510e-establishing-rmii-interface-in-uboot-using-am3359-and-dp83td510e

器件型号:DP83TD510E

大家好、

在我们的新定制板上、我们决定使用 DP83TD510E 芯片。

多次尝试建立通信后、我无法集成该芯片。 请注意、我们仅在第二个接口的 RMII 中使用此芯片(因此仅使用 RMII2。)

他就是我试过的:

  1. 保留 DTS 文件与 ICEV2相同、希望 RMII1会失败、但 RMII2会成功。
  2. 我将使用 NRST 对 PHY 芯片进行电源循环、持续30us
  3. 我尝试 使用命令"MII Read 0-1F 0"尝试读取所有可用的 MDIO 器件(无应答)

在探测 MDIO_CLK 时、我在使用 MII 读取函数时看不到时钟、但在引导 Linux 时可以看到1MHz 尝试的一些时钟。

下面是我与 PHY 相关的最新 DTS:

cpsw_pins: cpsw_pins {
	pinctrl-single,pins = <
		/* Slave 1, RMII mode */
		/*AM33XX_PADCONF(AM335X_PIN_MII1_CRS, PIN_INPUT_PULLUP, MUX_MODE1)	
		AM33XX_PADCONF(AM335X_PIN_RMII1_REF_CLK, PIN_INPUT_PULLUP, MUX_MODE0)
		AM33XX_PADCONF(AM335X_PIN_MII1_RXD0, PIN_INPUT_PULLUP, MUX_MODE1)
		AM33XX_PADCONF(AM335X_PIN_MII1_RXD1, PIN_INPUT_PULLUP, MUX_MODE1)
		AM33XX_PADCONF(AM335X_PIN_MII1_RX_ER, PIN_INPUT_PULLUP, MUX_MODE1)	
		AM33XX_PADCONF(AM335X_PIN_MII1_TXD0, PIN_OUTPUT_PULLDOWN, MUX_MODE1)	
		AM33XX_PADCONF(AM335X_PIN_MII1_TXD1, PIN_OUTPUT_PULLDOWN, MUX_MODE1)	
		AM33XX_PADCONF(AM335X_PIN_MII1_TX_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE1)*/	
		/* Slave 2, RMII mode */
		AM33XX_PADCONF(AM335X_PIN_GPMC_WAIT0, PIN_INPUT_PULLUP, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_MII1_COL, PIN_INPUT_PULLUP, MUX_MODE1)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_INPUT_PULLUP, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_A10, PIN_INPUT_PULLUP, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_WPN, PIN_INPUT_PULLUP, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_A5, PIN_OUTPUT_PULLDOWN, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_A4, PIN_OUTPUT_PULLDOWN, MUX_MODE3)	
		AM33XX_PADCONF(AM335X_PIN_GPMC_A0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)	
	>;
};

mdio_pins: mdio_pins {
	pinctrl-single,pins = <
		AM33XX_PADCONF(AM335X_PIN_MDIO, PIN_INPUT_PULLUP | SLEWCTRL_FAST, MUX_MODE0)
		AM33XX_PADCONF(AM335X_PIN_MDC, PIN_OUTPUT_PULLUP, MUX_MODE0)
		AM33XX_IOPAD(0x88c, PIN_INPUT | MUX_MODE7) /* (V12) gpmc_clk.pr1_mdio_mdclk */
		AM33XX_IOPAD(0x888, PIN_INPUT | MUX_MODE7) /* (T13) gpmc_csn3.pr1_mdio_data */
	>;
};
	
	
&mac {
	pinctrl-names = "default";
	pinctrl-0 = <&cpsw_pins>;
	active_slave = <1>;
	status = "okay";
	//dual_emac;
};

/*&cpsw_emac0 {
	phy-handle = <&ethphy0>;
	phy-mode = "rmii";
	//dual_emac_res_vlan = <1>;
};*/

&cpsw_emac1 {
	phy-id = <&davinci_mdio>, <1>;
	phy-mode = "rmii";
	//dual_emac_res_vlan = <2>;
};


&davinci_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mdio_pins>;
	reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
	reset-delay-us = <30>;   /* PHY datasheet states 20uS min */

	/*ethphy0: ethernet-phy@0 {
		reg = <0>;
	};*/

	/*ethphy1: ethernet-phy@3 {
		reg = <3>;
	};*/
};

如果我理解正确、CPSW_EMAC1会指定正在使用哪个接口(RMII1或 RMII2)。

许多问题都会想到:

  1. uBoot 的通用 phy 驱动程序是否支持 DP83TD510?
  2. 是否有 DP83TD510可在 TI 的最新 Linux 内核版本中编译?

我对 MDIO/MII 的理解非常有限、我的所有尝试都没有结果、这并不会有所帮助。

如果能提供有关如何调试该器件的一些指导、我将不胜感激。

谢谢!

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

    尊敬的 Vincent:

    1) 1)如果 PHY 地址匹配、则该 PHY 将被注册并由驱动程序支持为通用 PHY。

    日志表示第二个接口具有地址3 (第66-67行)、您是否已通过搭接将 PHY 地址配置为具有相同的地址?

    2) 2)请参阅以下驱动程序:  

    https://lore.kernel.org/lkml/cb44ea1f-4c7a-98c6-6206-526169d8f24b@ti.com/t/

    以下步骤应有助于将此驱动程序包含到 Linux 中:
    •向添加驱动程序 /drivers/net/phy
    •将驱动程序/PHY 名称添加到与驱动程序相同的目录中的 Kconfig 和 Makefile 中
    •#make menuconfig [设备驱动程序网络设备支持 PHY 设备支持]
    •在 Linux 器件树中添加/调整 PHY 地址
    •编译 Linux 内核(#make Linux)

    此外、下面是一个有关如何配置器件树的示例(在上面链接的补丁中):

    示例:
    +-|
    + mdio0{
    + #address-cells =<1>;
    + #size-cells =<0>;
    + ethphy0:以太网 phy@0{
    + reg =<0>;
    + TX-Fifo-depth =<5>;
    + Rx-interne-delay-ps =<1>;
    + TX-interne-delay-ps =<1>;
    + };
    +};
    -- 
    希望这对您有所帮助、 
    Evan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Evans、

    感谢您的回答。 我将详细介绍这一点、并告诉您是否有任何更新。

    uBoot 中是否需要驱动程序补丁以允许某些 TCP 连接、还是仅适用于 Linux 内核?

    谢谢。

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

    尊敬的 Vincent:

    该驱动程序补丁仅适用于 Linux 内核。

    此致、

    Evan