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.

[参考译文] AM6442:在 EVM AM64x EVM 上使用 PHY DP83869的 ETH2失败

Guru**** 2465890 points
Other Parts Discussed in Thread: TMDS64EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm

器件型号:AM6442
主题中讨论的其他器件:DP83869TMDS64EVM

工具与软件:

您好、TI:

我们将使用 EVM AM64x、其中我们看到 Phy  DP83869的 eth2发生故障、

我们从 TI git"git clone git.ti.com/.../oe-layersetup.git tisdk"下载了 AM64x 的代码、并使用提供的步骤进行编译  1.2.使用 Yocto 构建 SDK—Processor SDK AM64X 文档。 使用此二进制文件时、我们会看到 eth2没有出现在"ifconfig -a"下。

串行日志:

root@am64xx-evm:~# dmesg | grep 838  
[   1.431518] Davinci_MDIO 8000f00.MDIO:PHY[0]:器件8000f00.MDIO:00、驱动程序 TI DP83867
[5.878381]   systemd[1]:由于未满足条件检查(ConditionPathLists=/sys/kernel/tracing)、跳过了内核跟踪文件系统。
[7.698387]   审核:类型=1334审核(1709054767.256:4 ): prog-id=8 op=load
[  11.035315] am65-cpsw-nuss 8000000.ethernet eth0:phy [8000f00.MDIO:00]驱动程序[TI DP83867](IRQ=poll)
[  13.008401] Davinci_MDIO 300b2400.MDIO:PHY[15]:器件300b2400.MDIO:0f、驱动器 TI DP83869
[  14.131838] remoteproc remoteproc6: 30034000.pru 是可用的
[  14.212517] TI DP83869 300b2400.MDIO:0f:连接的 PHY 驱动程序(MII_BUS:phy_addr=300b240.MDIO:0f、IRQ=POLL)
root@am64xx-EVM:~#  

DTS 配置:

#include   //添加额外

Ethernet2 =&icssg1_emac0;

以太网端口{
#address-cells =<1>;
#size-cells =<0>;
icssg1_emac0:端口@0{
REG =<0>;
phy-handle =<&icssg1_phy1>;
PHY 模式="RGMII-id";
/*由引导加载程序填充*/
local-mac-address =[00 00 00 00 00];
状态="正常";
};

&icssg1_MDIO{
状态="正常";
pinctrl-names ="默认值";
pinctrl-0 =<&icssg1_mdio1_pins_default>;

icssg1_phy1:ethernet-phy@f{
REG =<0xF>;
tx-internal-delay-ps =<250>;
rx-internal-delay-ps =<2000>;
状态="正常";
};
};

如果在此处有遗漏、请告知我们、

谢谢!

Prathibha

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

    您好、TI:

    有更新吗?

    此致  

    Honnesh  

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

    您好、TI:

    有更新吗?

    此致  

    Honnesh  

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

    您好、Honnesh/Prathibha、  

    上周、我们向错误的人分配了此主题、但最近才联系到我、因此我们对此延迟深表歉意。  

    先回答几个问题

    1.是否可以共享"ifconfig -A"的确切结果(插入>代码插入日志)

    2.可以共享 AM64x EVM 的整个引导日志吗? (插入代码>Code 的日志)为了澄清、您是使用 TI AM64x EVM 而不是定制 AM64x 电路板进行测试吗?

    是否要对默认 AM64x EVM DTS 进行修改?  

    4.您是否希望将 ICSSG 以太网用于 eth2、还是将 CPSW 以太网用于 eth2?

    5. 使用最新的默认 TI Linux SDK 映像时是否会出现相同的行为? 您是否计划使用 RT-Linux 或非 RT-Linux?

    6.您能分享"系统 ctl 状态 systemd-networkd.service"?的结果吗

    -道林

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

    您好、Prathibha:

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5633852 #5633852"]

    3、是的、我们正在更改默认的 AM64x EVK dts、i-e k3-am642-evm.dts、并且器件仅引导 DTS、我们通过打印确保如此。

    4. 根据 DTS 配置、我们看到它是  ICSSG

    [报价]

    您是否可以共享完整的 DTS、包括您所做的更改(而不仅仅是您在初始帖子中共享的代码片段)。

    如果您使用的是 TI AM64x EVM 而不是定制电路板、我可以问您要在 DTS 中更改什么吗? 如果目标是将 ETH2端口从 CPSW 以太网更改为 ICSSG 以太网、则可以只使用 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/ICSSG/PRU-ICSS/ICSSG/PRU_ICSSG_ETHERNET.html#cpsw-pru-ethernet-selection Linux_Drivers 更改为 Foundational_Components 以太网。

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5633852 #5633852"]

    大多数情况下、我们在单独编译 Linux 内核代码并替换器件上的 Image 和 DTB 时会看到这种情况。 对于该实验、我们认为问题可能是加载模块、因此我们也进行了如下所示的 defconfig 更改、

    CONFIG_DP83867_PHY=y                     
    CONFIG_DP83869_PHY=y                  
    CONFIG_TI_ICSSG_PRUETH=y                        
    CONFIG_TI_CPSW_PROVISION_CLIENT=y

    CONFIG_TI_PRUSS=y   

    [报价]

    如果使用 TI AM64x EVM 而不是定制电路板、则默认内核配置和 dts 应足以使 eth2显示 ifconfig -a 这表明您正在更改内核配置。 您正在进行的所有更改是什么、我可以问您为什么进行这些更改?

    我的建议(如果您正在使用 TI AM64x EVM)是首先在不修改内核配置、DTS 和 Linux SDK 任何其他部分的情况下进行测试、并验证 ETH2是否出现(如果您尚未这么做)。  

    -道林

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

    您好、Prathibha、

    您对所替换的图像进行了哪些更改(除了您之前的回复中提到的 defconfig 更改之外)?

    2. 我们仅从 SDK 中编译了 Linux、并替换了器件上的 Image 和 K3-am642-evm.dTB。 此处我们看到 eth2接口无法正常工作

    您使用的是哪个 Linux SDK 版本?

    与默认 DTS 相比、您的 DTS 与以太网配置没有任何重大区别、因此我不认为您看到的问题是 DTS 造成的。 但请注意、根据 DTS 配置、eth2应显示为 CPSW 以太网接口。 当前您的 eth1接口实际上是 ICSSG 接口、因为引导日志显示检测到 phy[15](地址15处的 phy)。 在 DTS 中、地址15处的 PHY 是为 ICSSG 接口配置的(reg =<0xF>)。 您可以使用"ethtool -i eth1"对其进行双重检查。  

    您是否还可以尝试打印"IP A"的内容?

    您是否对测试时使用的 TI AM64x EVM (TMDS64EVM)进行了任何电路板修改?

    -道林

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

    您好、TI:

    很抱歉耽误你的时间、

    请找到随附的请求的 ethtool 和 IP 日志、

    以下是 dtsi 中的地址详细信息、

    cpsw3g 有两个 PHY 集成:地址0x0和0x3

    icssg1集成了一个 PHY:地址0xF

    注意:如果我们只是独立编译 Linux (从 SDK)、而在 EVK 上重新编译映像和 DTB、ETH2不会出现。

    我们还看到、我们从 stanalone 中将映像和 dtb 重新连接到"lsmod"下不会加载任何模块。

    root@am64xx-EVM:~# lsmod
    使用的模块大小
    root@am64xx-EVM:~#

    谢谢你

    Prathibha

    root@am64xx-evm:~# ethtool -i eth1
    driver: am65-cpsw-nuss
    version: 6.6.32-g6de6e418c80e-dirty
    firmware-version:
    expansion-rom-version:
    bus-info: 8000000.ethernet
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: yes
    supports-priv-flags: yes
    root@am64xx-evm:~#
    root@am64xx-evm:~# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: main_mcan0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
        link/can
    3: main_mcan1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
        link/can
    4: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
        link/ether 1c:63:49:1a:de:18 brd ff:ff:ff:ff:ff:ff
    5: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether 52:2f:f6:28:27:30 brd ff:ff:ff:ff:ff:ff
    root@am64xx-evm:~#
    root@am64xx-evm:~# ethtool -i eth2
    Cannot get driver information: No such device
    root@am64xx-evm:~#
    

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

    您好、Prathibha:

    感谢您提供更多详细信息。

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5646883 #5646883"]

    注意:如果我们只是独立编译 Linux (从 SDK)、而在 EVK 上重新编译映像和 DTB、ETH2不会出现。

    我们还看到、我们从 stanalone 中将映像和 dtb 重新连接到"lsmod"下不会加载任何模块。

    [报价]

    重新编译映像时、还应确保重新编译模块。 需要安装新映像和新构建的模块(如果您使用 SD 卡进行引导、则应安装到 SD 卡中)。 请参阅此处的注释: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components_Kernel_Users_Guide kernel.html#compiling-the-kernel-modules

    是否还确保重建模块并安装模块?

    -道林

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

    您好、TI:

    感谢您的答复、是的、我们遵循此链接建议。 如果我们的编译过程遗漏了什么、请告知我们

    内核独立编译、

    make ARCH=ARM64 CROSS_COMPILE=AArch64-NONE-LINUX-GNU- defconfig

    //内核静态编译
    make ARCH=ARM64 CROSS_COMPILE=AArch64-NONE-LINUX-GNU- Image -j32


    //内核器件树编译

    make ARCH=ARM64 CROSS_COMPILE=AArch64-NONE-LINUX-GNU- dtbs


    //内核模块编译
    make ARCH=ARM64 CROSS_COMPILE=AArch64-NONE-LINUX-GNU- MODULTS -j32


    ///内核模块安装------- "
    sudo make ARCH=ARM64 INSTALL_MOD_PATH=kernel_modules/modules_install

    谢谢!

    Prathibha

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

    您好、Prathibha:  

    我想、除了最后一步(内核模块安装)、您还已经根据 https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components_Kernel_Users_Guide kernel.html#installing-the-image-and-device-tree-binaries 复制了新生成的映像?

    执行这些步骤后、您是否仍然看到相同的问题?

    -道林

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

    您好、TI:

    使用我之前注释中提到的过程构建独立内核后、我们将新编译的"Image"和"k3-am642-evm.dtb"复制到器件中、我们仍然看到相同的问题。

    注意:我们将使用 eMMC 来启动器件、因此将替换以下二进制文件。 将二进制文件复制到器件的根路径、

    mount /dev/mmcblk0p1 /mnt/

    CP Image /mnt/boot

    CP k3-am642-evm.dtb /mnt/boot/dtb/ti

    umount /mnt

    谢谢!

    Prathibha

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

    您好、Prathibha:

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5651324 #5651324"]注意:我们使用 eMMC 来启动器件、因此将替换以下二进制文件。 将二进制文件复制到设备的根路径、[/QUOT]

    为了澄清一点、您只会在使用 eMMC 进行引导时看到此问题? 使用 SD 卡时是否出现同样的问题?  

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5651324 #5651324"]

    mount /dev/mmcblk0p1 /mnt/

    CP Image /mnt/boot

    CP k3-am642-evm.dtb /mnt/boot/dtb/ti

    umount /mnt

    [报价]

    如果只是在 eMMC 中观察到的问题、我将不得不循环让 eMMC 专家对您执行的这些步骤进行评论。

    -道林

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

    您好、TI:

    SD 卡和 EMMC 中也会出现同样的问题

    谢谢!

    Prathibha

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

    您好、Prathibha:

    您使用的是哪个 Linux SDK 版本?

    您能说明一下您使用的是哪个版本的 Linux SDK 吗?

    不确定您是否已尝试执行此操作、使用最新 SDK 中未修改的 AM64x DTS (k3-am642-evm.dts)、并且不更改内核配置中的任何内容、也不做任何其他更改、请按照我前面指向的链接中指定的方法尝试构建并安装到 SD 卡。 首先验证它是否按预期运行。

    这意味着将内核配置中的此类更改恢复到 SDK defconfig 中默认提供的更改。 在配置内核时、请按照以下步骤操作: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#configuring-the-kernel

    -道林

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

    您好、TI:

    我们使用"ti-processor-sdk-linux-am64xx-evm-10.00.07.04" SDK、

    正如我们之前的评论之一所提到的、我们最初没有进行任何 DTS 修改、当我们发现问题时修改 DTS、

    以下是我们先前回复的要点、

    1.我们测试了如何使用完全 Yocto 编译生成的二进制文件来刷写 EVM、3个以太网接口可以正常工作

    2.我们仅从 SDK 中编译了 Linux、并在器件上替换了 Image 和 k3-am642-evm.dTB。 此处、我们看到 ETH2接口无法正常运行

    注意:除了上述几点之外、在 从独立目录中替换 Image 和 K3-am642-evm.dtb 后、我们在执行"lsmod"时发现没有加载任何模块。

    谢谢!

    Prathibha

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

    您好、Prathibha:

    我们使用的是"ti-processor-sdk-linux-am64xx-evm-10.00.07.04" SDK、

    对于 SDK 10.0 (非 RT 版本)、我们发现未显示 eth1端口的开箱即用图像存在一些已知问题。 RT-Linux 版的 SDK 10.0不会出现此问题。   有关分辨率、请访问 e2e.ti.com/.../5476317

    您是否能够尝试最新的 SDK 10.1 (ti-processor-sdk-linux-am64xx-evm-10.01.10.04)、看看您是否仍然观察到这种行为? 如果可以、请尝试 RT-Linux 版本。

     

    [报价 userid="409809" url="~/support/processors-group/processors/f/processors-forum/1466362/am6442-eth2-with-phy-dp83869-is-failing-on-evm-am64x-evm/5656185 #5656185"]

    2.我们仅从 SDK 中编译了 Linux、并在器件上替换了 Image 和 k3-am642-evm.dTB。 此处、我们看到 ETH2接口无法正常运行

    注意:除了上述几点之外、在 从独立目录中替换 Image 和 K3-am642-evm.dtb 后、我们在执行"lsmod"时发现没有加载任何模块。

    重新编译映像时、还应确保重新编译模块。 需要安装新映像和新构建的模块(如果您使用 SD 卡进行引导、则应安装到 SD 卡中)。 请参阅此处的注释: https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/latest/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#compiling-the-kernel-modules

    根据我的理解、如果您只是使用提供的 SDK 进行重建而不进行任何修改、那么 SDK 10.1不存在任何已知问题。您是否还记得随映像一起构建模块?  

     -道林