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.

[参考译文] TDA4VM:两个 TDA4 SOM 之间的 CPSW2G 无 PHY (Linux)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1000483/tda4vm-cpsw2g-phy-less-between-two-tda4-soms-linux

器件型号:TDA4VM
Thread 中讨论的其他器件:SysConfig

我们的定制设计使用缓冲芯片和板对板连接器将两个 TDA4 SOM 的 MCU_RGMII1接口直接连接在一起。 信号交叉传输(SOM1 TX <-> SOM2 RX)、我已将 Linux 配置为固定链路模式:

Fullscreen
1
2
3
4
5
6
7
&cpsw_port1 {
phy-mode = "rgmii";
fixed-link {
speed = <100>;
full-duplex;
};
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

并确认了正确的引脚多路复用:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mcu_cpsw_pins_default: mcu_cpsw_pins_default {
pinctrl-single,pins = <
J721E_WKUP_IOPAD(0x0058, PIN_OUTPUT | DRV_STR_1, 0) /* MCU_RGMII1_TX_CTL */
J721E_WKUP_IOPAD(0x005c, PIN_INPUT, 0) /* MCU_RGMII1_RX_CTL */
J721E_WKUP_IOPAD(0x0060, PIN_OUTPUT | DRV_STR_1, 0) /* MCU_RGMII1_TD3 */
J721E_WKUP_IOPAD(0x0064, PIN_OUTPUT | DRV_STR_1, 0) /* MCU_RGMII1_TD2 */
J721E_WKUP_IOPAD(0x0068, PIN_OUTPUT | DRV_STR_1, 0) /* MCU_RGMII1_TD1 */
J721E_WKUP_IOPAD(0x006c, PIN_OUTPUT | DRV_STR_1, 0) /* MCU_RGMII1_TD0 */
J721E_WKUP_IOPAD(0x0078, PIN_INPUT, 0) /* MCU_RGMII1_RD3 */
J721E_WKUP_IOPAD(0x007c, PIN_INPUT, 0) /* MCU_RGMII1_RD2 */
J721E_WKUP_IOPAD(0x0080, PIN_INPUT, 0) /* MCU_RGMII1_RD1 */
J721E_WKUP_IOPAD(0x0084, PIN_INPUT, 0) /* MCU_RGMII1_RD0 */
J721E_WKUP_IOPAD(0x0070, PIN_INPUT | DRV_STR_1, 0) /* MCU_RGMII1_TXC */
J721E_WKUP_IOPAD(0x0074, PIN_INPUT, 0) /* MCU_RGMII1_RXC */
>;
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ethtool 的输出显示接口已启动并正在尝试发送、但未接收(或甚至丢弃)来自远程端的数据包:(两个 SOM 的结果相同)

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
NIC statistics:
p0_rx_good_frames: 47
p0_rx_broadcast_frames: 23
p0_rx_multicast_frames: 24
p0_rx_crc_errors: 0
p0_rx_oversized_frames: 0
p0_rx_undersized_frames: 0
p0_ale_drop: 0
p0_ale_overrun_drop: 0
p0_rx_octets: 10870
p0_tx_good_frames: 0
p0_tx_broadcast_frames: 0
p0_tx_multicast_frames: 0
p0_tx_octets: 0
p0_tx_64B_frames: 2
p0_tx_65_to_127B_frames: 14
p0_tx_128_to_255B_frames: 8
p0_tx_256_to_511B_frames: 23
p0_tx_512_to_1023B_frames: 0
p0_tx_1024B_frames: 0
p0_net_octets: 10870
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

和一些相关的 CPSW 寄存器:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CTRL_MMR0 MCU_ENET_CTRL
0x40f04040 = 0x00000002
CPSW0_NUSS RGMII STATUS
0x46000018 = 0x00000000
CPSW0_NUSS PN_MAC_CONTROL
0x46022330 = 0x00000021
CPSW0_NUSS PN_MAC_STATUS
0x46022334 = 0xF0000008
STAT_0 (RXGOOD, TXGOOD)
0x4603a000 = 0x00000036
0x4603a034 = 0x00000000
STAT_1 (RXGOOD, TXGOOD)
0x4603a200 = 0x00000000
0x4603a234 = 0x00000036
STAT_0 (RXGOOD, TXGOOD)
0x4603a000 = 0x00000036
0x4603a034 = 0x00000000
STAT_1 (RXGOOD, TXGOOD)
0x4603a200 = 0x00000000
0x4603a234 = 0x00000036
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

除上述外、我还通过示波器确认一个 SOM 的 RXC 输入正在获得远程 SOM 的 TXC 输出、并且时钟是上述配置的预期值:100Mbps -> 25MHz TXC。 (理想情况下、我们需要1G、但我使用的是100M、因此我可以在办公桌上使用我们的廉价示波器之一)

我不确定是什么问题、尽管我对寄存器 CPSW_SS_RGMII_STATUS_REG (0x46000018)为0x0有点担心?

我接下来应该在哪里调查?

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

    您好!

    固定链接补丁看起来正确。

    请告诉我

    1.您使用的是哪个 SDK?

    2.您能否共享 Uboot 和 Linux 的 DT 更改(作为补丁)。

    3.您是否使用 TI 的 SysConfig 工具进行引脚多路复用?

    4.如果您的电路板设计在 TI 内部得到了审查?

    此致

    葡萄园

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

    1) PSDK 7.0 (Linux 5.4.40)

    2) 2)我将看到我是否可以从 Linux DT 中清除客户信息。 我们在 Uboot 下不需要此功能:它是否会对 Linux 产生任何影响?

    3)是的、我们确实做到了

    4) 4)我不知道它是否是或不是

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

    我们在硬件中发现了一个小错误、现在已解决(总线隔离芯片是削波信号)、但链路仍然没有成功。

    不过、有一个小的变化、似乎我得到了稳定的 "IET Receive SMD"错误流。 这会使我感到困惑、因为在链接的两端似乎都没有配置 IET? (CPSW_CONTRAL_REG 0x0C020004 = 0xE00E、位17未设置)

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

     可以忽略"IET"统计信息、它在非 IET 模式时未被禁用。 它将在未来的器件中修复。

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

    运行 RGMII 的时钟速率是多少?

    我假设您有

    RXC <-远程 TXC

    RXD <-远程 TXD

    RX_CTL <-远程 TX_CTL

    TXC ->远程 RXC

    TXD ->远程 RXD

    TX_CTL ->远程 RX_CTL

    1G 模式的时钟频率为125MHz

     Enet_Pn_Mac_Control -(0x330 + 0x1000 + 0x1000n)寄存器值是多少?

    这是 J7ES 器件吗?

    哪些端口是直接连接的?

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

    2个 J7ES 器件、将 MCU_CPSW0 (也称为 CPSW2G)的外部端口彼此相连。 信号映射与您在上面写的内容匹配  

    两侧的 Pn_MAC_CONTROL 均为0x21。 下面是我当前正在监控的寄存器:

    "左"电路板:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CTRL_MMR0 MCU_ENET_CTRL
    0x40f04040 = 0x00000002
    CPSW0_NUSS RGMII STATUS
    0x46000018 = 0x00000000
    CPSW0_NUSS PN_MAC_CONTROL
    0x46022330 = 0x00000021
    CPSW0_NUSS PN_MAC_STATUS
    0x46022334 = 0xF0000008
    STAT_0 (RXGOOD, TXGOOD)
    0x4603a000 = 0x0000002A
    0x4603a034 = 0x00000000
    STAT_1 (RXGOOD, TXGOOD)
    0x4603a200 = 0x00000000
    0x4603a234 = 0x0000002A
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    "右侧"板:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CTRL_MMR0 MCU_ENET_CTRL
    0x40f04040 = 0x00000002
    CPSW0_NUSS RGMII STATUS
    0x46000018 = 0x00000000
    CPSW0_NUSS PN_MAC_CONTROL
    0x46022330 = 0x00000021
    CPSW0_NUSS PN_MAC_STATUS
    0x46022334 = 0xF0000008
    CPSW0_NUSS ALE PORTCTL0_y
    0x4603e040 = 0x00000013
    0x4603e044 = 0x00000813
    STAT_0 (RXGOOD, TXGOOD)
    0x4603a000 = 0x00000029
    0x4603a034 = 0x00000000
    STAT_1 (RXGOOD, TXGOOD)
    0x4603a200 = 0x00000000
    0x4603a234 = 0x00000029
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    Josh、您好!

    尽管两个电路板的 CPSW_PN_MAC_CONTRAL_REG 的位7 (千兆位模式)未设置、但寄存器值看起来正常。 我不知道这会产生什么影响。

    您是否尝试连接示波器并查看信号?

    此致

    葡萄园

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

    抱歉、我忘记了两侧速度限制为100Mbit、这样我就可以在办公桌上使用示波器(50MHz、1GS/s)。 在该速度下、我已经看到了单个信号和时钟(100Mbit 时为25MHz)、但我目前无法一次观察到多个信号。

    这是1Gbit 时"左"的寄存器转储:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CTRL_MMR0 MCU_ENET_CTRL
    0x40f04040 = 0x00000002
    CPSW0_NUSS RGMII STATUS
    0x46000018 = 0x00000000
    CPSW0_NUSS PN_MAC_CONTROL
    0x46022330 = 0x000000A1
    CPSW0_NUSS PN_MAC_STATUS
    0x46022334 = 0xF0000018
    STAT_0 (RXGOOD, TXGOOD)
    0x4603a000 = 0x00000023
    0x4603a034 = 0x00000000
    STAT_1 (RXGOOD, TXGOOD)
    0x4603a200 = 0x00000000
    0x4603a234 = 0x00000023
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    和"正确":

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CTRL_MMR0 MCU_ENET_CTRL
    0x40f04040 = 0x00000002
    CPSW0_NUSS RGMII STATUS
    0x46000018 = 0x00000000
    CPSW0_NUSS PN_MAC_CONTROL
    0x46022330 = 0x000000A1
    CPSW0_NUSS PN_MAC_STATUS
    0x46022334 = 0xF0000018
    CPSW0_NUSS ALE PORTCTL0_y
    0x4603e040 = 0x00000013
    0x4603e044 = 0x00000813
    STAT_0 (RXGOOD, TXGOOD)
    0x4603a000 = 0x0000001E
    0x4603a034 = 0x00000000
    STAT_1 (RXGOOD, TXGOOD)
    0x4603a200 = 0x00000000
    0x4603a234 = 0x0000001E
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    对于 "RGMII-id"与"RGMII"、我不能100%清楚:对于无 PHY 模式、我应该使用内部延迟模式(RGMII-id)是正确的?

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

    这些值与 EVM 匹配

    >对于无 PHY 模式,是否应该使用内部延迟模式(RGMII-id)?

    是的、没错。

    我将在内部对此进行回顾、但在顶层、这看起来是正确的。

    下一步是检查所有线路和时钟的示波器输出。 硬件设计是否已经过 TI 内部人员的审查?

    此致

    葡萄园

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

    这在10或100Mb 时不起作用有什么原因吗? (以便更轻松地确定信号完整性 问题的范围和帮助排除这些问题)

    我不认为这部分设计已经过 TI 的审核。

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

    不能、您也应该能够在100米处进行检查。

    此致

    葡萄园

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

    由于您处于强制模式、因此无法在10Mbps 模式下运行、因此只有1Gbps/100Mbps 可通过 MAC_CONTROL 中的 Gig 位使用。

    0x000000A1的 Pn_MAC_CONTROL 是千兆模式、需要125MHz 时钟、IP 内部需要250MHz 时钟。

    对于100Mbps 模式、应该为0x00000021。

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

    为什么将 TXC 引脚定义为输入?

    "J721E_WKUP_IOPAD (0x0070、PIN_INPUT | DRV_STR_1、0)/* MCU_RGMII1_TXC */"

    我们希望 TXC 引脚成为输出。

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

    昨天的调试结论:

    时钟看起来正确。

    2. Rx 和 Tx 引脚与数据切换

    3.在接口上接收到数据包(分级计数器正在上升),但它们不会被视为正常帧,表明存在某种错误。

    SMD 错误与正在接收的数据包相关。

    5.需要查看 MAC 2 MAC 原理图以排除任何问题。

    Josh、您好!

    您能回答 Denis 关于 pinmux 的问题吗?

    此致

    葡萄园

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

    Pinmux:我之前注意到过奇怪的 pinmux、但在我将其作为一个问题加以考虑的时候:PIN_INPUT 解析为 INPUT_EN|PULL_DISABLE ->(1<<18|1<16)、这意味 着 TX_DIS (1<21)为0。 上述内容是通过 SysConfig 工具生成的、我将测试将其更改为 PIN_OUTPUT (PULL_DISABLE -> 1<<16)。

    10Mbps:明白了这一点、我将 只使用100Mbit 或1Gbit 继续进行调试。

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

    100Mbit 的 TXC 信号看起来非常糟糕、我使用驱动强度无法对其产生太大的影响...

    灰色:在 FET 开关之前、在"右侧"电路板的 TXC 上
    绿色:"左"电路板的 RXC 位于 SOM 至基板连接器(J7 SOM 侧)

    TXC vs RXC

    青色: "左侧"电路板的 RXC、DRV=0
    紫色:"左板的 RXC、DRV=3

    DRV=0 vs DRV=1

    我担心我们的迹线太长,RGMII 无法遍历:-(

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

    请注意、DRV=3实际上是保留的。  最强的驱动器应该是 DRV=1。

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

    我同意紫色显示的波形似乎受到负载的影响。

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

    我们重新设计了两个 J7 SOM 中的一个、将22 Ω 电阻器替换为0 Ω、它清理了远端接收到的信号、但仍然没有接收到任何数据包。  在传递任何数据包之前、RGMII 是否需要在两个方向上运行? 或者一个方向是否足够?

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

    只要您已在全双工模式下对接口进行编程、RGMII 就可以在单个方向上运行。

    您是否验证了 RXDV 和 RXD[3:0]线路的连接是否分别正确连接到 TXEN 和 TXD[3:0]?

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

    我终于回到了这个问题:我们似乎在两个载板之间的引脚分配上出现了错误,导致   TD 和 RD 方向上出现了3->0、2->1、1->2、0->3。 我不想有办法重新映射 RGMII 接收器中的位?

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

    这确实会导致接收问题!

    不能在内部交换引脚。

x 出现错误。请重试或与管理员联系。