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/processor-SDK-AM335X:以太网不能正常工作

Guru**** 2582595 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630604/linux-processor-sdk-am335x-ethernet-doesn-t-work

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

大家好、  

我要配置基于 AM335x EVM 的定制板、我的定制板使用 KSZ9021作为以太网、但当电路板启动时、以太网不起作用、

日志显示如下:

[1.137159] libphy:固定 MDIO 总线:探测
[1.212746] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6
[1.218913] DaVinci_MDIO 4a101000.MDIO:检测到的 phy 掩码 ffff7f
[1.225969] libphy: 4a101000.mdio:探测
[1.230067] DaVinci_MDIO 4a101000.MDIO:PHY[7]:器件4a101000.MDIO:07、驱动器 Micrel KSZ9021千兆位 PHY
[1.240568] cpsw 4a100000.ethernet:无从器件[1] phy_id、phy-handle 或固定链路属性
[1.249082] cpsw 4a100000.以太网:检测到的 MACID = 00:0c:7b:39:01:3D
[1.255847] cpsw 4a100000.以太网:CPT:溢出检查周期500 (jiffies)

[13.426253] Net eth0:正在初始化 cpsw 版本1.12 (0)
[13.426264] net eth0:初始化 cpsw ale 版本1.4
[13.426270]净 eth0:ALE 表大小1024
[13.536728] Micrel KSZ9021千兆 PHY 4a101000.MDIO:07:连接的 PHY 驱动器[Micrel KSZ9021千兆位 PHY](MII_bus:phy_addr=4a101000.MDIO:07、IRQ=1)
[13.537763] libphy:找不到 PHY
[13.537774] net eth0:PHY ""未在从站1上找到、错误-19
[13.559195] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪

[18.735324] cpsw 4a100000.以太网 eth0:链路速率高达- 1Gbps/全速率-流控制 Rx/TX
[18.848835] IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路就绪

引导过程完成后、以太网无法检测 IP 地址、但当我尝试命令:/etc/init.d/networking restart 时、在 firsrt time cosole show 中:

重新配置网络接口... ifdown:未配置接口 lo
ifdown:未配置接口 eth0
ifconfig:SIOCGIFFLAGS:无此类设备
完成。

第二次、控制台显示:  

[56.006369] net eth0:正在初始化 cpsw 版本1.12 (0)
[56.011735] net eth0:初始化 cpsw ale 版本1.4
[56.021736]净 eth0:ALE 表大小1024
[56.123974] Micrel KSZ9021千兆位 PHY 4a101000.MDIO:07:连接的 PHY 驱动器[Micrel KSZ9021千兆位 PHY](MII_bus:phy_addr=4a101000.MDIO:07、IRQ=1)
[56.138510] libphy:找不到 PHY
[56.141929(2010)净 Eth0:从器件1上未找到 PHY"",ERR -19
[56.180079] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪
ifconfig:SIOCGIFFLAGS:无此类设备
完成。

以太网可以检测 IP 地址、 有人能帮我解决这个问题吗

这是我的设备树配置:

cpsw_default:cpsw_default{
pinctrl-single、pins =<
/*从属设备1 */
AM33XX_IOPAD (0x914、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txen.rgmii1_tctl *
AM33XX_IOPAD (0x918、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* mii1_rxdv.rgmii1_rctl *
AM33XX_IOPAD (0x91c、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd3.rgmii1_td3 *
AM33XX_IOPAD (0x920、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd2.rgmii1_td2 *
AM33XX_IOPAD (0x924、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd1.rgmii1_TD1 *
AM33XX_IOPAD (0x928、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txd0.rgmii1_td0 *
AM33XX_IOPAD (0x92c、PIN_OUTPUT 下拉| MUX_Mode2)/* mii1_txclk.rgmii1_tclk *
AM33XX_IOPAD (0x930、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* mii1_rxclk.rgmii1_RCLK *
AM33XX_IOPAD (0x934、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* mii1_rxd3.rgmii1_rd3 *
AM33XX_IOPAD (0x938、PIN_INPUT_PULLUGDOWN | MUX_Mode2)/* mii1_rxd2.rgmii1_RD2 *
AM33XX_IOPAD (0x93c、PIN_INPUT_PULLUGDOWN | MUX_Mode2)/* mii1_rxd1.rgmii1_RD1 *
AM33XX_IOPAD (0x940、PIN_INPUT_PULLUGDOWN | MUX_Mode2)/* mii1_rxd0.rgmii1_rd0 *
>;
};

cpsw_sleep:cpsw_sleep{
pinctrl-single、pins =<
/*从器件1复位值*/
AM33XX_IOPAD (0x914、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x918、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x91c、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x920、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x924、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x928、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x92c、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x930、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x934、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x938、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x93c、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x940、PIN_INPUT 下拉| MUX_MODE7)
>;
};

DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
pinctrl-single、pins =<
/* MDIO */
AM33XX_IOPAD (0x948、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)/* MDIO_DATA.MDIO_DATA *
AM33XX_IOPAD (0x94c、PIN_OUTPUT 上拉| MUX_MODE0)/* MDIO_clk.MDIO_clk *
>;
};

DaVinci_MDIO_SLEEP:DaVinci_MDIO_SLEEP{
pinctrl-single、pins =<
/* MDIO 复位值*/
AM33XX_IOPAD (0x948、PIN_INPUT 下拉| MUX_MODE7)
AM33XX_IOPAD (0x94c、PIN_INPUT 下拉| MUX_MODE7)
>;
};

Mac{(&M)
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&cpsw_default>;
pinctrl-1 =<&cpsw_sleep>;
// dual_emac =<1>;
状态="正常";
};

DaVinci_MDIO{
pinctrl-names ="default"、"sleep";
pinctrl-0 =<&Davinc_MDIO_default>;
pinctrl-1 =<&Davinc_MDIO_SLEEP>;

状态="正常";

};

cpsw_emac0{&cpsw_emac0}
PHY_ID =<&Davinci_MDIO>、<7>;
PHY-MODE ="RGMII-txid";

};

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

    请查看本指南并查看您是否正确配置了以太网: processors.wiki.ti.com/.../Linux_Core_CPSW_User's_Guide
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Biser、
    我已经检查了您发送给我的链接、但我无法修复我的问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、您能否遵循此检查清单并将结果发布在此处: processors.wiki.ti.com/.../5x_CPSW
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Biser、
    感谢您的回复、我已经检查了您发送给我的链接、但当我的自定义板启动时、控制台日志与该链接的控制台日志不同

    [13.426253] Net eth0:正在初始化 cpsw 版本1.12 (0)
    [13.426264] net eth0:初始化 cpsw ale 版本1.4
    [13.426270]净 eth0:ALE 表大小1024
    [13.536728] Micrel KSZ9021千兆 PHY 4a101000.MDIO:07:连接的 PHY 驱动器[Micrel KSZ9021千兆位 PHY](MII_bus:phy_addr=4a101000.MDIO:07、IRQ=1)
    [13.537763] libphy:找不到 PHY
    [13.537774] net eth0:PHY ""未在从站1上找到、错误-19
    [13.559195] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪

    您能向我解释一下、我的定制板的控制台日志、问题属于 phy id 吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经要求以太网专家来看看这一点。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我同意 PHY 未按预期显示在控制台日志中。
    请作为文件附加、而不是剪切和粘贴控制台日志以及 ethtool eth0的结果。

    您使用的软件是什么? 请指明您使用的是哪款 TI SDK。

    在从服务器接收 IP 地址之前、您需要确保 PHY 已与链路伙伴连接、并且 CPsw 识别已检测到链路。 这是 Ethtool eth0将指示的。 如果该命令返回的状态不是预期的、则可能表示 PHY 有问题。 返回信息不是预期的示例、未检测到链路、链路双工错误或速度为10半双工或根本没有数据。

    下面的演示介绍了 Sitara AM 类处理器的总体链路建立过程。

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

    e2e.ti.com/.../cosole-log.txtHiSchuyler、

    非常感谢您的回复、我使用的是 TI SDK PROCESSOR-SDK-LINUX-AM335X 04_00_00_04 (内核4.9)、我将控制台日志随附于此消息、您能否为我检查和解释问题、非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据所附的日志、我看到 PHY 正在地址7处重新转换、并且正在加载正确的 PHY 驱动程序。 接口文件显示 eth0接口设置为静态并分配了 IP 地址192.168.1.100,静态 IP 地址将跳过 DHCP 过程。 使用地址192.168.1.1的 ping 也成功。 eth0的 ethtool 显示 PHY 显示在1Gbps 时检测到链路。 为什么要重新启动网络? 到目前为止、这看起来以太网接口正常工作、因此我不确定问题是什么。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Schuyler、您好、
    问题在于、以太网接口无法在电路板启动时检测到 IP 地址、我必须在终端上命令"/etc/init.d/networking restart"两次、然后它可以检测到 IP 地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您说电路板无法检测 IP 地址时,您是否说 eth0虽然已分配静态地址,但在执行 restart 命令之前,ifconfig eth0不会显示 IP 地址?

    是否可以在发出 restart 命令之前附加 ifconfig eth0?
    是否要为 eth0接口分配静态 IP 地址?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Schuyler、您好、
    非常感谢您的回复、
    这是电路板启动后我命令"ifconfig"时的控制台日志:

    root@AM335x-EVM:~# ifconfig eth0
    eth0 链接地址:以太网 HWaddr 00:0C:7B:39:01:3D
    inet6 addr:fe80::20c:7bff:fe39:13d%3068626016/64范围:链接
    运行多播 MTU:1500公制:1的上广播
    RX 数据包:119错误:0丢弃:0超限:0帧:0
    TX 数据包:37错误:0丢弃:0超限:0载波:0
    冲突:0 txqueuelen:1000
    RX 字节:11998 (11.7 KiB) TX 字节:6489 (6.3 KiB)
    中断:172

    我真的想在电路板启动时为 eth0接口分配静态 IP 地址、您认为我的配置设备树出错了吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    系统初始化守护程序 systemd 执行网络接口初始化的方式与 sysvinit 略有不同。 之前的 sysvinit 系统初始化依赖于/etc/interfaces 文件、systemd 不依赖于文件。

    请尝试此操作、在/etc/systemd/network/01-eth-static.network.目录中创建此文件 我想我已将其填充、以匹配您的设置。

    --文件内容----
    [匹配]
    NAME=eth0

    [网络]
    地址=192.168.1.100
    ---- EOF --------
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Schuyler、您好、
    我确实按照您的指示工作、我的电路板可以在启动时检测 IP 地址、非常感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好消息、我很高兴我们能够解决您看到的问题。