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.

[参考译文] AM4378:以太网 PHY 在6.1迁移期间使用更新的 DTS 无法正常工作。

Guru**** 2455560 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1475224/am4378-ethernet-phy-not-working-during-6-1-migration-with-updated-dts

器件型号:AM4378

工具与软件:

我们正在开发基于 AM437X 的定制电路板、将其从4.19迁移到6.1内核。  我更新了特定于以太网和 cpsw 开关的 dts 更改、并以 AM437X-SK dts 作为参考。

在更新 DTS 以太网 PHY 后、无法正常工作。  

dmesg 给出错误消息。

root@picv6-1:~# dmesg | grep "cpsw"
[ 3.391245] cpsw-switch 4a100000.switch:/OCP@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/ethernet-ports/port@1 read phy-mode err -19
根@picv6-1:~#
根@picv6-1:~# dmesg | grep "MDIO"
[ 3.363963] Davinci_MDIO 4a101000.MDIO:DaVinci MDIO 修订版1.6、总线频率1000000
[ 3.374624] Davinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.MDIO:00、驱动程序未知
[ 3.382696] Davinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动程序未知

使用6.1内核更新了 DTS 以太网节点。

&MAC_SW{
pinctrl-names ="默认值"、"睡眠";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
状态="正常";
};

&Davinci_MDIO_SW{
pinctrl-names ="默认值"、"睡眠";
pinctrl-0 =<&Davinci_MDIO_default>;
pinctrl-1 =<&Davinci_MDIO_SLEEP>;

ethphy0:ethernet-phy@0{
REG =<0>;
};

ethphy1:ethernet-phy@1 {
reg =<1>;
};
};

cpsw_port1{
PHY-Handle =<&ethphy0>;
PHY-MODE ="RMII-rxid";
TI、dual-EMAC-PVID =<1>;
};

cpsw_port2{
PHY-Handle =<&ethphy1>;
PHY-MODE ="RMII-rxid";
TI、双 EMAC-PVID =<2>;
};

请查看我的更改、如果我遗漏任何内容、请告诉我。

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

    已将查询分配给专家。 请在1天或2天内收到回复。

    谢谢!

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

    您好!

    由于您要更改内核版本、因此有几个因素会导致该问题。

    -正在使用的 PHY 是否被编译到6.1内核中? 是否在内核配置中配置了 PHY 驱动程序?

    -您是否能够一次连接到一个接口,并能连接到另一个设备?

    -如果 PHY 处于 RMII 模式,我不相信 RMII-rxid 是一个有效的选择。 我建议尝试 RMII。

    DTS 看起来与 TI 为 AM437x SK EVM 提供的示例类似。  

    此致、

    Schuyler

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

    尊敬的 Schuyler:

    正如建议的那样、将"phy-mode"更改为 RMII、而不是 RMII-rxid。  将此 PHY 检测为通用 PHY 驱动程序(即在4.19内核中也是如此)  

    我可以在连接以太网电缆时看到链路状态变化、并且可以通过 ifconfig 看到接口。   

    但数据包不会传出。  Tx 计数增量和 Rx 计数为零。

    我需要进一步了解的任何其他领域。

    此致、

    Siva.

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

    尊敬的 Schuyler:

    这是更改 PHY 模式后的日志输出。  

    dmesg | grep "cpsw"
    [3.361711] cpsw-switch 4a100000.switch:初始化 cpsw ale 版本1.4
    [ 3.368616] cpsw-switch 4a100000.switch:ALE 表大小1024
    [3.374470] cpsw-switch 4a100000.switch:cpts:溢出检查周期500 (jiffies)
    [ 3.382088] cpsw-switch 4a100000.switch:cpts:ref_clk_freq:250000000 calc_mult:2147483648 calc_shift:29错误:0ns /秒
    [ 3.393233] cpsw-switch 4a100000.switch:检测到 MACID = 64:8c:bb:D2:5b:51
    [ 3.400317] cpsw-switch 4a100000.switch:检测到 MACID = 64:8c:bb:D2:5b:53
    [ 3.410043] cpsw-switch 4a100000.switch:已初始化(寄存器0x4a100000、池大小256) hw_ver:0019010f 1.15 (0)
    [12.384382] cpsw-switch 4a100000.switch:启动 ndev. 模式:dual_mac
    [12.455661] cpsw-switch 4a100000.switch:启动 ndev. 模式:dual_mac
    [213.365334] cpsw 交换机4a100000.switch eth1:链路接通- 10Mbps/全-流量控制关闭
    [724.005509] cpsw-switch 4a100000.switch eth1:链路断开
    [729.205596] cpsw-switch 4a100000.switch eth1:链路接通- 10Mbps/全-流量控制关闭
    根@picv6-1:~#
    根@picv6-1:~# dmesg | grep "MDIO"
    [ 3.333971] Davinci_MDIO 4a101000.MDIO:DaVinci MDIO 修订版1.6、总线频率1000000
    [ 3.344636] Davinci_MDIO 4a101000.MDIO:PHY[0]:器件4a101000.MDIO:00、驱动程序未知
    [ 3.352706] Davinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动程序未知
    [ 12.418931]通用 PHY 4a101000.MDIO:01:连接的 PHY 驱动程序(mi_bus:phy_addr=4a101000.MDIO:01、IRQ=POLL)
    [ 12.480557]通用 PHY 4a101000.MDIO:00:已连接 PHY 驱动程序(mi_BUS:phy_addr=4a101000.MDIO:00、IRQ=POLL)

    此致、

    Siva.

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

    您好!

    这是一种低比特率、您在使用哪些 PHY?  

    您还可以发布 ethtool eth0和 ethtool eth1以及 ethtool -S eth0和 ethtool -S eth1的结果吗?

    此致、

    Schuyler

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

    LAN8740AI-EN-TR 是电路板上使用的以太网 Phy。

    以下是 eth0和 eth1接口的 ethtool 命令输出。 以太网电缆已连接 eth0。

    root@picv6-1:~# ethtool eth0
    eth0的设置:
    支持的端口:[ TP MII ]
    支持的链路模式:10baseT/half 10baseT/full
    支持的暂停帧使用:仅对称接收
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播链路模式:10baseT/half 10baseT/full
    广播的暂停帧使用:否
    广播的自动协商:是
    通告的 FEC 模式:未报告
    速度:未知!
    双面打印:未知! (255)
    自动协商:开启
    端口:MII
    PHYAD:0
    收发器:外部
    支持唤醒:D
    唤醒:d.
    当前消息级别:0x00000000 (0)

    检测到链路:否
    root@picv6-1:~# ethtool eth1
    eth1的设置:
    支持的端口:[ TP MII ]
    支持的链路模式:10baseT/half 10baseT/full
    支持的暂停帧使用:仅对称接收
    支持自动协商:可以
    支持的 FEC 模式:未报告
    广播链路模式:10baseT/half 10baseT/full
    广播的暂停帧使用:否
    广播的自动协商:是
    通告的 FEC 模式:未报告
    速度:未知!
    双面打印:未知! (255)
    自动协商:开启
    端口:MII
    PHYAD:1
    收发器:外部
    支持唤醒:D
    唤醒:d.
    当前消息级别:0x00000000 (0)

    检测到链路:否
    根@picv6-1:~#
    root@picv6-1:~# ethtool -S eth0
    NIC 统计信息:
    良好的 Rx 帧:0
    广播 Rx 帧:0
    多播 Rx 帧:0
    暂停 Rx 帧:0
    Rx CRC 错误:0
    Rx 对齐/代码错误:0
    超大 Rx 框架:0
    Rx Jabbers: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-up 八位位组帧: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_ENQUEY: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:0
    TX DMA 通道0:tail_enqueue:0
    TX DMA 通道0:PAD_ENQUEY: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:0
    TX DMA 通道0:empty_dequeue:0
    TX DMA 通道0:Busy_Dequeue:0
    TX DMA 通道0:good_dequeue:0
    TX DMA 通道0:需要:0
    TX DMA 通道0:teardown_dequeue:0
    根@picv6-1:~#
    根@picv6-1:~#
    root@picv6-1:~# ethtool -S eth1
    NIC 统计信息:
    良好的 Rx 帧:0
    广播 Rx 帧:0
    多播 Rx 帧:0
    暂停 Rx 帧:0
    Rx CRC 错误:0
    Rx 对齐/代码错误:0
    超大 Rx 框架:0
    Rx Jabbers: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-up 八位位组帧: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_ENQUEY: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:0
    TX DMA 通道0:tail_enqueue:0
    TX DMA 通道0:PAD_ENQUEY: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:0
    TX DMA 通道0:empty_dequeue:0
    TX DMA 通道0:Busy_Dequeue:0
    TX DMA 通道0:good_dequeue:0
    TX DMA 通道0:需要:0
    TX DMA 通道0:teardown_dequeue:0

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

    您好!

    此 PHY 是否配置为在内核配置中构建?

    根据 ethtool 结果、每个 PHY 是否仅配置为10Mbps 半双工和全双工? 我想看看 ethtool 输出是否与配置的 PHY 相匹配。

    您能否附上完整的启动日志(不是剪切和粘贴、发布时使用插入文件选项)。  此外、请附加内核构建的.config 文件。

    此致、

    Schuyler

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

    e2e.ti.com/.../pic6Ethernet.txt                          

    请找到 dmesg 输出。

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

    您好!

    PHY 正在与通信、否则不会有链路建立或链路断开。 变化是由于电缆已插入或未插入。

    - PHY 是否仅配置为以10Mbps 的速率运行?

    -是内核中内置的 PHY 驱动程序或作为模块,请在内核配置的一部分(通常在内核源目录中存储为.config )

    - 这些消息可能需要调查。 它们似乎指示可以访问用于复位 PHY 的 GPIO。

    [ 3.344716] of_get_named_gpiod_flags:无法解析节点'/OCP@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mDIO@1000/ethernet-phy@1[0]"的'reset-gpio'属性
    [ 3.344774] of_get_named_gpiod_flags:无法解析节点'/OCP@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/MDIO@1000/Ethernet-phy@1[0]"的"RESETT-GPIO"属性

    此致、

    Schuyler  

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

    当我运行 udhcpc -i eth1时、我可以看到链路向上和向下。

    udhcpc:广播发现
    udhcpc:广播发现
    udhcpc:广播发现
    [471.924955] cpsw-switch 4a100000.switch eth1:链路接通- 10Mbps/全-流量控制关闭
    13:33:06.846753 IP6 fe80::ba94:d9ff:fec7:4b19 > FF02:16:HBH ICMP6,多播侦听器报告 v2, 1组记录,长度28.
    13:33:07.776749 IP6 Fe80::ba94:d9ff:fec7:4b19 > FF02::16:HBH ICMP6,多播侦听器报告 v2, 1组记录,长度28.
    [472.965454] cpsw-switch 4a100000.switch eth1:链路断开
    udhcpc:广播发现
    udhcpc:广播发现
    udhcpc:广播发现
    [501.045003] cpsw 开关4a100000.switch eth1:链路接通- 10Mbps/全-流量控制关闭
    13:33:35.966709 IP6 fe80::ba94:d9ff:fec7:4b19 > FF02::16:HBH ICMP6,多播侦听器报告 v2, 1组记录,长度28.
    13:33:36.356729 IP6 fe80::ba94:d9ff:fec7:4b19 > FF02::16:HBH ICMP6,多播侦听器报告 v2, 1组记录,长度28.
    udhcpc:广播发现
    13:33:58.206756 ip 0.0.0.0 bootpc >255.255.255.255.bootps: BOOTP/DHCP,请求来自 b8:94:D9:C7:4b:19 (oui 未知),长度300
    [523.925456] cpsw-switch 4a100000.switch eth1:链路断开
    udhcpc:广播发现
    udhcpc:广播发现
    [ 533.284965] cpsw-switch 4a100000.switch eth1:链路接通- 10Mbps/全-流量控制关闭
    13:34:08.206758 IP6 fe80::ba94:d9ff:fec7:4b19 > FF02::16:HBH ICMP6、多播侦听器报告 v2、1个组记录、长度28
    13:34:08.896733 IP6 fe80::ba94:d9ff:fec7:4b19 > FF02::16:HBH ICMP6、多播侦听器报告 v2、1个组记录、长度28
    [ 534.325445] cpsw-switch 4a100000.switch eth1:链路断开