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.
工具与软件:
尊敬的 TI
我将启动在 MAC 和 PHY 之间使用 RMII 接口的定制电路板。
我们将为 RMII 使用外部50MHz 时钟。 原理图如下所示
TX 工作正常、但无法接收任何数据包。
(当我向 PC 发送 ping 时、PC 收到 ARP 请求并发送 ARP 回复。 但定制电路板无法接收任何数据包)
PC 中
15:35:03.580316 ARP ,请求 who-has jace-IdeCenter-Mini-01IRH8 tell 192.168.250.100,长度46
0x0000:0001 0800 0604 0001 0425 e8b1 3dc1 c0a8 .......... %..=...
0x0010:fa64 0000 0000 0000 c0a8 fa0b 0000 .d.d..........
0x0020:0000 0000 0000 0000 0000..........
15:35:03.580322 ARP, reply Jace-IdeCenter-Mini-01IRH8 IS-at C8:4D:44:23:Fe:e0 (oui Unknown), length 28.
0x0000:0001 0800 0604 0002 c84d 4423 fee0 c0a8 .......... MD#
0x0010:fa0b 0425 e8b1 3dc1 c0a8 fa64……%..=……d
在定制板中('0'接收包)
eth0 Link encap:以太网 HWaddr 04:25:E8:B1:3D:C1
INET 地址:192.168.254.100 Bcast:192.168.254.255掩码:255.255.255.0
inet6 addr:fe80:625:e8ff:fb1:3dc1/64范围:链接
运行多播 MTU:1500公制:1的上行广播
RX 数据包:0错误:0丢弃:0溢出:0帧:0
TX 数据包:547错误:0丢弃:0超限:0载波:0
冲突:0 txqueuelen:1000
RX 字节:0 (0.0 B) TX 字节:23682 (23.1 KiB)
当我们通过 osocope 检查 RMII1_RXD0 / RMII1_RXD1时,有一些信号,但在 Linux 中 RX 数据包计数为"0"。
您能否查看以下设备树中的 RMII 并提供一些建议?
main_rmii1_pins_default: main_rmii1-default-pins { pinctrl-single,pins = < AM62X_IOPAD(0x0130, PIN_INPUT, 1) /* (AE19) RGMII1_TXC.RMII1_CRS_DV */ AM62X_IOPAD(0x0148, PIN_INPUT, 1) /* (AD17) RGMII1_RXC.RMII1_REF_CLK */ AM62X_IOPAD(0x014c, PIN_INPUT, 1) /* (AB17) RGMII1_RD0.RMII1_RXD0 */ AM62X_IOPAD(0x0150, PIN_INPUT, 1) /* (AC17) RGMII1_RD1.RMII1_RXD1 */ AM62X_IOPAD(0x0144, PIN_INPUT, 1) /* (AE17) RGMII1_RX_CTL.RMII1_RX_ER */ AM62X_IOPAD(0x0134, PIN_INPUT, 1) /* (AE20) RGMII1_TD0.RMII1_TXD0 */ AM62X_IOPAD(0x0138, PIN_INPUT, 1) /* (AD20) RGMII1_TD1.RMII1_TXD1 */ AM62X_IOPAD(0x012c, PIN_INPUT, 1) /* (AD19) RGMII1_TX_CTL.RMII1_TX_EN */ >; } &cpsw_port1 { status = "okay"; phy-mode = "rmii"; phy-handle = <&lan8710>; }; &cpsw3g_mdio { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mdio0_pins_default>; ... lan8710: ethernet-phy@0 { status = "okay"; reg = <0x00>; max-speed = <100>; smsc,disable-energy-detect; };
BR
杰斯
尊敬的 TI
是否有此更新?
有什么我们可以尝试解决它吗?
BR
杰斯
尊敬的 TI:
我想分享更多关于这个问题的信息。
我们的问题与下面的问题非常相似。
我在尝试 ping 命令后捕获了"ethtool -S eth0"。
e2e.ti.com/.../3348.ethtool.log
日志中有 RX 数据包、但它不能在内核驱动程序中接收任何数据包。
--------------------------------------------------------
root@am62xx-EVM:~/test# ethtool -S eth0 | grep p0_rx
P0_Rx_GOOD_FRAMES:30
P0_Rx_BROADCAST_FRAMES:18
P0_Rx_MULTICAST_FRAMES:12.
P0_Rx_CRC_ERRORS:0
P0_RX_SLUSED_FRAMES:0
P0_rx_undersized_frames:0
P0_rx_octits:2136
P0_rx_bottom_fifo_drop:0
P0_Rx_PORT_MASK_DROP:0
P0_rx_top_fifo_drop:0
--------------------------------------------------------
我添加了一些如下所示的调试代码、并检查在 ping 测试期间是否发生了任何 RX 中断
diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 684c6e120..4c313280b 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -144,6 +144,11 @@ NETIF_MSG_IFUP | NETIF_MSG_PROBE | NETIF_MSG_IFDOWN | \ NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) +static int rx_irq_count = 0; + +module_param(rx_irq_count, int, 0660); +MODULE_PARM_DESC(rx_irq_count, "RX IRQ count"); + static void am65_cpsw_port_set_sl_mac(struct am65_cpsw_port *slave, const u8 *dev_addr) { @@ -1099,6 +1104,8 @@ static irqreturn_t am65_cpsw_nuss_rx_irq(int irq, void *dev_id) disable_irq_nosync(irq); napi_schedule(&common->napi_rx); + rx_irq_count++; + return IRQ_HANDLED; }
但 Ping 测试后、计数为0。
CAT /sys/module/ti_am65_cpsw_nuss/parameters/rx_irq_count
BR
杰斯
您好!
因为我上周不在办公室、所以很抱歉耽误了时间。 我明天会回复您的主题。
此致、
Schuyler
您好!
您将按照推荐的过程调试基本以太网流量。 如果您对此感兴趣、这里是指向该文档的链接。
由于您指出 MAC 上没有接收到任何数据包、这将解释0 Rx IRQ 计数。 引脚多路复用器看起来正确。 至少 TX 端正确、因为您看到的是来自电路板的 ARP 请求。 根据示波器检查、您在 RX 数据线上看到流量、并且未遇到任何 RX CRC 错误。 我唯一的建议是再次查看 MAC 和 PHY 之间的 RX 线路、并确保 RX 流量是正确的信号电平。 这仍然可能是 RX 路径上的引脚多路复用问题。 电路板上是否有其他以太网互联网接口?
此致、
Schuyler
您好、 Schuyler
请在下面查找 ARP req/rpy 的 TX、RX 信号
TX/RX
信号电平几乎相同。
在定制电路板中有 RGMII2接口、但我禁用它进行测试
(禁用表示我没有设置 RGMII2 PINMUX)
我还检查是否所有 RMII1引脚都配置了其他功能。
这些引脚仅针对 RMII1进行配置
(如果其中一个配置用于其他功能、则该引脚可能存在内核错误)
我有一个问题。
执行 ethtool -S eth0 | grep rx 时、我可以看到 p0_rx_***和 rx_***(p0_rx_good_FRAMES/rx_good_FRAMES )
Po_Rx_***和 Rx_**之间有何区别?
目前、 即使 ifconfig eth0中没有 RX 数据包、p0_rx_good_FRAMES 也会增加。
此外、正如我在本线程开头所提到的、E2E 中存在多个 RMII 问题。
RMII 问题的根本原因是什么?
我们的硬件工程师是否可以查看 RMII 线的 PCB 指南?
BR
杰斯