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.

[参考译文] J784S4XEVM:在 Linux 内使用 MAIN_CPSW2g 以太网时出现问题

Guru**** 2457760 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1464920/j784s4xevm-problem-with-using-main_cpsw2g-ethernet-inside-linux

器件型号:J784S4XEVM

工具与软件:

大家好!

我们目前正在开发基于 J784S4的定制电路板 SDK 10.0、需要帮助其配置和正确使用 MAIN_CPSW2g 以太网(2G)。

我们已启用 MAIN_CPSW2g   以太网接口的所有相关部分、使用ifconfig -a命令时在 Linux 中可见。 当我们使用启用接口时ifconfig eth1 up、PHY 链路将按预期出现。 但是、手动设置 IP 地址、网络掩码和网关后、无法 ping 远程 PC。 有趣的是、对于 MCU_CPSW2g 以太网、遵循相同的步骤可以让我们成功 ping 通远程 PC、而不会出现问题。

为了进一步调试、我们尝试 按照德州仪器(TI)发布的文章中概述的步骤、在 U-Boot 中配置 MAIN_CPSW2g 以太网。 通过 在 DTS 中禁用 MCU_CPSW2g 以太网(可能是由于 U-Boot 限制支持单个接口)、我们能够使用 MAIN_CPSW2g  以太网成功对远程 PC 执行 ping 操作。

但是、在使用默认映像在 J784S4 EVM 电路板上进行测试时、我们会遇到一个单独的问题。 在刷写 EVM 并尝试使用 MAIN_CPSW2g  以太网后、连接电缆导致没有活动;链路似乎完全处于非活动状态、导致我们的状态比定制电路板更差。

这就引出了几个问题:

  1. MAIN_CPSW2g  以太网是否预计会与  Linux 中的 MCU_CPSW2g 以太网一起工作? 我们尝试同时启用 EVM 上的两个接口失败。
  2. Linux 中是否需要进行特定配置或其他步骤来确保 MAIN_CPSW2g  以太网正常运行?
  3. 无论是在我们的定制电路板还是 EVM 上、任何硬件或 DTS 配置问题是否会导致这些不一致?

我们非常感谢为解决这一问题提供任何指导或建议。

提前感谢您的支持。

此致、
Dušan μ A

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

    您好!

    MAIN_CPSW2g  以太网是否预计将与  Linux 中的 MCU_CPSW2g 以太网配合使用? 我们尝试同时启用 EVM 上的两个接口失败。

    是的、MCU CPSW2G 和主 CPSW2G 彼此独立运行。 这意味着它们可以同时运行而不会出现任何问题

    [报价用户 id="616530" url="~/support/processors-group/processors/f/processors-forum/1464920/j784s4xevm-problem-with-using-main_cpsw2g-ethernet-inside-linux "]
    • Linux 中是否需要进行特定配置或其他步骤来确保 MAIN_CPSW2g  以太网正常运行?
    • 无论是在我们的定制电路板还是 EVM 上、任何硬件或 DTS 配置问题是否会导致这些不一致?
    [报价]

    我看不到您提到的 EVM 问题。 您能否共享 EVM 和定制电路板的 Linux 引导日志?

    此外、在您的定制电路板上、MAIN_CPSW2G 的配置是什么?  

    此致、
    Tanmay

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

    您好、Tanmay、

    我将提供 EVM 板和定制板的日志供您参考。

    从日志中、您可以观察到以下行为:

    • EVM 电路板: eth1接口(MAIN_CPSW2g)显示为"UP"、但当我们插入以太网电缆时没有活动。 LED 不闪烁、该ethtool命令用于确认未建立链路。
    • 定制板: 最初是eth1不可见的、但我们可以手动启动接口。 日志指示接口更改为"UP"状态、也可以使用确认ethtool 。 此外、为了进一步明确、我添加了 ping 日志。

    定制电路板上的 MAIN_CPSW2g 和 MCU_CPSW2g 接口都使用不同的 PHY (NXP TJA1120)。 我们更新了 U-Boot 和 Linux 内核配置以反映此更改。

    为了方便您参考、我在下面添加了 MAIN_CPSW2g 和 MCU_CPSW2g 的相关 DTS 部分:

    &mcu_cpsw {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&mcu_cpsw_pins_default>;
    
        cpts@3d000 {
            /* Map HW4_TS_PUSH to GENF1 */
            ti,pps = <3 1>;
        };
    };
    
    &davinci_mdio {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&mcu_mdio_pins_default>;
    
        mcu_phy0: ethernet-phy@19 {
            reg = <19>;
            rx-internal-delay-ps = <2000>;
            tx-internal-delay-ps = <2000>;
        };
    };
    
    &mcu_cpsw_port1 {
        status = "okay";
        phy-mode = "rgmii-id";
        phy-handle = <&mcu_phy0>;
    };
    
    &main_cpsw1 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_cpsw2g_default_pins>;
        status = "okay";
    };
    
    &main_cpsw1_mdio {
        pinctrl-names = "default";
        pinctrl-0 = <&main_cpsw2g_mdio_default_pins>;
        status = "okay";
    
        main_cpsw1_phy0: ethernet-phy@19 {
            reg = <19>;
            rx-internal-delay-ps = <2000>;
            tx-internal-delay-ps = <2000>;
        };
    };
    
    &main_cpsw1_port1 {
        phy-mode = "rgmii-id";
        phy-handle = <&main_cpsw1_phy0>;
        status = "okay";
    };
    


    如果您需要其他详细信息或更多日志来帮助诊断问题、请告诉我。

    此致、
    Dušan μ A

    e2e.ti.com/.../full_5F00_boot_5F00_logs_5F00_evm.txt

    e2e.ti.com/.../full_5F00_boot_5F00_logs_5F00_custom.txt

    e2e.ti.com/.../ifconfig_5F00_evm.txt

    e2e.ti.com/.../ethtool_5F00_evm.txt

    e2e.ti.com/.../ethtool_5F00_ifconfig_5F00_custom_5F00_board.txt

    e2e.ti.com/.../ping_5F00_custom_5F00_board.txt

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

    您好!

    对于定制电路板、我看到您已在设备树中为两个端口指定了模式为"RGMII-id"。  

    您能否打印寄存器0x00104034和0x40F06040的值

    对于该 EVM、一切看起来都是正确的。 能否尝试使用单独的 EVM?

    什么是链路伙伴? MCU_CPSW2G 端口和 MAIN_CPSW2G 端口是否相同?

    此致、
    Tanmay

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

    Tanguy、您好!

    以下是读取寄存器的值:

    root@j784s4-evm:~# devmem2 0x00104034
    /dev/mem opened.
    Memory mapped at address 0xffff93212000.
    Read at address  0x00104034 (0xffff93212034): 0x00000002
    root@j784s4-evm:~# devmem2 0x40F06040
    /dev/mem opened.
    Memory mapped at address 0xffff90c6b000.
    Read at address  0x40F06040 (0xffff90c6b040): 0x00000012


    关于 EVM 板、我们在两个具有两个版本 SDK (10.0和10.01) 的单独板上进行了测试、观察到了相同行为。

    • 对于MCU_CPSW2G:我们将其连接到路由器(通过 DHCP 获取 IP 地址)并直接连接到笔记本电脑(使用静态 IP、网络掩码和网关)。 两种配置都按预期运行。
    • 对于MAIN_CPSW2G:我们尝试了同样的两种方法,但在这种情况下没有工作。

    如果您需要任何进一步的详细信息或其他测试、请告诉我。

    此致、
    Dušan μ A

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

    您好!

    对于 MAIN_CPSW2G、似乎未正确应用 MAC 的内部延迟设置。

    您能写入 0x00104034、0x21吗? 使用命令"devmem2 0x00104034 w 0x12"执行此操作以进行测试。

    这将解决定制电路板上的问题。 让我看看驱动器、寻找一个更持久的解决方案。

    此致、
    Tanmay

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

    您好、Tanmay、

    感谢您的建议。 0x00104034按照指示写入解决了 MAIN_CPSW2G 的问题、现在我们可以成功地对另一侧执行 ping 操作。

    您是否能够确定更永久的解决方案、或确定该问题为什么具体影响 MAIN_CPSW2G 而不是 MCU_CPSW2G?

    此致、

    Dušan μ A

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

    您好、Tanmay、

    我想检查一下您提到的更持久的解决方案是否有任何更新。  

    此致、
    Dušan μ A

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

    您好!

    现在、您可以使用以下修补程序实现设备树中的更改:

    e2e.ti.com/.../add_2D00_rgmii_2D00_id_2D00_support.diff

    之后、您可以将模式更改为"RGMII-id"以进行更改。

    此致、
    Tanmay

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

    您好、Tanmay、

    谢谢! 这非常完美。

    此致、
    Dušan μ A