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.

[参考译文] 在 u-boot 中显示 DP83867IR:"No Ethernet Found"

Guru**** 2391065 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1447195/dp83867ir-no-ethernet-found-is-displayed-in-u-boot

器件型号:DP83867IR
主题中讨论的其他器件:MSP430F5529

工具与软件:

您好!

我正在使用 Xilinx"Kira KV260 SOM "开发产品。
此 PCB 中使用"DP83867IRRGZR"。
当前、u-boot 日志(连接了 u-boot_log.txt)显示"No Ethernet Found"。 且无法识别 DP83867。
下一页上发布了类似的问题、是否有解决方案?
e2e.ti.com/.../dp83867ir-device-tree-configuration-for-dp83867irrgz-phy-under-gem

以太网部分的器件树如下所示。
DP83867数据表"7.5.4 PHY Address Configuration"中定义的 PHY 地址是否与器件树中列出的 PHY 地址匹配?

此致、

e2e.ti.com/.../u_2D00_boot_5F00_log.txt

设备树(device tree
&gem3{
pinctrl-names ="默认值";
pinctrl-0 =<&pinctrl_gem3_default>;
#address-cells =<0x1>;
#size-cells =<0x0>;
local-mac-address =[00 0A 35 00 1e 53];
PHY 模式="RGMII-id";
PHY-Handle =<&phy0>;
interrupt-parent =<0x4>;
xlnx、HAS-MDIO =<0x1>;
xlnx、eth-mode =<0x1>;
MDIO{
phy0:phy@0 {<---"phy@0"中的"0"是 DP83867的 PHY 地址吗?
REG =<0x0>;
Compatible ="ethernet-phy-id2000.a231"、"ethernet-phy-IEEE802.3-c22";
interrupt =<0x0 0x17 0x4>;
interrupt-parent =<0x4>;
TI、Rx-INTERNAL 延迟=<0x8>;
TI、TX-internal-delay =<0xA>;
TI、FIFO 深度=<0x1>;
ti、rxctrl-strap 配置工作 a;
};
};
};


&pinctrl0{/*规范要求*/
状态="正常";

pinctrl_gem3_default:gem3-default{
配置{
组="Ethernet3_0_grp";
SLEW-RATE =<0x1>;
power-source =<0x1>;
};

CONF-Rx{
引脚="MIO70"、"MIO72"、"MIO74";
偏置高阻抗;
低功耗禁用;
};

CONF-bootstrap{
Pins ="MIO71"、"MIO73"、"MIO75";
偏置禁用;
低功耗禁用;
};

CONF-TX{
引脚="MIO64"、"MIO65"、"MIO66"、
"MIO67"、"MIO68"、"MIO69";
偏置禁用;
低功耗使能;
};

CONF-MDIO{
组="mdio3_0_grp";
SLEW-RATE =<0x1>;
power-source =<0x1>;
偏置禁用;
};

MUX-MDIO{
函数="mdio3";
组="mdio3_0_grp";
};

多路复用器{
函数="Ethernet3";
组="Ethernet3_0_grp";
};
};
};

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

    您好!

    我将与团队讨论、并向我的团队成员讨论该 E2E。

    ——

    此致、

    Hillman LIN

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

    尊敬的 Tokugawa:

    Unknown 说:
    mdio{
    phy0:phy@0 {<---"phy@0"中的"0"是 DP83867的 PHY 地址吗?
    REG =<0x0>;
    Compatible ="ethernet-phy-id2000.a231"、"ethernet-phy-IEEE802.3-c22";
    中断=<0x0 0x17 0x4>;[/QUOT]

    "reg =<0x0>" 字段是指 DTS 配置的 PHY 地址。

    请确认:

    -是否为地址0x0设置了 PHY 地址自举电阻器? 请共享原理图(可以通过电子邮件发送至 e-mayhew@ti.com 以进行私人共享)

    - SoC 是否在 PHY 上电之前和期间驱动 MAC 线路? 在这种情况下、这可能会在启动时更改绑定的 PHY 地址、从预期值开始。

    谢谢!

    Evan

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

    Mayhew-San

    感谢您的答复。

    >是否为地址0x0设置了 PHY 地址自举电阻器? 请共享原理图(可以通过电子邮件发送至 e-mayhew@ti.com 以进行私人共享)
    我已将以太网 PHY 器件的原理图发送到您的电子邮件地址。
    目前、未实现用于设置 PHY 地址的电阻器。 在未实现电阻器的情况下、我认为根据数据表中的以下说明将其设置为"0x00"。
    "根据 PHY_ADD[4:0]的默认 strap 配置、DP83867 PHY 地址将初始化为0x00、而无需任何外部 strap 配置。"

    > SoC 是否在 PHY 上电之前和期间驱动 MAC 线路? 在这种情况下、这可能会在启动时更改绑定的 PHY 地址、从预期值开始。
    元件太小、无法探测 MAC 线路信号、但电源已接通并取消复位、然后 MAC 线路才能运行。

    此致、

    龙郎

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

    您好、Tatsuro-San、

    感谢您分享详细信息。

    我将审阅原理图并在12月12日前分享反馈。

    此致、

    Evan

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

    您好、Tatsuro-San、

    对于延迟、我们深表歉意。

    我没有发现原理图中存在任何会导致此问题的问题。

    请确认:

    • Linux 引导级是否能够识别 PHY?
    • 哪个 U-boot 驱动程序用于 DP83867?
    • 在 PHY 电源期间探测 RBIAS 电阻器上的电压时、您是否看到大约1V?
    • 如果 PHY 寄存器可以访问、请共享一个寄存器转储。 这将帮助我确认捆绑的 PHY 配置(地址、MAC 接口...)

    谢谢!

    Evan

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

    尊敬的 Evan-San:

    很抱歉我迟到的回复。

    > Linux 引导阶段是否能够识别 PHY?
    我不知道、因为我还没有启动 Linux。 但是、已通过 ping 命令通过裸机测试以太网驱动程序对其进行了检查。

    > DP83867使用的是哪个 U-boot 驱动程序?
    根据下一页,我认为它是"Zynq_gem.c"。
    xilinx-wiki.atlassian.net/.../U-boot
    github.com/.../zynq_gem.c

    >在 PHY 电源期间探测 RBIAS 电阻器上的电压时、您是否看到大约1V?
    电阻太小、无法使用示波器进行探测和观察、但我已根据数据表连接了11kΩ 电阻器。

    如果 PHY 寄存器可以访问、请共享一个寄存器转储。 这将帮助我确认捆绑的 PHY 配置(地址、MAC 接口...)
    请参阅文件"u-boot_log.txt"。

    e2e.ti.com/.../6406.u_2D00_boot_5F00_log.txt

    此致、

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

    尊敬的 Tokugawa-San:

    0 - TI DP83867 <--> ethernet@ff0e0000
    ZynqMP> mdio read ethernet@ff0e0000 0
    Reading from bus eth0
    PHY at address 0:
    0 - 0xffff

    从引导日志中可以看出、不清楚 MDIO 访问失败是由于驱动程序问题、不正确的 PHY 地址配置(strap)还是 PHY 未正确供电所致。

    以下是一些测试案例来确认这一点、请告诉我这些案例是否可行:

    • 使用外部控制器(如 MSP430F5529 Launchpad)、将 LP 的 MDC/MDIO 连接到 DP83867并访问 PHY 寄存器
    • 在 ping 过程中、探测 MAC 和 MDI 信号线。 如果在 ping 过程中 MAC 信号线处于活动状态、则 PHY 处于活动状态。
    • 加电后探测 PHY XI 输入时钟和电源轨。

    谢谢!

    Evan

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

    尊敬的 Evan-San:

    感谢您的检查。
    我目前正在使用如下所示的器件树、如果有任何问题、请让我确认一下。

    &gem3 {
    	status = "okay";
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-id";
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinctrl_gem3_default>;
    	mdio: mdio {
    		#address-cells = <1>;
    		#size-cells = <0>;
    		phy0: ethernet-phy@0 {
    			#phy-cells = <1>;
    			compatible = "ethernet-phy-id2000.a231";
    			reg = <0x0>;
    			ti,rx-internal-delay = <0x8>;
    			ti,tx-internal-delay = <0xa>;
    			ti,fifo-depth = <0x1>;
    			ti,dp83867-rxctrl-strap-quirk;
    		};
    	};
    };
    
    &pinctrl0 {
    	status = "okay";	
    	pinctrl_gem3_default: gem3-default {
    		mux {
    			function = "ethernet3";
    			groups = "ethernet3_0_grp";
    		};
    
    		conf {
    			groups = "ethernet3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    		};
    
    		conf-rx {
    			pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
    									"MIO75";
    			bias-high-impedance;
    			low-power-disable;
    		};
    
    		conf-tx {
    			pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
    									"MIO69";
    			bias-disable;
    			low-power-enable;
    		};
    
    		mux-mdio {
    			function = "mdio3";
    			groups = "mdio3_0_grp";
    		};
    
    		conf-mdio {
    			groups = "mdio3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    			bias-disable;
    		};
    	};
    };
    
    

    此致、

    龙郎

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

    尊敬的 Tokugawa-San:

    我在器件树中看不到任何问题。

    请分享之前回复中提到的任何测试案例的结果。

    谢谢!

    Evan

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

    尊敬的 Evan-San:

    感谢您的答复。

    >使用外部控制器(如 MSP430F5529 Launchpad)、将来自 LP 的 MDC/MDIO 连接到 DP83867并访问 PHY 寄存器
    >在 ping 过程中、探测 MAC 和 MDI 信号线。 如果在 ping 过程中 MAC 信号线处于活动状态、则 PHY 处于活动状态。
    >在供电后探测 PHY XI 输入时钟和电源轨。
    在上述三个测试用例中、PHY 连接到 FPGA、电阻芯片较小、因此无法使用示波器探测信号。

    >从引导日志中、不清楚 MDIO 访问失败是由于驱动程序问题、不正确的 PHY 地址设置还是 PHY 未正确供电。
    电源似乎正确地提供给 PHY、如下所示。 由于 PHY 上没有连接配置(strap)、因此我认为 PHY 地址为"0"。

    此致、
    龙郎

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

    您好、Tatsuro-San、

    难以确认 PHY 是处于活动状态、还是使用正确的 PHY 地址进行配置而无法访问外设引脚。

    我们可以执行的一项测试是从 PHY 地址0x0扫描到0x31、并尝试在每个地址进行寄存器访问。

    是否也可以在 Linux 中进行测试? 由于我们没有太多的硬件外设检查选项、因此在 Linux 中检查驱动程序初始化/寄存器访问有助于隔离软件或硬件是否是根本原因。

    谢谢!

    Evan

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

    尊敬的 Evan-San:

    感谢您的答复。

    >我们可以做的一个测试是从 PHY 地址0x0扫描到0x31、并尝试在每个地址进行寄存器访问。


    按顺序更改 PHY 地址后、它被识别为"5"而不是"0"。
    我不知道为什么 PHY 地址为"5"、但我松了一口气

    U-Boot 2024.01 (May 14 2024 - 03:31:48 +0000)
    
    CPU:   ZynqMP
    Silicon: v3
    Chip:  xck26
    Detected name: zynqmp-sm-k26-xcl2gi-rev1
    Model: ZynqMP SM-K26 Rev1/B/A
    Board: Xilinx ZynqMP
    DRAM:  2 GiB (effective 4 GiB)
    PMUFW:  v1.1
    Xilinx I2C FRU format at nvmem0:
     Manufacturer Name: XILINX
     Product Name: SM-K26-XCL2GI
     Serial No: XFL1EB532TAH
     Part Number: 5057-03
     File ID: 0x0
     Revision Number: 1
    EL Level:       EL2
    Secure Boot:    not authenticated, not encrypted
    Core:  60 devices, 33 uclasses, devicetree: board
    MMC:   mmc@ff160000: 0
    Loading Environment from nowhere... OK
    In:    serial
    Out:   serial,vidconsole
    Err:   serial,vidconsole
    Bootmode: JTAG_MODE
    Reset reason:   DEBUG
    Net:
    ZYNQ GEM: ff0e0000, mdio bus ff0e0000, phyaddr 5, interface rgmii-id
    
    Warning: ethernet@ff0e0000 MAC addresses don't match:
    Address in DT is                00:04:99:40:03:ff
    Address in environment is       00:0a:35:0f:da:a7
    eth0: ethernet@ff0e0000
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 1
    Error writing the chip: -121
    Setting bus to 2
    Failure changing bus number (-19)
    Setting bus to 1
    Error writing the chip: -121
    Enable permission for node ID 33
    Enable permission for node ID 47
    tpm_tis_spi_probe: missing reset GPIO
    Hit any key to stop autoboot:  0
    switch to partitions #0, OK
    mmc0(part 0) is current device
    ** No partition table - mmc 0 **
    Couldn't find partition mmc 0:1
    MMC Device 1 not found
    no mmc device at slot 1
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    USB is stopped. Please issue 'usb start' first.
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    missing environment variable: pxeuuid
    Retrieving file: pxelinux.cfg/01-00-0a-35-0f-da-a7
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/000000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/000
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/00
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/0
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp-zynqmp
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm-zynqmp
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default-arm
    *** ERROR: `ipaddr' not set
    Retrieving file: pxelinux.cfg/default
    *** ERROR: `ipaddr' not set
    Config file not found
    starting USB...
    No working controllers found
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    BOOTP broadcast 1
    BOOTP broadcast 2
    BOOTP broadcast 3
    BOOTP broadcast 4
    BOOTP broadcast 5
    BOOTP broadcast 6
    BOOTP broadcast 7
    BOOTP broadcast 8
    BOOTP broadcast 9
    BOOTP broadcast 10
    BOOTP broadcast 11
    BOOTP broadcast 12
    BOOTP broadcast 13
    BOOTP broadcast 14
    BOOTP broadcast 15
    BOOTP broadcast 16
    BOOTP broadcast 17
    
    Retry time exceeded; starting again
    JTAG: Trying to boot script at 20000000
    ## Executing script at 20000000
    Wrong image format for "source" command
    JTAG: SCRIPT FAILED: continuing...
    Unknown command '
    ' - try 'help'
    ZynqMP> mii info
    PHY 0x05: OUI = 0x80028, Model = 0x23, Rev = 0x01, 1000baseT, FDX
    ZynqMP> setenv ipaddr 192.168.11.75
    ZynqMP> setenv netmask 255.255.255.0
    ZynqMP> ping 192.168.11.74
    Using ethernet@ff0e0000 device
    host 192.168.11.74 is alive
    ZynqMP> mdio read 0 0
    0 is not a known ethernet
    Reading from bus eth0
    PHY at address 0:
    0 - 0xffff
    ZynqMP> mdio read 5 0
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    0 - 0x1140
    ZynqMP> mdio read 5 1
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    1 - 0x796d
    ZynqMP> mdio read 5 2
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    2 - 0x2000
    ZynqMP> mdio read 5 3
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    3 - 0xa231
    ZynqMP> mdio read 5 4
    5 is not a known ethernet
    Reading from bus eth0
    PHY at address 5:
    4 - 0x1e1
    ZynqMP>

    /include/ "system-conf.dtsi"
    / {
    	chosen {
                    bootargs = "earlycon console=ttyPS1,115200 clk_ignore_unused ext4=/dev/mmcblk0p2:/rootfs init_fatal_sh=1 cma=900M ";
                    stdout-path = "serial1:115200n8";
            };
    };
    
    &cpu_opp_table {
    		compatible = "operating-points-v2";
    		opp-shared;
    		opp04 {
    			opp-hz = /bits/ 64 <1299999988>;
    			opp-microvolt = <1000000>;
    			clock-latency-ns = <500000>;
    			};
    };
    
    &gem3 {
    	status = "okay";
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-id";
    	pinctrl-names = "default";
    	pinctrl-0 = <&pinctrl_gem3_default>;
    	mdio: mdio {
    		#address-cells = <1>;
    		#size-cells = <0>;
    		phy0: ethernet-phy@5 {								# <----- Change PHY address to "5"
    			#phy-cells = <1>;
    			compatible = "ethernet-phy-id2000.a231";
    			reg = <0x5>;									# <----- Change PHY address to "5"
    			ti,rx-internal-delay = <0x8>;
    			ti,tx-internal-delay = <0xa>;
    			ti,fifo-depth = <0x1>;
    			ti,dp83867-rxctrl-strap-quirk;
    		};
    	};
    };
    
    &pinctrl0 {
    	status = "okay";	
    	pinctrl_gem3_default: gem3-default {
    		mux {
    			function = "ethernet3";
    			groups = "ethernet3_0_grp";
    		};
    
    		conf {
    			groups = "ethernet3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    		};
    
    		conf-rx {
    			pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
    									"MIO75";
    			bias-high-impedance;
    			low-power-disable;
    		};
    
    		conf-tx {
    			pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
    									"MIO69";
    			bias-disable;
    			low-power-enable;
    		};
    
    		mux-mdio {
    			function = "mdio3";
    			groups = "mdio3_0_grp";
    		};
    
    		conf-mdio {
    			groups = "mdio3_0_grp";
    			slew-rate = <SLEW_RATE_SLOW>;
    			power-source = <IO_STANDARD_LVCMOS18>;
    			bias-disable;
    		};
    	};
    };

    我很乐意向您咨询。

    非常感谢。
    龙郎

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

    您好、Tatsuro-San、

    很高兴听到 PHY 活跃且被认可!

    PHY 地址异常的可能原因有两种:

    1) 1) PHY 地址自举引脚上的自举连接。 我在原理图中没有看到任何搭接、但我没有需要确认的完整原理图文件。
    2) 2) MAC 在 PHY 上电期间驱动 PHY 自举引脚。

    谢谢!

    Evan