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.

[参考译文] AM5718-HiRel:如何更改 AM5718-RGMII-DP83822 的器件树和驱动器以从电传输切换到光传输

Guru**** 2582315 points
Other Parts Discussed in Thread: TMDXIDK5718, AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542775/am5718-hirel-how-to-change-the-device-tree-and-driver-for-am5718-rgmii-dp83822-to-switch-from-electrical-transmission-to-optical-transmission

器件型号:AM5718-HiRel
主题中讨论的其他器件:AM5718、TMDXIDK5718、 DP83825I

工具/软件:

您好、专家:  

    我使用 TI 的 am5718 作为处理器、SDK 版本:TI-PROCESSOR-SDK-LINUX-am57xx-EVM-04.03.00.05。我参阅 TMDXIDK5718 开发板的设计、替换 Micrel KSZ9031 千兆位 PHY(使用 TI DP83822 10/100Mbps PHY 连接到一个 RGMII)。 PHY 地址为 1。

现在我们有一个需要光纤通信的新项目。我们已经将 phy 芯片电路改造成了电路板上的光学转换模块。

需要对器件树和驱动程序进行哪些更改?

在更换光学端口之前、电路通信没有问题。 器件树部分如下所示:

&Mac{
状态=“正常“;
DUAL_EMAC;
};

&cpsw_emac0{
PHY_id =<&davinci_mdio>、<1>;
PHY 模式=“RGMII-id";“;
dual_emac_res_vlan =<1>;
};

&cpsw_emac1{
PHY_id =<&davinci_mdio>、<2>;
PHY 模式=“RGMII-id";“;
dual_emac_res_vlan =<2>;
};

&davinci_mdio{
dp83822_0:以太网 PHY@0{
RESET-GPIO =<&GPIO5 17 GPIO_ACTIVE_LOW>;
reset-delay-us =<20>;
reg =<1>;
中断父级=<&GPIO5>;
中断=<0 IRQ_TYPE_EDGE_FALLING>;
};
ksz9031_1: Ethernet-phy@1 {
Reset-GPIOs =<&GPIO1 4 GPIO_ACTIVE_LOW>;
reset-delay-us =<20>;
reg =<2>;
中断父级=<&GPIO5>;
中断=<1 IRQ_TYPE_EDGE_FALLING>;
};
};

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

    尊敬的 Jiabin:

    参考最新版本的 DP83822 驱动程序和器件树绑定、我们只需向器件树添加两个条目即可启用光纤功能:

    https://github.com/TexasInstruments/ti-ethernet-software/blob/main/linux_drivers/dp83822.c

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/net/ti,dp83822.yaml?h=ti-linux-5.10.y

    请添加到 822 器件树条目:

    TI、光纤模式=<1>; //启用光纤 
    TI、line-losse-low =<1>;//将信号检测设置为低电平有效(假设 SFP 模块为低电平有效)

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

        但我的电路似乎存在一些问题。 我在 TI 网站上发现了 DP83822 故障排除问题、请参阅附件。 第 11 页提到使用环回测试进行电路自检。
        它提到使用 Mac 生成和检查数据包。 我想询问如何使用 Mac 生成和检查数据包。
      (第 11 页)中还有一行:

       030B 3380//这有助于 PRBS 锁定
        030B 是寄存器吗? DP83822 没有该地址的寄存器、对吗?
    希望您能帮助我回答这个问题。 谢谢 again.e2e.ti.com/.../zhcadi8.pdf

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

    尊敬的 Jiabin:

    您能澄清一下您观察到的电路问题吗?

    对于环回自检、由于启用环回时链路故障、从 MAC 侧生成数据包具有挑战性。 相反、您可以启用 PHY PRBS 生成器进行 MAC 侧环回测试:

    1. 在 PHY 上启用模拟环回(MAC 侧)、并启用 PRBS 生成器将数据包发送到 MAC
      1. 寄存器 0x16 = 0x5108
    2. 检查 MAC 数据包统计信息、以验证接收到的数据是否无错误
      1. ethtool -s  tcpdump  或  Wireshark

    寄存器 0x30B 是用于提高 PRBS 性能的内部寄存器、寄存器描述非公开。

    如果分享了有关通信问题的更多详细信息、我可以帮助建议其他测试来验证信号链。 如果您可以在 MAC <->PHY 或 PHY <->PHY 之间进行通信、以及是否有可用的寄存器转储信息、请告诉我。

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

    在对电路进行故障排除之前、我想确认 AM5718 配置是否正确。
    如前所述、我使用 TI 的 am5718 作为处理器、SDK 版本:TI-PROCESSOR-SDK-LINUX-am57xx-EVM-04.03.00.05。
    器件树配置 dr7.dtsi 和以太网相关器件没有更改:
    MAC:以太网@48484000{
    兼容=“ti、dra7-cpsw“、“ti、cpsw“;
    TI、hwmods =“gMAC";“;
    Clocks =<&GMAC_MAIN_clk>、<&GMAC_RFT_clk_mux>;
    时钟名称=“fck",“,"CPTs"、"CPTs";“;</s>“
    cpdma_channels =<8>;
    ale_entries =<1024>;
    BD_ram_size =<0x2000>;
    MAC_CONTROL =<0x20>;
    从器件=<2>;
    ACTIVE_SLAVE =<0>;
    CPTS_CLOCK_Mult =<0x784CFE14>;
    CPTS_CLOCK_SHIFT =<29>;
    REG =<0x484000 0x1000
    0x48485200 0x2E00>;
    #address-cells =<1>;
    #size-cells =<1>;
    /*
    *不允许将 cpsw 时钟门控作为解决方法
    *对于勘误表 i877. 禁用内部时钟
    *导致出现器件开关特征
    *性能会随着时间的推移而降低、最终无法满足要求
    *数据手册延迟时间/偏差规格。
    */
    TI、空闲;
    /*
    * rx_threshold_pend
    * rx_pend
    * tx_pend
    * MISC_PEND
    */
    中断= 、


    ;
    范围;
    SYSCON =<&SCM_conf>;
    STATUS =“已禁用“;
    davinci_mdio:MDIO@48485000{
    兼容=“ti、cpsw-mdio“、“ti、davinci_mdio“;
    #address-cells =<1>;
    #size-cells =<0>;
    TI、hwmods =“davinci_mdio";“;
    bus_freq =< 1000000>;
    REG =<0x48485000 0x100>;
    };
    cpsw_emac0:slave@48480200{
    /*由 U-Boot 填充*/
    MAC-ADDRESS =[ 00 00 00 00 00 00 ];
    };
    cpsw_emac1:slave@48480300{
    /*由 U-Boot 填充*/
    MAC-ADDRESS =[ 00 00 00 00 00 00 ];
    };
    PHY_SEL:cpsw-phy-sel@4a002554{
    兼容=“ti、dra7xx-cpsw-phy-sel“;
    reg=<0x4a002554 0x4>;
    reg-names =“gmii-sel";“;
    };
    };

    将以下内容添加到器件树文件 am571x-idk.dts 、我已更改。(EMAC0 连接到 DP83822、进行光传输):
    /*Add in 2025年07月18日*/
    &Mac{
    状态=“正常“;
    DUAL_EMAC;
    };
    &cpsw_emac0{
    PHY_id =<&davinci_mdio>、<1>;
    PHY 模式=“RGMII-id";“;
    dual_emac_res_vlan =<1>;
    };

    &cpsw_emac1{
    PHY_id =<&davinci_mdio>、<2>;
    PHY 模式=“RGMII-id";“;
    dual_emac_res_vlan =<2>;
    };
    &davinci_mdio{
    dp83822_0:以太网 PHY@0{
    RESET-GPIO =<&GPIO5 17 GPIO_ACTIVE_LOW>;
    reset-delay-us =<20>;
    reg =<1>;
    ti、fabrice-mode =<1>;//启用光纤
    TI、line-losse-low =<1>;//将信号检测设置为低电平有效(假设 SFP 模块为低电平有效)
    中断父级=<&GPIO5>;
    中断=<0 IRQ_TYPE_EDGE_FALLING>;
    };
    ksz9031_1: Ethernet-phy@1 {
    Reset-GPIOs =<&GPIO1 4 GPIO_ACTIVE_LOW>;
    reset-delay-us =<20>;
    reg =<2>;
    中断父级=<&GPIO5>;
    中断=<1 IRQ_TYPE_EDGE_FALLING>;
    };
    };
    /*End Add*/

    在启动日志中找到以下信息:

    在 SDK 中搜索打印信息(TI DP83822 10/100Mbps PHY)、如下所示:

    可以看出、此 phy 芯片的驱动程序是 dp83848.c
    但是、在读取 dp83848 上的信息后发现它不支持光传输或 RGMII。
    因此、我想确认是否可以使用该驱动程序适应 DP83822 芯片进行光端口传输? 我们是否仍需要 DP83822 驱动器来实现光传输?
    如果是后者、您上次给我的 dp83822.c 不能正常工作、我将其放在 SDK 目录中:/ti-processor-sdk-linux-am57xx-evm-04.03.00.05/board-support/linux-4.9.69+gitAUTOINC+9ce43c71ae-g9ce43c71ae/drivers/net/phy/
    更改目录中的 Makefile 后、编译失败。 此问题是由于需要更改其他内容还是与 SDK 版本不匹配而导致的? 请帮帮我。
    非常感谢。

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

    尊敬的 Jiabin:

    DP83848 驱动器不能用于在 DP83822 上启用光纤。 此编译错误是由于 SDK Linux 版本与 DP83822 驱动程序不匹配导致的、我们目前没有与 4.9 兼容的 DP83822 驱动程序。 如果您的系统限制为 v4.9、则需要反向移植 DP83822 驱动程序以实现兼容性。 在这种情况下、请共享编译错误日志。

    有两个选项可用于在 v4.9 上启用 DP83822 光纤功能:

    1) 修改 DP83848 驱动器以实现与 DP83822 寄存器映射的兼容性。 这无需编译和导入新的驱动程序、但需要花时间修改驱动程序的寄存器映射和初始化逻辑。

    2) 导入 DP83822 驱动程序并进行修改以与 v4.9 兼容。 为此、驱动程序寄存器初始化逻辑不需要更改、但驱动程序函数定义/结构需要反向移植以实现 v4.9 兼容性。

    请告诉我您的偏好。

    谢谢您、
    Evan  

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

    尊敬的 Jiabin:

    感谢您分享日志。
    在 v4.9 上对该驱动程序进行反向移植和测试需要一些时间才能发布 — 根据紧急程度,至少需要 2 周时间。

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

    你们的工作将帮助我们解决重大问题,非常感谢你们。
    如果有任何需要测试与主板相关的数据,请给我一条消息,我会尽快提供给您。

    再次感谢。

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

    尊敬的 Jiabin:

    当然、很高兴提供帮助。 请通过 e-mayhew@ti.com 与我联系 、了解随着集成进度的更新信息。

    谢谢您、
    Evan

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

    尊敬的 Jiabin:

    如果您对通过电子邮件共享的 v4.9 驱动程序有任何疑问或反馈、请告诉我。

    谢谢您、
    Evan

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

    尊敬的 Evan:

    感谢您的努力工作。

    我将该驱动程序添加到以下目录中:/ home/CYS/ti-processor-sdk-linux-am57xx-evm-04.03.00.05/board-support/linux-4.9.69+gitAUTOINC+9ce43c71ae-g9ce43c71ae/drivers/net/phy
    我在 dp83848.c 中注释了与 dp83822 相关的内容、并重新编译了 zImage 内核。
    插入光纤电缆后、我发现网络处于 10M 半双工模式。 我将“最大速度=<100>“添加到设备树中;全双工;
    如下所示:

    &davinci_mdio{
    dp83822_0:以太网 PHY@0{
    Reset-GPIOs =<&GPIO1 4 GPIO_ACTIVE_LOW>;
    reset-delay-us =<20>;
    reg =<1>;
    最大速度=<100>;
    全双工;
    ti、fabrice-mode =<1>;//启用光纤
    TI、line-losse-low =<1>;//将信号检测设置为低电平有效(假设 SFP 模块为低电平有效)
    中断父级=<&GPIO5>;
    中断=<0 IRQ_TYPE_EDGE_FALLING>;
    };
    ksz9031_1: Ethernet-phy@1 {
    RESET-GPIO =<&GPIO5 17 GPIO_ACTIVE_LOW>;
    reset-delay-us =<20>;
    reg =<2>;
    中断父级=<&GPIO5>;
    中断=<1 IRQ_TYPE_EDGE_FALLING>;
    };
    };
    重新编译设备树并开始、仍处于 10M 半双工模式。

    Root@am57xx-EVM:~# ethtool eth0
    eth0 设置:
    支持的端口:[ TP mii ]
    支持的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    支持的暂停帧使用:否
    支持自动协商:可以
    广播的链路模式:10BaseT/Half 10baseT/Full
    100BaseT/Half 100BaseT/Full
    广播的暂停帧使用:否
    广播的自动协商:是
    速度:10MB/s
    双工:半双工
    端口:mii
    PHYAD:1.
    收发器:外部
    自动协商:打开
    支持唤醒:d.
    唤醒:D
    当前消息级别:0x00000000 (0)

    检测到链路:否
    Root@am57xx-EVM:~#

    这是设备树配置问题吗?

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

    尊敬的 Jiabin:

    此版本的共享驱动器不支持 ethtool、需要通过寄存器访问来验证链路速度/状态。 请分享以下信息:
    1) 到链路伙伴的通信测试结果
    2) PHY 寄存器转储

    谢谢您、
    Evan

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

    您好 Evan、

    感谢您的答复。

    1.因为在光学模块的开发中,这种独特的光纤端口网络设备通过交换机的常规电气端口连接到另一端,显示 100Mbps 全双工。

    我不知道如何获取 PHY 寄存器转储。 它是否在启动日志中? 附件是启动日志。

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

    尊敬的 Jiabin:

    “对不起,我不知道该怎么办。“
    我将在下周初分享反馈。

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

    我期待着你的答复。

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

    尊敬的 Jiabin:

    1.因为在开发光学模块的过程中、这种独特的光纤端口网络设备通过交换机的常规电源端口连接到另一端、显示 100Mbps 全双工。

    查看链路伙伴的状态时、通信是否按预期工作?

    [报价 userid=“563928" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1542775/am5718-hirel-how-to-change-the-device-tree-and-driver-for-am5718-rgmii-dp83822-to-switch-from-electrical-transmission-to-optical-transmission/5985392

    我不知道如何获取 PHY 寄存器转储。 它是否在启动日志中? 附件是启动日志。

    [/报价]

    它不在启动日志中 — 请参阅以下常见问题解答,获取寄存器访问指南:

    https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1164499/faq-how-to-read-and-write-ethernet-phy-registers-using-a-linux-terminal?tisearch=e2e-sitesearch&keymatch=how%20to%20access%20registers%20using%20linux#

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

    1.由于计算机的以太网是一个电气端口,而主板是一个光学端口,因此我使用交换机测试了通信。 我的所有计算机看起来正常、使用 iperf 进行测试时、通信性能可以达到 93Mbps。 这似乎正常,但我不知道 iperf 测试机制是否符合正常的实用性。


    2.请参阅电路板的 PHY 寄存器转储的附件。

    e2e.ti.com/.../_54801A90F665_log.txt

    由于该电路板用于光学通信、因此我希望通过驱动器直接将以太网固定为 100Mbps 全双工工作模式。

    谢谢您、

    Jiabin

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

    尊敬的 Jiabin:

    如果 iperf 和 ping 测试通过而未出现问题、则 PHY 配置和链路有效。

    我对剩余问题的理解:

    1) Ethtool 不报告 PHY 的正确状态。 这不会影响功能测试、但仅用作调试的状态检查。 如果这是系统要求、请告知我、因为在驱动程序中实施需要额外的时间。

    2) PHY 需要搭接而不是 DTS ->驱动程序配置才能进入光纤模式。 搭接配置是否可以接受? 如果没有、我可以根据优先级考虑集成到驱动程序中。

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

    正确报告 PHY 的状态是一项系统要求、希望您能 帮助实现。

    再次感谢您。

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

    我懂了。 请预计下周将通过电子邮件提供更新的驱动程序。

    谢谢您、
    Evan

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

    尊敬的 Evan:

       我已向您发送了一封电子邮件、询问有关更改 dp83822 的进度、  您会回复我、您会不会?

    Jiabin

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

    尊敬的 Jiabin:

    请期待我的回复。

    谢谢您、
    Evan

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

    尊敬的 Evan:

        感谢您的答复。

       您可以在此处回复或回复我的电子邮件。 再次感谢您。

    Jiabin

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

    尊敬的 Evan:

        感谢您的努力工作。

       您可以在此处回复或回复我的电子邮件。 再次感谢您。

    Jiabin