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.
您好!
我们正在开发基于 AM335x 入门套件的定制板、该套件配备两个具有物理器件 DP83822的以太网端口。
与以太网配置相关的 DTS 文件部分如下:
cpsw_default:cpsw_default{
pinctrl-single、pins =<
/*从属设备1 */
AM33XX_IOPAD (0x90c、PIN_INPUT | MUX_MODE1)/*(H17) gmii1_crs.rmii1_crs_dv *
AM33XX_IOPAD (0x910、PIN_INPUT | MUX_MODE1)/*(J15) gmii1_rxer.rmii1_rxer *
AM33XX_IOPAD (0x914、PIN_OUTPUT | MUX_MODE1)/*(J16) gmii1_txen.rmii1_txen *
AM33XX_IOPAD (0x928、PIN_OUTPUT | MUX_MODE1)/*(K17) gmii1_txd0.rmii1_txd0 *
AM33XX_IOPAD (0x924、PIN_OUTPUT | MUX_MODE1)/*(K16) gmii1_txd1.rmii1_txd1 *
AM33XX_IOPAD (0x940、PIN_INPUT | MUX_MODE1)/*(M16) gmii1_rxd0.rmii1_rxd0 */
AM33XX_IOPAD (0x93c、PIN_INPUT | MUX_MODE1)/*(L15) gmii1_rxd1.rmii1_rxd1 *
AM33XX_IOPAD (0x944、PIN_INPUT | MUX_MODE0)/*(H18) rmii1_REFCLK/rmii1_REFCLK *
/*从机2 */
AM33XX_IOPAD (0x864、PIN_INPUT | MUX_MODE3)/*(U16) GPMC_A9.rmii2_crs_dv *
AM33XX_IOPAD (0x874、PIN_INPUT | MUX_MODE3)/*(U17) GPMC_WPN.rmii2_rxer *
AM33XX_IOPAD (0x840、PIN_OUTPUT | MUX_MODE3)/*(R13) GPMC_a0.rmii2_txen *
AM33XX_IOPAD (0x854、PIN_OUTPUT | MUX_MODE3)/*(V15) GPMC_A5.rmii2_txd0 *
AM33XX_IOPAD (0x850、PIN_OUTPUT | MUX_MODE3)/*(R14) GPMC_A4.rmii2_txd1 */
AM33XX_IOPAD (0x86c、PIN_INPUT | MUX_MODE3)/*(V17) GPMC_A11.rmii2_rxd0 *
AM33XX_IOPAD (0x868、PIN_INPUT | MUX_MODE3)/*(T16) GPMC_A10.rmii2_rxd1 *
AM33XX_IOPAD (0x908、PIN_INPUT | MUX_MODE1)/*(H16) gmii1_col.rmii2_REFCLK *
>;
};
DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
pinctrl-single、pins =<
/* MDIO */
AM33XX_IOPAD (0x948、PIN_INPUT | MUX_MODE0) /*(M17) MDIO_DATA.MDIO_DATA *
AM33XX_IOPAD (0x94c、PIN_OUTPUT | MUX_MODE0)/*(M18) MDIO_clk.MDIO_clk *
>;
};
…
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>;
状态="正常";
RESET-GPIO =<&GPIO1 18 GPIO_ACTIVE_LOW>;
RESET-DELAY-us =<2>; /* PHY 数据表中的状态最小值为1uS */
ethphy0:以太网 phy@1{
reg =<1>;
};
ethphy1:以太网 phy@2{
reg =<2>;
};
};
cpsw_emac0{&cpsw_emac0}
PHY-Handle =<ðphy0>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<1>;
};
cpsw_emac1{&cpsw_emac1}
PHY-Handle =<ðphy1>;
PHY-MODE ="RMII";
DUAL_EMAC_res_vlan =<2>;
};
phy_SEL{&
RMII-时钟-外部;
};
第一个端口(eth0)工作正常(DHCP 在该端口上也工作)、而第二个端口(eth1)不工作。
我们与网络监听器一起检查了是否允许再发送部件(对于 eth1)(在 ping 命令期间记录了 ARP 数据包请求和响应)、物理级别(RMII_rxd0和 RMII_rxd1)似乎正常(使用示波器进行检查)、因为我们看到数据在流动。 不管怎样、网络通信仍然不工作。
我们还验证了接收器件中的所有引脚连接是否正常:我们将引脚配置为输出 GPIO、并检查物理上的输出电平是否符合预期。
我们检查了两个端口的 DP83822寄存器配置、它们是正确的、两个端口的配置是相同的。
该问题已在不同的电路板上发现和调试、因此我们排除了一个故障单元。
以下是启动时的一些内核日志:
(笑声)
[1.007968] libphy:固定 MDIO 总线:探测
[1.078735] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
[1.086779] libphy: 4a101000.mdio:探测
[1.093311] DaVinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动器 TI DP83822 10/100Mbps PHY
[1.103566] DaVinci_MDIO 4a101000.MDIO:PHY[2]:器件4a101000.MDIO:02、驱动器 TI DP83822 10/100Mbps PHY
[1.114605] cpsw 4a100000.以太网:检测到的 MACID = 74:E1:82:8b:63:97
[1.121777] cpsw 4a100000.ethernet:初始化 cpsw ale 版本1.4
[1.128440] cpsw 4a100000.以太网:ALE 表大小1024
[1.134873] cpsw 4a100000.以太网:cpsw:检测到的 MACID = 74:E1:82:8b:63:99
(笑声)
[5.939999] net eth0:正在初始化 cpsw 版本1.12 (0)
[6.043537] TI DP83822 10/100Mbps PHY 4a101000.MDIO:01:连接的 PHY 驱动程序[TI DP83822 10/100Mbps PHY](MII_BUS:phy_addr=4a101000.MDIO:01、IRQ=POLL)
(笑声)
[15.439020] net eth1:正在初始化 cpsw 版本1.12 (0)
[ 15.563550] TI DP83822 10/100Mbps PHY 4a101000.MDIO:02:连接的 PHY 驱动程序[TI DP83822 10/100Mbps PHY](MII_BUS:phy_addr=4a101000.MDIO:02、IRQ=POLL)
(笑声)
将电缆连接到 eth1链路正确连接:
[18.730744] cpsw 4a100000.以太网 eth1:链路速率高达- 100Mbps/全速率-流控 Rx/TX
我们已将 eth1端口设置为静态 IP 配置并对我的 PC 运行 ping 命令、ifconfig 命令返回以下内容:
#ifconfig
eth0 Link encap:ethernet HWaddr 74:E1:82:8B:63:97
上广播多播 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)
中断:43
ETH1 链路连接:以太网 HWaddr 74:E1:82:8B:63:99
iNet addr:172.20.1.29 Bcast:0.0.0.0 掩码:255.255.0.0
运行多播 MTU:1500 公制:1的上广播
RX 数据包:0错误:0丢弃:0超限:0帧:0
TX 数据包:9错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:0 (0.0 B) TX 字节:576 (576.0 B)
LO 链路环接:本地环回
iNet addr:127.0.0.1 掩码:255.0.0.0
正在运行 MTU:65536 公制:1的上环回
RX 数据包:11错误:0丢弃:0超限:0帧:0
TX 数据包:11错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:1232 (1.2KiB) TX 字节:1232 (1.2KiB)
第二个端口的 ethtool 输出:
# ethtool eth1.
ETH1的设置:
支持的端口:[ TP MII]
支持的链路模式: 10BaseT/Half 10baseT/Full
100BaseT /半个100BaseT /全双工
支持的暂停帧使用:仅对称接收
支持自动协商:是
通告的链路模式: 10BaseT /半10baseT/全
100BaseT /半个100BaseT /全双工
广播的暂停帧使用:否
广播自协商:是
链接伙伴通告的链接模式: 10BaseT /半10baseT/全
100BaseT /半个100BaseT /全双工
链接伙伴通告的暂停帧使用:对称仅接收
连接方通告的自动协商:是
速度:100Mb/s
双工:全双工
端口:MII
PHYAD:2.
收发器:内部
自协商:开
支持唤醒:D
唤醒:D
当前消息级别:0x00000000 (0)
检测到链接:是
您能帮我们解决这个问题吗?
谢谢。
您好!
请完成此检查清单并将结果发布在以下位置: processors.wiki.ti.com/.../5x_CPSW
以下是检查清单结果(一些信息已发布):
只有 ETH1连接到以太网电缆(ETH2工作正常)。
[1.007968] libphy:固定 MDIO 总线:探测
[1.078735] DaVinci_MDIO 4a101000.MDIO:达芬奇 MDIO 修订版本1.6、总线频率1000000
[1.086779] libphy: 4a101000.mdio:探测
[1.093311] DaVinci_MDIO 4a101000.MDIO:PHY[1]:器件4a101000.MDIO:01、驱动器 TI DP83822 10/100Mbps PHY
[1.103566] DaVinci_MDIO 4a101000.MDIO:PHY[2]:器件4a101000.MDIO:02、驱动器 TI DP83822 10/100Mbps PHY
[1.114605] cpsw 4a100000.以太网:检测到的 MACID = 74:E1:82:8b:63:97
[1.121777] cpsw 4a100000.ethernet:初始化 cpsw ale 版本1.4
[1.128440] cpsw 4a100000.以太网:ALE 表大小1024
[1.134873] cpsw 4a100000.以太网:cpsw:检测到的 MACID = 74:E1:82:8b:63:99
(笑声)
[18.730744] cpsw 4a100000.以太网 eth1:链路速率高达- 100Mbps/全速率-流控 Rx/TX
ethtool 输出:
是否在链路的两端启用了自动协商? 是的
TI 器件与链路合作伙伴之间的链路速度是否匹配? 是的
链路双工模式是否正确? 是的
# ethtool eth1.
ETH1的设置:
支持的端口:[ TP MII]
支持的链路模式: 10BaseT/Half 10baseT/Full
100BaseT /半个100BaseT /全双工
支持的暂停帧使用:仅对称接收
支持自动协商:是
通告的链路模式: 10BaseT /半10baseT/全
100BaseT /半个100BaseT /全双工
广播的暂停帧使用:否
广播自协商:是
链接伙伴通告的链接模式: 10BaseT /半10baseT/全
100BaseT /半个100BaseT /全双工
链接伙伴通告的暂停帧使用:对称仅接收
连接方通告的自动协商:是
速度:100Mb/s
双工:全双工
端口:MII
PHYAD:2.
收发器:内部
自协商:开
支持唤醒:D
唤醒:D
当前消息级别:0x00000000 (0)
检测到链接:是
# ethtool -S eth1.
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 帧数:9.
广播 Tx 帧:9.
多播 Tx 帧:0
暂停 Tx 帧:0
延迟的 Tx 帧:0
冲突:0
单冲突 Tx 帧:0
多个冲突 Tx 帧:0
冲突过多:0
晚期冲突:0
TX 欠运转:0
载波侦听错误:0
TX 八位位组:612
RX + Tx 64字节帧:0
RX + Tx 65-127八位位组帧:9.
RX + Tx 128-255八位位组帧:0
Rx + Tx 256-511八位位组帧:0
RX + Tx 512-1023八位位组帧:0
Rx + Tx 1024个八位位组帧:0
净八位位组:612
帧溢出的 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:head_enqueue:9
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:9.
TX DMA 通道0:empty_dequeue:9
TX DMA 通道0:BUSY_DEqueue:0
TX DMA 通道0:Good:Dequeue:9
TX DMA 通道0:要求:0
TX DMA 通道0:teardown_dequeue:0
ifconfig 输出(eth1配置静态 IP):
# ifconfig
eth0 Link encap:ethernet HWaddr 74:E1:82:8B:63:97
上广播多播 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)
中断:43
ETH1 链路连接:以太网 HWaddr 74:E1:82:8B:63:99
iNet addr:172.20.1.29 Bcast:0.0.0.0 掩码:255.255.0.0
运行多播 MTU:1500 公制:1的上广播
RX 数据包:0错误:0丢弃:0超限:0帧:0
TX 数据包:9错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:0 (0.0 B) TX 字节:576 (576.0 B)
LO 链路环接:本地环回
iNet addr:127.0.0.1 掩码:255.0.0.0
正在运行 MTU:65536 公制:1的上环回
RX 数据包:11错误:0丢弃:0超限:0帧:0
TX 数据包:11错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:1232 (1.2KiB) TX 字节:1232 (1.2KiB)
Wireshark 中显示的用于对我的 PC 执行 ping 命令的 ARP 数据包:
1132054 8553.57796649 Texasins_8b:63:99 ARP 广播 64 谁拥有172.20.2.103? TELL 172.20.1.29 [以太网帧检查序列不正确]
1132055 8553.578010044 HewletP_60:43:23 ARP TexasIns_8b:63:99 42 172.20.2.103位于 AC:E2:D3:60:43:23
其他要求提供的信息:
Linux 源代码为 ti-processor-sdk-linux-4.14.y,来自 ti-processor-sdk-linux-am335x-evm-05.03.00.07
# uname -a
Linux 内置4.14.79 #1抢占 Thu Aug29 11:17:35 CEST 2019 armv7l GNU/Linux
文件系统是使用 buildroot 构建的、并已在 AM335x 入门套件上成功测试、两个 eth 端口均正常工作。
您好!
感谢您提供所需的信息、并仅连接 eth1来调试接口。 ethtool -S 查看 CPSW 接口的硬件统计信息。
正常 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 帧数:9.
广播 Tx 帧:9.
多播 Tx 帧:0
在 eth1上检测到链路,您将看到来自 eth1的广播包,硬件统计数据显示离开接口的包。 这表明 TX 路径良好。 但 RX 路径不是、这里会出现问题。 监听器显示正在将 ARP 响应发送到 AM335x、但在硬件级别看不到这些响应。 这将在 MAC 和连接器之间保留、前提是 PC 与您所查看的 ETH1端口之间具有直接连接。 引脚复用和 DT 条目看起来不错、但 RX 端没有数据包。
我认为下一步是通过连接器查看 RX 路径的硬件级别。 示波器是否显示 RX 上查看 RX 线路的任何流量、以查看其上是否有任何流量?
此致、
Schuyler
大家好、也许我们找到了解决方案。
请访问 http://www.ti.com/lit/ds/symlink/am3358.pdf
(10)器件版本1.0器件仅在选择 mode3时提供 MMC2_DAT7信号。 芯片修订版本2.0和更新的器件实现了另一个级别的引脚多路复用
选择 mode3时提供原始 MMC2_DAT7信号或 RMII2_CRS_DV 信号。 这种新级别的引脚复用通过 SMA2寄存器的位0来选择。 了解详情
详细信息请参阅 AM335x 技术参考手册的第1.2节。
我们的器件版本为 AM3354B (2.1)。
当我们读取 SMA2寄存器(例如 u-boot 中)时、返回的值为0x0。
将其设置为0x1并引导内核、eth1开始工作。
在您看来、我们认为该解决方案是正确的吗? 此设置是否合理?
是否有更好的方法来进行此配置(也许是引脚多路复用)?
谢谢、
此致。
Paolo
您好!
我目前不在办公室、我将于4日返回。 您能否附上显示 CPSW 和 PHY 之间连接的原理图片段?
此致、
Schuyler
您好!
我更愿意将原理图片段直接发送给您、而不是公开共享、因为它是一份公司文档。
这是可行的吗?
如果是、您能否提供向您发送文档的方式?
谢谢、
此致
Paolo
您好!
我认识到共享完整原理图的潜在敏感性。 我真的不需要整个原理图、因此我只需要一小部分来显示 SOC 和 PHY 之间的网络路径。 网络是否与页面隔离?
此致、
Schuyler
您好!
我相信您是正确的、我正在与开发人员核实、看看情况是否正确。 对我来说、至少看起来 eth1本质上必须设置该位。 由于您发现了错误、因此您可以将补丁发布到内核邮件列表、以获得解决问题的学分。 如果您选择这样做、请在此处附上帖子。
当我听到开发人员的反馈时、我将发布到此主题。
谢谢、此致、
Schuyler
您好!
对于您选择使用的 I/O 集、您的解决方案是正确的操作。 我不确定您在哪里应用了补丁、但 TI 建议您在 U-boot 中设置 SMA 寄存器、并让内核依赖于设置的继承。
此用例使用为 RMII2定义的第3个 I/O 集、如果使用前2个 I/O 集、则此 SMA 寄存器无关紧要、因为使用了不同的引脚多路复用器。
此致、
Schuyler