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/DP83867CS:libphy 选择通用驱动程序、phy 中没有数据包进出

Guru**** 2540720 points
Other Parts Discussed in Thread: TIDA-00204, DP83867CS

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/816795/linux-dp83867cs-libphy-chooses-generic-driver-no-packets-in-out-of-phy

器件型号:DP83867CS
主题中讨论的其他器件:TIDA-00204

工具/软件:Linux

硬件信息

  • PCB:使用 Octavo Systems 参考设计的 OSD3358-SM 定制设计
  • 以太网 PHY:以 TIDA-00204为基准的3电源模式(3V3、2V5、1V0)下的 DP83867CS。 无自举电阻器、一切都保持开路。
  • Linux 内核:4.14.108-ti-r108 (手动编译)、4.14.71-ti-r80 (BeagleBone stock)和4.19.50-ti-R20 (RCNEE Repos)
  • 库存设备树 blob (目前、自定义 blob 的作用不大。)

问题

Linux 和 U-Boot 都可以通过 MDIO 识别 PHY 并与之交互--尽管 Linux 无法正确识别作为内核模块安装的驱动程序。 该器件可以建立1 Gig、100 base 和10 base 的链路、我通过 MII-tool 强制实现了这种连接。 与链路建立相对应的插孔上的数据和链路指示灯也会亮起。 读取寄存器后、根据数据表、一切看起来都是标称值和准确值。 但是、似乎没有流量进出设备。 我已经尝试过各种器件树设置、但我担心的是、器件似乎没有收到单个数据包。 另一方面、我查看了 Wireshark、也没有看到任何数据包。 在 u-boot 或 Linux 中、DHCP 和静态设置都不起作用。 我还需要用示波器探测以太网引脚以检查输出,或者使用 RGMII 接口来检查时钟偏差--希望我明天就会注意到这一点。

原理图


相关引导日志摘录

我在几行中添加了一些注释。

[0.000000]在物理 CPU 上引导 Linux 0x0
[0.642213] libphy:固定 MDIO 总线:探测
[0.695435] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
[0.69544] DaVinci_MDIO 4a101000.MDIO:检测到 phy FFFFFFFE <-不确定是否正确?
[0.695864] MDIO:DaVinci_MDIO:DT:从 phy_mask[FFFFFFFE]
[0.701543] libphy 更新 phy_id[0]:4a101000.MDIO:探测
到[0.701566] DaVinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.740.000b
:mcio:10000b:10000b:10000b:10000b:10000b:10000b:10000b:10000b:驱动程序应使用未知的驱动程序 这是一个德州仪器(TI)的 OUI、与寄存器值
[0.702676] cpsw 4a100000匹配。以太网:初始化 cpsw ale 版本1.4[0.702207]
cpsw 4a100000.ethernet:ale 表大小1024[0.702747]
cpsw 4a100000.ethernet:cpt:溢出检查周期(jiffsx)
(jiff)驱动程序47401300.usb-phy: 未找到47401300.usb-phy 电源 VCC、使用虚拟稳压
器[0.711967] AM335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy 电源 VCC 未找到、使用虚拟稳压
器[0.734780] cpudle: enable-method 属性'ti、am3352'找到的操作
[11.032195] net eth0:初始化 cpsw 版本1.12(0)
[ 11.050752]通用 PHY:m4a1000: 连接的 PHY 驱动程序[通用 PHY](MII_BUS:phy_addr=4a101000.MDIO:00、IRQ=POLL)
[ 11.094158] IPv6:ADDRCONF (NETDEV_UP):eth0:


链路未就绪[ 11.988Rx]使用随机自以太网地址[ 11.988845]使用随机主机以太网地址[12.09420Gbps (NETDEV_UP)
:NET1004Gbps - NETDRV0489[12.000] 链路就绪
[12.218641]使用随机自以太网地址
[12.218660]使用随机主机以太网地址
[12.442706] 8021q:将 VLAN 0添加到设备 eth0上的硬件过滤器
...
[1575.13673] NETDEV 看门狗:eth0 (cpsw):发送队列0超时

完整日志可在以下位置找到: https://pastebin.com/n58c0zf9

ethtool / MII-工具输出

root@BeagleBone:eth0的~# ethtool eth0
设置:
支持的端口:[ TP AUI BNC MII 光纤]
支持的链路模式:10BaseT/Half 10baseT/full
100BaseT /半个100BaseT /全双工
1000BaseT/Half 1000BaseT/完全
支持的暂停帧使用:对称仅接收
支持自动协商:是
通告的链路模式:10BaseT/Half 10baseT/全
100BaseT /半个100BaseT /全双工
1000BaseT /半1000BaseT /全
广播暂停帧使用:未
广播自动协商:是
链接伙伴通告的链接模式:10BaseT /半10baseT/FULL
100BaseT /半个100BaseT /全双工
1000BaseT /
全链路伙伴通告的暂停帧使用:对称仅接收
链路伙伴通告的自动协商:是
速度:1000Mb/s
双工:全
端口:MII
PHYAD:0
收发器:内部
自动协商:开
支持唤醒:D
唤醒:D
当前消息电平:0x00000000 (0)

检测到链接:是
root@BeagleBone:~# ethtool -S eth0
NIC 统计信息:
正常 Rx 帧:0
广播 Rx 帧:0
多播 Rx 帧:0
暂停 Rx 帧:0
RX CRC 错误:0
RX 对齐/代码错误:0
超大 RX 帧数:0
RX Jabber:0
欠大小(短) Rx 帧:0
RX 片段:0
RX 八位位组:0
正常 Tx 帧:0
广播 Tx 帧:0
多播 Tx 帧:0
暂停 Tx 帧:0
延迟的 Tx 帧:0
冲突:0
单冲突 Tx 帧:0
多个冲突 Tx 帧:0
冲突过多:0
晚期冲突:0
TX 欠运转:0
载波侦听错误:0
TX 八位位组:0
RX + Tx 64字节帧:0
RX + Tx 65-127八位位组帧:0
RX + Tx 128-255八位位组帧:0
Rx + Tx 256-511八位位组帧:0
RX + Tx 512-1023八位位组帧:0
Rx + Tx 1024个八位位组帧:0
净八位位组:0
帧溢出的 RX 起始:0
帧的 RX 中间溢出:0
RX DMA 超限:0
RX DMA 通道0:head_enqueue:1
RX DMA 通道0:tail_enqueue:127
RX DMA 通道0:PAD_ENqueue:0
RX DMA 通道0:排队错误:0
RX DMA 通道0:DESC_ALLOC_FAIL:0
RX DMA 通道0:PAD_ALLOC_FAIL:0
RX DMA 通道0:runt_receive_buf:0
RX DMA 通道0:runt_transmit:bu:0
RX DMA 通道0:empty_dequeue:0
RX DMA 通道0:BUSY_DEqueue:0
RX DMA 通道0:Good:Dequeue:0
RX DMA 通道0:要求:0
RX DMA 通道0:teardown_dequeue:0
TX DMA 通道0:head_enqueue:32
TX DMA 通道0:tail_enqueue:620
TX DMA 通道0:PAD_ENqueue:0
TX DMA 通道0:排队错误:0
TX DMA 通道0:DESC_ALLOC_FAIL:0
TX DMA 通道0:PAD_ALLOC_FAIL:0
TX DMA 通道0:runt_receive_buf:0
TX DMA 通道0:runt_transmit;bu:19
TX DMA 通道0:empty_dequeue:27
TX DMA 通道0:BUSY_DEqueue:0
TX DMA 通道0:Good:Dequeue:31
TX DMA 通道0:要求:4
TX DMA CHAN 0:teardown_dequeue:508
root@BeagleBone:~# MII-tool -vv eth0
using SIOCMGMIIPHY=0x8947
eth0:协商的1000BaseT-FD 流控制、MII
PHY 的链接正常寄存器0:
1140 796d 2000 a231 01e1 cde1 006F 2001
4006 0300 3800 0000 0000 0000 0000 3000
5048 bf02 0000 1c40 29c7 0000 0040
6150 4444 0002 0000 0000 0000 0000 0002 0000
产品信息:供应商08:00:28、型号35 rev 1
基本模式:启用自动协商
基本状态:自动协商完成、链路正常
功能:1000BaseT–HD 1000BaseT–FD 100BaseTX-FD 100BaseTX-HD 10baseTD-FD 10baseTD-HD 10base-HD 广播
:1000BaseT–HD 10tD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-HD 10fD-TX 100BaseTD-HD 10fD-HD
控制:100BASE-TD-HD 10fD-HD 10fD-HD 10t-fD-HD 
root@BeagleBone:~/phytool#./phytool print eth0/0
IEEE-phy:ID:0x2000a231

IEEE-phy:reg:BMCR (0x00) val:0x1140
标志: -reset -loopback +aneg-enable -power-down -sand隔离-aneg-restart -collision-test
速度: 1000满

IEEE-phy:reg:BMSR (0x01) val:0x796d
功能:-100-b4 +100-f +100-h +10-f +10-h -100-t2-f -100-t2-h
标志: +ext-status +aneg-complete -remote-fault +aneg-capable +link -Jabber +ext register
root@BeagleBone:~# ifconfig eth0
eth0:flags=-28605 MTU 1500
iNet 169.254.77.126 netmask 255.255.0.0 broadcast 169.254.255.255
inet6 fe80::5233:8bff:fe0b:f575 prefixlen 64范围 ID 0x20
乙醚50:33:8b:0b:F5:75 txqueuelen 1000 (以太网)
RX 数据包0字节0 (0.0 B)
RX 错误0丢弃0超限0帧0
TX 数据包667字节5961 (5.8 KiB)
TX 错误5丢弃0溢出0载波0冲突0
器件中断46

root@BeagleBone:~# cat /sys/bus/mdio_bus/devices/4a101000.mdio:00/phy_id
0x2000a231
xxx@~/src/ti-linux-kernel-dev/KERNEL/drivers/net/phy grep -Ri 0x2000a231
dp83867.c:#define DP83867_PHY_ID0x2000a231
root@BeagleBone:~# zcat /proc/config.gz | grep 83867
CONFIG_DP83867_PHY=m

提前感谢您的帮助。

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

    如果相关、则需要更多原理图。

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

    以及一些其他 Linux 输出、以实现良好的测量。 (我忘记了 ifconfig。)

    root@BeagleBone:~/phytool#./phytool print eth0/0
    IEEE-phy:ID:0x2000a231
    
    IEEE-phy:reg:BMCR (0x00) val:0x1140
    标志: -reset -loopback +aneg-enable -power-down -sand隔离-aneg-restart -collision-test
    速度: 1000完整
    
    IEEE-phy:reg:BMSR (0x01) val:0x796d
    功能:-100-b4 +100-f +100-h +10-f +10-h -100-t2-f -100-t2-h
    标志: +ext-status +aneg-complete -remote-fault +aneg-capable +link -Jabber +ext-register
    root@BeagleBone:~# ifconfig eth0
    eth0:flags=-28605 MTU 1500
    iNet 169.254.77.126 netmask 255.255.0.0 broadcast 169.254.255.255
    inet6 fe80::5233:8bff:fe0b:f575 prefixlen 64范围 ID 0x20 
    乙醚50:33:8b:0b:F5:75 txqueuelen 1000 (以太网)
    RX 数据包0字节0 (0.0 B)
    RX 错误0丢弃0超限0帧0
    TX 数据包667字节5961 (5.8 KiB)
    TX 错误5丢弃0溢出0载波0冲突0
    器件中断46
    
    root@BeagleBone:~# cat /sys/bus/mdio_bus/devices/4a101000.mdio \:00/phy_id
    0x2000a231
    xxx@~/src/ti-linux-kernel-dev/KERNEL/drivers/net/phy grep -Ri 0x2000a231
    dp83867.c:#define DP83867_PHY_ID0x2000a231
    root@BeagleBone:~# zcat /proc/config.gz | grep 83867 CONFIG_DP83867_PHY_ID 0x2000a231 root BeagleBone
    

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

    您好!

    RGMII 需要数据和时钟具有2ns 的偏斜。 您是否通过配置 MAC、PHY 或电路板布线来处理它?

    建议您尝试 MAC 环回,看看是否接收了数据包? 您可以参阅 DP83867故障排除指南

    http://www.ti.com/lit/an/snla246a/snla246a.pdf

    此致、

    GET

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

    您好!

    我要关闭此主题。 如果您有进一步的疑问、请打开新主题并提供对此主题的引用。

    此致、

    GET