工具/软件:
您好、
以下是我的器件规格
PHY:DP83822
Linux SDK 版本:08.06.01.03
处理器 AM437x
有时、我的内核在上电期间无法检测 eth0、但 eth1 phy 并不会发生这种情况、我无法理解为什么会出现此问题(如果有人知道,请告诉我这对我们来说是一个很大的帮助)。
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.
工具/软件:
您好、
以下是我的器件规格
PHY:DP83822
Linux SDK 版本:08.06.01.03
处理器 AM437x
有时、我的内核在上电期间无法检测 eth0、但 eth1 phy 并不会发生这种情况、我无法理解为什么会出现此问题(如果有人知道,请告诉我这对我们来说是一个很大的帮助)。
您好、
检测失败可能是 PHY 未正确初始化。 这通常不是处理器问题、因为 PHY 必须具有正确的电压。 两个 CPSW 端口上是否有相同的 PHY? (我在这里假设以太网端口是 CPSW 端口,这是正确的吗?) TI 以太网团队需要进行初步审查、以确保电路板实现正确、我将要求他们查看此帖子。
另外、请查看该应用手册、其中有一个关于 PHY 分析的部分。
https://www.ti.com/lit/an/spradj8/spradj8.pdf
此致、
Schuyler
如需了解更多相关信息、您可以找到以下数据
root@AM437X-EVM:~# ifconfig
LO 链路 encap:本地环回
INET 地址:127.0.0.1 掩码:255.0.0.0
inet6 地址:::1/128 范围:主机
运行 MTU:65536 公制:1 的向上回送
Rx 数据包:2 错误:0 丢弃:0 溢出:0 帧:0
TX 数据包:2 错误:0 丢弃:0 溢出:0 载波:0
冲突:0 txqueueelen:1000
Rx 字节:140 (140.0 B) TX 字节:140 (140.0 B)
[ 29.88531] davinci_mdio 54432400.mdio:DaVinci MDIO 修订版 1.6、总线频率 1000000
[ 29.885735] MDIO_BUS 54432400.MDIO:地址 0 处的 MDIO 器件缺失。
[ 30.067961] davinci_mdio 54432400.mdio:phy[1]:器件 54432400.mdio:01、驱动程序 TI DP83822
Root@AM437X-EVM:~# ethtool eth0
NetLink 错误:没有设备与名称匹配(偏移量 24)
NetLink 错误:无此类设备
NetLink 错误:没有设备与名称匹配(偏移量 24)
NetLink 错误:无此类设备
NetLink 错误:没有设备与名称匹配(偏移量 24)
NetLink 错误:无此类设备
NetLink 错误:没有设备与名称匹配(偏移量 24)
NetLink 错误:无此类设备
NetLink 错误:没有设备与名称匹配(偏移量 24)
NetLink 错误:无此类设备
无可用数据
root@AM437X-EVM:~# dmesg | grep mdio
[ 4.150965] MDIO_BUS 固定 0:用于消费者复位的 GPIO 查找
[ 4.151001] MDIO_BUS 固定 0:使用查找表进行 GPIO 查找
[ 4.151019] MDIO_BUS FIXED-0:未找到 GPIO 消费类复位
[ 29.828709] MDIO_BUS 54432400.MDIO:查找 GPIO 以进行消费者复位
[ 29.828747] MDIO_BUS 54432400.MDIO:使用器件树查找 GPIO
[ 29.828799] of_get_named_gpiod_flags:不能解析节点“/OCP@44000000/target-module@5440000/pruss@0/MDIO@32400[0]“的“reset-gpiod_flags"属性“属性
[ 29.828903] of_get_named_gpiod_flags:不能解析节点“/OCP@44000000/target-module@5440000/pruss@0/MDIO@32400[0]“的“reset-GPIO"属性“属性
[ 29.828974] mdio_bus 54432400.mdio:使用查找表查找 GPIO
[29.828995] mdio_bus 54432400.mdio:未找到 GPIO 消费者复位
[ 29.88531] davinci_mdio 54432400.mdio:DaVinci MDIO 修订版 1.6、总线频率 1000000
[ 29.885735] MDIO_BUS 54432400.MDIO:地址 0 处的 MDIO 器件缺失。
[30.034715] MDIO_BUS 54432400.MDIO:01:查找 GPIO 以进行耗电元件复位
[ 30.034753] MDIO_BUS 54432400.MDIO:01:使用器件树进行 GPIO 查找
[ 30.034932] of_get_named_gpiod_flags:解析的节点“/OCP@44000000/target-module@5440000/pruss@0/MDIO@32400/Ethernet-phy@1[0]'的“reset-GPIO"属性“属性-属性 — status (0)
[ 30.067961] davinci_mdio 54432400.mdio:phy[1]:器件 54432400.mdio:01、驱动程序 TI DP83822
您好、
感谢您提供控制台日志。 捕获的消息与一个 PHY 一致、该 PHY 不应答 MDIO 探针、并且可能指示 PHY 处于错误状态。 若要继续进一步调试、当引导过程让 PHY 留在这种情况下时、需要对 PHY 进行硬件分析。 我将请支持此 PHY 的以太网团队查看此主题。 在准备过程中、以太网团队需要进行一些测量。 请参阅基本以太网应用手册的第 6 节。 以太网团队还提供了故障排除指南。
https://www.ti.com/lit/an/snla437/snla437.pdf
此问题发生的频率是很少还是相当频繁?
此致、
Schuyler
您好:
Manikya Sharma (m-sharma2@ti.com) 是主要的协调人。 但也有其他人。 你可以与他联系,他可以指导你,或者你可以分享我的邮件 ID 我可以分享你的整个邮件链有关这个。
此致、
Bhavya
您好、
为了继续调试、我们需要用示波器或逻辑分析仪捕获 MDIO 线路的数据、该数据会显示处理器何时未检测到 PHY。 由于这种情况发生在下电上电后、因此应可在示波器/逻辑分析仪上轻松捕获。 我建议使用电路板的上电复位信号来了解系统在下电上电后何时启动。 然后、使用控制台日志查找何时未检测到 PHY、然后检查示波器捕获以查看处理器发出消息且 PHY 未响应的 MDIO 事务。 了解引导后成功的 MDIO 事务是什么样子是一个很好的开始步骤。
为了简化调试、您必须仅隔离到此 PHY。 如果同一 MDIO 总线上有其他 PHY、则必须在电路板 DTS 文件中将它们禁用。 禁用电路板 DTS 中的其他 PHY 将实现所需的隔离。
此致、
Schuyler
您好、
我建议仅关注 eth0 接口能够与连接的 PHY 通信时的这种调试方法。 例如、无需进行其他应用测试。 我建议的测试是对电路板进行下电上电、然后查看是否识别了 PHY。 继续对电路板进行下电上电、直到您在控制台日志中看到未识别 PHY、然后查看逻辑分析仪布线以确认 PHY 实际上响应了处理器请求。
要禁用该接口、您需要禁用该接口并删除以太网 1 的 PHY 定义。 如果附加 DTS 源文件、我会指明您需要修改的文件部分。
此致、
Schuyler
尊敬的 Schuyler:
我得到了你的观点,并尝试了做以下文件中的更改.
pruss1-eth { compatible = "ti,am4376-prueth"; ti,prus = <&pru1_0>, <&pru1_1>; sram = <&ocmcram>; interrupt-parent = <&pruss1_intc>; mii-rt = <&pruss1_mii_rt>; iep = <&pruss1_iep>; status = "okay"; // added because PRU is not getting reg pinctrl-0 = <&pruss1_eth_default>; pinctrl-names = "default"; interrupts = <20 2 2>, <21 3 3>; interrupt-names = "rx_lre_hp", "rx_lre_lp"; pruss1_emac0: ethernet-mii0 { status = "okay"; // added because PRU is not getting reg phy-handle = <&pruss1_eth0_phy>; phy-mode = "mii"; interrupts = <20 2 2>; interrupt-names = "rx"; ti,no-half-duplex; /* Filled in by bootloader */ local-mac-address = [00 00 00 00 00 00]; }; pruss1_emac1: ethernet-mii1 { status = "disabled"; // added because PRU is not getting reg phy-handle = <&pruss1_eth1_phy>; phy-mode = "mii"; interrupts = <21 3 3>; interrupt-names = "rx"; ti,no-half-duplex; /* Filled in by bootloader */ local-mac-address = [00 00 00 00 00 00]; }; };
在上面的代码片段中、我更改了特定行 的状态=“disabled";“;对于 eth1。 我想如果我错了、您会期待我这样做。 根据控制台日志中的内容、如果我要执行 ifconfig、我将只获取 eth0、eth1 不会出现、您可以在下面的控制台日志中看到。
[ 34.172614] omap-des 53701000.des: OMAP DES hw accel rev: 0.33 [ 34.213299] omap-des 53701000.des: will run requests pump with realtime priority [ 34.559319] davinci_mdio 54432400.mdio: davinci mdio revision 1.6, bus freq 1000000 [ 34.897827] davinci_mdio 54432400.mdio: phy[0]: device 54432400.mdio:00, driver TI DP83822 [ 34.897868] davinci_mdio 54432400.mdio: phy[1]: device 54432400.mdio:01, driver TI DP83822 [ OK ] Started LSB: Raise network interfaces and configure them. [ 35.369564] PM: no-rtc available, rtc-only mode disabled. [ 35.369715] PM: Leaving EFUSE power domain active [ 35.532576] remoteproc remoteproc1: 54434000.pru is available [ 35.533834] remoteproc remoteproc2: 54438000.pru is available [ 35.535013] remoteproc remoteproc3: 54474000.pru is available [ 35.536166] remoteproc remoteproc4: 54478000.pru is available [ 36.195910] prueth pruss1-eth: Test PRU firmware bhavya [ 47.864585] prueth pruss1-eth: Test PRU firmware bhavya [ 47.865305] prueth pruss1-eth: Test bhavya [ 47.865330] prueth pruss1-eth: could not get ptp tx irq. Skipping PTP support [ 47.865348] prueth pruss1-eth: could not get hsr ptp tx irq. Skipping PTP support [ 47.901376] prueth pruss1-eth: dev_infoTI PRU removing link mode bhavya [ 47.901414] prueth pruss1-eth: dev_err TI PRU removing link mode bhavya err [ 47.901427] printk TI PRU removing link mode bhavya [ 47.903977] prueth pruss1-eth: TI PRU ethernet driver initialized: single EMAC mode *************************************************************** *************************************************************** NOTICE: This file system contains the following GPLv3 packages: bash-dev bash cifs-utils dosfstools gdb less libdw1 libelf1 libgdbm-compat4 libgdbm6 libreadline8 parted If you do not wish to distribute GPLv3 components please remove the above packages prior to distribution. This can be done using the opkg remove command. i.e.: opkg remove <package> Where <package> is the name printed in the list above NOTE: If the package is a dependency of another package you will be notified of the dependent packages. You should use the --force-removal-of-dependent-packages option to also remove the dependent packages as well *************************************************************** *************************************************************** [ OK ] Started Print notice about GPLv3 packages. [ OK ] Created slice system-systemd\x2dfsck.slice. [ OK ] Reached target Network (Pre). [ OK ] Listening on Load/Save RF …itch Status /dev/rfkill Watch. Starting File System Check on /dev/mmcblk0p1... [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. Starting Network Service... Starting telnetd.service... [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. [ OK ] Started telnetd.service. [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. [ OK ] Stopped Login Service. [FAILED] Failed to start Login Service. See 'systemctl status systemd-logind.service' for details. [ OK ] Started Network Service. Starting Wait for Network to be Configured... [ 56.201126] prueth_init_ethernet_mode bhavya............. [ 56.201126] [ 56.215694] remoteproc remoteproc1: powering up 54434000.pru [ 56.270915] remoteproc remoteproc1: Booting fw image ti-pruss/am437x-pru0-prueth-fw.elf, size 7320 [FAILED] Failed to start Network Name Resolution. See 'systemctl status systemd-resolved.service' for[ 56.270992] remoteproc remoteproc1: unsupported resource 5 details. [ OK ] Reached target Network. [ OK ] Reached target Host and Network Name Lookups. [ 56.271253] remoteproc remoteproc1: remote processor 54434000.pru is now up [ 56.300228] net eth0: started Starting Avahi mDNS/DNS-SD Stack... [ 56.300790] 8021q: adding VLAN 0 to HW filter on device eth0 [FAILED] Failed to start LLDP daemon. . . . . . . root@am437x-evm:~# ifconfig eth0 Link encap:Ethernet HWaddr 88:01:F9:35:D9:A2 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:2 errors:0 dropped:0 overruns:0 frame:0 TX packets:2 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:140 (140.0 B) TX bytes:140 (140.0 B)
天气我做了正确的或不只是确认,如果你期待其他任何事情,请告诉我。
此致、
Bhavya
您好、
您所做的是正确的。 需要执行几个额外步骤。 您还需要注释掉此节点 pruss1_eth1_phy。 您不希望第二个接口来探测 PHY。
注释掉 phy 节点以获得成功的 DTS 编译后、您需要在 pruss1_emac1:ethernet-mii1 节点中注释掉此行
phy-handle =<&pruss1_eth1_phy>;
目标是看不到引导日志期间显示第二个 PHY。 进行这些更改后、请附加引导日志。
此致、
Schuyler
尊敬的 Bhavya:
我同意我没有看到任何 eth1 接口、我也仅在 PHY 中看到此接口
[ 34.361182] davinci_mdio 54432400.mdio:phy[0]:器件 54432400.mdio:00、驱动程序 TI DP83822
我没有看到 phy[1]的任何内容、因此 MDIO 总线上只应存在 phy[0]流量。
此致、
Schuyler
尊敬的 Schuyler:
我尝试上传图像、但未上传、因此我将 zip 文件保存在附件中。 我想说的是、当检测到 phy 和未检测到 phy 时、信号检测没有差异、因此我在给定的附件中保留了单个图像。
此致、
Bhavya
尊敬的 Bhavya:
捕获的波形是什么? 目前、布线看起来并不像 MDIO 时钟和数据信号。 本文档第 2.4.6 节提供了与 PHY 预期交互的示例时序图。 请注意、本 PHY 分析应用手册可能不是使用的 PHY、但提供了一个有关如何查看 MDIO 总线的示例。
https://www.ti.com/lit/pdf/snla443
示波器是否连接到 MDIO 线路?
此致、
Schuyler
尊敬的 Schuyler:
我们的硬件团队也会检查此器件、但结果仍然是相同的。 您可以检入给定的附件。
此致、
Bhavya