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.

[参考译文] 编译器/处理器 SDK-AM335X:双 EMAC 问题

Guru**** 2540720 points
Other Parts Discussed in Thread: AM3352

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/840105/compiler-processor-sdk-am335x-dual-emac-issue

器件型号:PROCESSOR-SDK-AM335X
主题中讨论的其他器件:AM3352

工具/软件:TI C/C++编译器

我将 SDK 升级到 sdk6.0.7

但当我配置双 Mac 时、我使用 了335x-evmsk.dts 作为参考、并在 DTS 中配置 cpsw 和 EMAC。

我无法 ping 通 AM335x 文件系统中的 PC 或其他网络。

起始信息如下:

----

[0.963765]返修:模块已加载
[0.974173]循环:模块已加载
[0.979918] libphy:固定 MDIO 总线:探测
[1.054756] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
[1.062463] DaVinci_MDIO 4a101000.MDIO:检测到的 phy 掩码 fffffffffc
[1.070934] libphy: 4a101000.mdio:探测
[1.075102] DaVinci_MDIO 4a101000.MDIO:PHY[0]:device 4a101000.MDIO:00、driver SMSC LAN8710/LAN8720
[1.084279] DaVinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动程序 SMSC LAN8710/LAN8720
[1.094451] cpsw 4a100000.ethernet:检测到的 MACID = 7c:38:66:fb:47:41
[1.101303] cpsw 4a100000.ethernet:初始化 cpsw ale 版本1.4
[1.1077757] cpsw 4a100000以太网:ALE 表大小1024
[1.113035] cpsw 4a100000.以太网:CPT:溢出检查周期500 (jiffies)
[1.121136] cpsw 4a100000.以太网:cpsw:检测到的 MACID = 7c:38:66:fb:47:43
[1.129629] i2c /dev/entries 驱动程序
[1.135126] cputidle: enable-method 属性'ti,am3352'找到操作

[3.486299] udev[66]:启动版本164
正在配置网络接口... [8.309632] net eth0:正在初始化 cpsw 版本1.12 (0)
[8.415807] SMSC LAN8710/LAN8720 4a101000.MDIO:01:连接的 PHY 驱动程序[SMSC LAN8710/LAN8720](MII_bus:phy_addr=4a101000.MDIO:01、IRQ=POLL)
[8.436308] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪
[8.456409] net eth1:正在初始化 cpsw 版本1.12 (0)
[8.565940] SMSC LAN8710/LAN8720 4a101000.MDIO:00:连接的 PHY 驱动程序[SMSC LAN8710/LAN8720](MII_bus:phy_addr=4a101000.MDIO:00、IRQ=POLL)
[8.581517] IPv6:ADDRCONF (NETDEV_UP):ETH1:链路未就绪
完成。

(笑声)

[9.755237] random: crng init done.(随机:完成 crng 初始化。
[12.566035] cpsw 4a100000.以太网 eth0:链路向上- 100Mbps/全-流控制 Rx/TX
[12.604850] IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路就绪

------

似乎 emac0和 emac1已被插入正常。 但是、我无法 ping 我的 PC。 ifconfig 结果:

Eth0 Link encap: Ethernet HWaddr 7C:38:66:FB:47:41
iNet addr:192.168.3.11 Bcast:192.168.3.255掩码:255.255.255.0
inet6 addr:fe80:7e38:66ff:fefb:4741/64范围:链接
运行多播 MTU:1500公制:1的上广播
RX 数据包:0错误:0丢弃:0超限:0帧:0
TX 数据包:35错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:0 (0.0 B) TX 字节:2402 (2.3 KiB)
中断:41

ETH1链路连接:以太网 HWaddr 7C:38:66:FB:47:43
iNet addr:192.168.4.11 Bcast:192.168.4.255掩码:255.255.255.0
上广播多播 MTU:1500公制:1
RX 数据包:0错误:0丢弃:0超限:0帧:0
TX 数据包:0错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

LO 链路环接:本地环回
iNet addr:127.0.0.1掩码:255.0.0.0
inet6 addr:::1/128范围:Host
正在运行 MTU:65536公制:1的上环回
RX 数据包:393错误:0丢弃:0超限:0帧:0
TX 数据包:393错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:26402 (25.7KiB) TX 字节:26402 (25.7KiB)

演示板和我的板之间的硬件存在差异。 Rmii1和 rmii2地址 为1、0、而不是0、1。因此我更改了 DTS EMAC phy_id。

我的 RMII 引脚多路复用为:

[MDIO_CLK/TIMER5/UART5_TXD/UART3_RTSN/MMC0_SDWP/MMC1_CLK/MMC2_CLK/GPIO0_1] MDIO_CLK PHY
[MDIO_DATA/TIMER6/UART5_RXD/UART3_CTSN/MMC0_SDCD/MMC1_CMD/MMC2_CMD/GPIO0_0] MDIO_DATA
[XDMA_EVENT_INTR1//TCLKIN/CLKOUT2/TIMER7/PR1_PRU0_PRU_R31_16/EMU3/GPIO0_20 ETH_RST_GPIO0_20 ETH_RST
[GMII1_CRS/RMII1_CRS_DV/SPI1_D0/I2C1_SDA/McASP1_ACLKX/UART5_CTSN/UART2_RXD/GPIO3_1] RMII1_CRS_DV RMII1
[GMII1_RXERR/RMII1_RXERR/SPI1_D1/I2C1_SCL/McASP1_FSX/UART5_RTSN/UART2_TXD/GPIO3_2] RMII1_RXERR
[GMII1_TXEN/RMII1_TXEN/RGMII1_TCTL/TIMER4/McASP1_AXR0/EQEP0_index/MMC2_CMD/GPIO3_3] RMII1_TXEN
[GMII1_TXD0/RMII1_TXD0/RGMII1_TD0/McASP1_AXR2/McASP1_ACLKR/EQEP0B_IN/MMC1_CLK/GPIO0_28] RMII1_TXD0
[GMII1_TXD1/RMII1_TXD1/RGMII1_TD1/McASP1_FSR/McASP1_AXR1/EQEP0A_IN/MMC1_CMD/GPIO0_21] RMII1_TXD1
[GMII1_RXD0/RMII1_RXD0/RGMII1_RD0/McASP1_AHCLKX/McASP1_AHCLKR/McASP1_ACLKR/McASP0_AXR3/GPIO2_21] RMII1_RXD0
[GMII1_RXD1/RMII1_RXD1/RGMII1_RD1/McASP1_AXR3/McASP1_FSR/EQEP0_STROBE/MMC2_CLK/GPIO2_20] RMII1_RXD1
[RMII1_REFCLK/XDMA_EVENT_INTR2/SPI1_CS0/UART5_TXD/McASP1_AXR3/MMC0_POW/McASP1_AHCLKX/GPIO0_29] RMII1_REFCLK
[McASP0_FSX/EHRPWM0B//SPI1_D0/MMC1_SDCD/PR1_PRU0_PRU_R30_1/PR1_PRU0_PRU_R31_1/GPIO3_15] eth2_INT_GPIO3_15
[GPMC_A4/GMII2_TXD1/RGMII2_TD1/RMII2_TXD1/GPMC_A20/PR1_MII1_TXD0/EQEP1A_IN/GPIO1_20] RMII2_TXD1 RMII2
[GPMC_A5/GMII2_TXD0/RGMII2_TD0/RMII2_TXD0/GPMC_A21/PR1_MII1_RXD3/EQEP1B_IN/GPIO1_21] RMII2_TXD0
[GPMC_A10/GMII2_RXD1/RGMII2_RD1/RMII2_RXD1/GPMC_A26/PR1_MII1_RXDV/McASP0_AXR0/GPIO1_26] RMII2_RXD1
[GPMC_A11/GMII2_RXD0/RGMII2_RD0/RMII2_RXD0/GPMC_A27/PR1_MII1_RXER/McASP0_AXR1/GPIO1_27] RMII2_RXD0
[GPMC_A9/GMII2_RXD2/RGMII2_RD2/MMC2_DAT7/GPMC_A25/PR1_MII_MR1_CLK/McASP0_FSX/RMII2_CRS_DV/GPIO1_25] RMII2_CRS_DV_DV
[GPMC_WPN/GMII2_RXERR/GPMC_CSN5/RMII2_RXERR/MMC2_SDCD/PR1_MII1_TXEN/UART4_TXD/GPIO0_31] RMII2_RXERR
[GPMC_A0/GMII2_TXEN/RGMII2_TCTL/RMII2_TXEN/GPMC_A16/PR1_MII_MT1_CLK/EHRPWM1_TRIPZONE_INPUT/GPIO1_16] RMII2_TXEN
[GMII1_COL/RMII2_REFCLK/SPI1_SCLK/UART5_RXD/McASP1_AXR2/MMC2_DAT3/McASP0_AXR2/GPIO3_0] RMII2_REFCLK
[GPMC_CSN2/GPMC_BE1N/MMC1_CMD/GPIO1_31] eth2_PHY_INTn_GPIO1-31

我关于 cpsw 的 DTS 如下所示:

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 *

/*从机2 */
AM33XX_IOPAD (0x840、PIN_OUTPUT 下拉| MUX_mode2)/* GPMC_a0.rgmii2_tctl *
AM33XX_IOPAD (0x844、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* GPMC_A1.rgmii2_rctl *
AM33XX_IOPAD (0x848、PIN_OUTPUT 下拉| MUX_mode2)/* GPMC_A2.rgmii2_td3 *
AM33XX_IOPAD (0x84c、PIN_OUTPUT 下拉| MUX_mode2)/* GPMC_A3.rgmii2_td2 *
AM33XX_IOPAD (0x850、PIN_OUTPUT 下拉| MUX_Mode2)/* GPMC_A4.rgmii2_TD1 *
AM33XX_IOPAD (0x854、PIN_OUTPUT 下拉| MUX_mode2)/* GPMC_A5.rgmii2_td0 *
AM33XX_IOPAD (0x858、PIN_OUTPUT 下拉| MUX_mode2)/* GPMC_A6.rgmii2_tclk *
AM33XX_IOPAD (0x85c、PIN_INPUT_PULLDOWN | MUX_MODE2)/* GPMC_A7.rgmii2_RCLK *
AM33XX_IOPAD (0x860、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* GPMC_A8.rgmii2_rd3 *
AM33XX_IOPAD (0x864、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* GPMC_A9.rgmii2_RD2 *
AM33XX_IOPAD (0x868、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* GPMC_A10.rgmii2_RD1 *
AM33XX_IOPAD (0x86c、PIN_INPUT_PULLUGDOWN | MUX_MODE2)/* GPMC_A11.rgmii2_rd0 *
>;
};

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>、<1>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<1>;
};

cpsw_emac1{&cpsw_emac1}
PHY_ID =<&Davinci_MDIO>、<0>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<2>;
};

phy_SEL{&
RMII-时钟-外部;
};

这里有任何问题?谢谢。

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

    请遵循此检查清单并在以下位置发布所需信息: processors.wiki.ti.com/.../5x_CPSW

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

    IV 发现、上面的输出显示链路检测是正确的。 我在 ping PC 时没有收到任何 Wireshark 数据包。

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


    您好!

    重新启动电路板后、是否可以附上 ethtool -S eth0的结果、并且只能自行启动 eth0? IP 地址是通过 DHCP 获得的还是静态设置的?

    此致、

    Schuyler

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

    我使用了 Arago-base 文件系统进行测试。 我使用 ifconfig eth0 192.168.3.11  静态配置 IP。 ethtool 结果:
    root@AM335x-EVM:~# ethtool eth0
    eth0的设置:
    支持的端口:[ TP MII]
    支持的链路模式:10BaseT/Half 10baseT/Full
    100BaseT /半个100BaseT /全双工
    支持的暂停帧使用:仅对称接收
    支持自动协商:是
    支持的 FEC 模式:未报告
    通告的链路模式:10BaseT /半10baseT/全
    100BaseT /半个100BaseT /全双工
    广播的暂停帧使用:否
    广播自协商:是
    通告的 FEC 模式:未报告
    链接伙伴通告的链接模式:10BaseT /半10baseT/全
    100BaseT /半个100BaseT /全双工
    链接伙伴通告的暂停帧使用:对称仅接收
    连接方通告的自动协商:是
    连接伙伴通告的 FEC 模式:未报告
    速度:100Mb/s
    双工:全双工
    端口:MII
    PHYAD:1.
    收发器:内部
    自协商:开
    支持唤醒:D
    唤醒:D
    当前消息级别:0x00000000 (0)

    root@AM335x-EVM:~# ethtool -S eth0
    NIC 统计信息:
    正常 Rx 帧:0
    广播 Rx 帧:0
    多播 Rx 帧:0
    暂停 Rx 帧:0
    RX CRC 错误:0
    RX 对齐/代码错误:0
    超大 RX 帧数:0
    RX Jabber:0
    欠大小(短) Rx 帧:0
    RX 片段:0
    RX 八位位组:0
    良好的 Tx 帧:107
    广播 Tx 帧:33
    多播 Tx 帧:74.
    暂停 Tx 帧:0
    延迟的 Tx 帧:0
    冲突:0
    单冲突 Tx 帧:0
    多个冲突 Tx 帧:0
    冲突过多:0
    晚期冲突:0
    TX 欠运转:0
    载波侦听错误:0
    TX 八位位组:16423
    RX + Tx 64字节帧:0
    RX + Tx 65-127八位位组帧:80
    RX + Tx 128-255八位位组帧:0
    RX + Tx 256-511八位位组帧:27
    RX + Tx 512-1023八位位组帧:0
    Rx + Tx 1024个八位位组帧:0
    净八位位组:16423
    帧溢出的 RX 起始:0
    帧的 RX 中间溢出:0
    RX DMA 超限:0
    RX DMA 通道0:head_enqueue:1
    RX DMA 通道0:tail_enqueue:127
    RX DMA 通道0:PAD_ENqueue: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:HED_ENqueue:107
    TX DMA 通道0:tail_enqueue:0
    TX DMA 通道0:PAD_ENqueue: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:8.
    TX DMA 通道0:empty_dequeue:107
    TX DMA 通道0:BUSY_DEqueue:0
    TX DMA 通道0:Good:Dequeue:107
    TX DMA 通道0:要求:0
    TX DMA 通道0:teardown_dequeue:0

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

    我已经在 pinmux 中检查了我的 DTS。 我发现默认引脚多路复用器用于 RGMII、我将其用于 RMII。

    我使用引脚多路复用工具进行 RMII 引脚多路复用配置并解决了问题。 我的 eth0现在可以运行、没有任何问题。

    但是、我仍然不知道为什么 uboot 的 eth0可以使用错误的配置运行。