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.

[参考译文] AM625:RMII RX 不工作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1444455/am625-rmii-rx-does-not-work

器件型号:AM625

工具与软件:

尊敬的 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 并提供一些建议?

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

BR

杰斯

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

    尊敬的 TI

    是否有此更新?

    有什么我们可以尝试解决它吗?

    BR

    杰斯

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

    尊敬的 TI:

    我想分享更多关于这个问题的信息。

    我们的问题与下面的问题非常相似。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1278802/am623-re-open-cannot-establish-ethernet-rmii-data-communication-tx-rx-between-mac-and-phy

    我在尝试 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 中断

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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++;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    但 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

    杰斯