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:[DRA821U]主 CPSW RGMII 问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1427207/tda4vm-dra821u-main-cpsw-rgmii-issue

器件型号:TDA4VM
主题中讨论的其他器件:DRA821UDRA821

工具与软件:

尊敬的 TI

我们使用 J7200 (DRA821U)制造了新的测试板

我将 PHY 连接到 CPSW5G 端口1 (RGMII1)

| CPSW5G     端口1    |-- RGMII --| TI PHY (DP83867)  |

我还按照如下所示更改了 DTS

	main_mdio0_pins_default: main_mdio0-default-pins {
		pinctrl-single,pins = <
			J721E_IOPAD(0xa8, PIN_OUTPUT, 5) /* (W19) UART8_TXD.MDIO0_MDC */
			J721E_IOPAD(0xa4, PIN_INPUT, 5) /* (W14) UART8_RXD.MDIO0_MDIO */
		>;
	};
	main_rgmii1_pins_default: main_rgmii1-default-pins {
		pinctrl-single,pins = <
			J721E_IOPAD(0x4, PIN_INPUT, 4) /* (AA17) RMII1_RXD0.RGMII1_RD0 */
			J721E_IOPAD(0x8, PIN_INPUT, 4) /* (Y15) RMII1_RXD1.RGMII1_RD1 */
			J721E_IOPAD(0xc, PIN_INPUT, 4) /* (AA20) RMII1_CRS_DV.RGMII1_RD2 */
			J721E_IOPAD(0x10, PIN_INPUT, 4) /* (Y17) RMII1_RX_ER.RGMII1_RD3 */
			J721E_IOPAD(0x1c, PIN_INPUT, 4) /* (AA19) RMII1_TXD1.RGMII1_RXC */
			J721E_IOPAD(0x14, PIN_INPUT, 4) /* (Y16) RMII1_TXD0.RGMII1_RX_CTL */
			J721E_IOPAD(0x30, PIN_OUTPUT, 4) /* (Y18) MCAN2_TX.RGMII1_TD0 */
			J721E_IOPAD(0x34, PIN_OUTPUT, 4) /* (Y19) MCAN2_RX.RGMII1_TD1 */
			J721E_IOPAD(0x38, PIN_OUTPUT, 4) /* (Y21) MCAN3_TX.RGMII1_TD2 */
			J721E_IOPAD(0x3c, PIN_OUTPUT, 4) /* (W16) MCAN3_RX.RGMII1_TD3 */
			J721E_IOPAD(0x44, PIN_OUTPUT, 4) /* (Y20) MCAN4_RX.RGMII1_TXC */
			J721E_IOPAD(0x40, PIN_OUTPUT, 4) /* (W15) MCAN4_TX.RGMII1_TX_CTL */
		>;
	};

&cpsw0 { 
	pinctrl-names = "default"; 
	pinctrl-0 = <&main_rgmii1_pins_default>; 

	status = "okay";
}; 

&cpsw5g_mdio { 

	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mdio0_pins_default>;
	
	#address-cells = <1>;
	#size-cells = <0>;
	
	main_phy0: ethernet-phy@0 { 
		reg = <0>; 
		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; 
		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; 
		ti,min-output-impedance;
	};
}; 

&cpsw0_port1 { 
	status = "okay";
	
	phy-mode = "rgmii-rxid"; 
	phy-handle = <&main_phy0>;
	mac-address = [00 00 00 00 00 00];
	phys = <&cpsw0_phy_gmii_sel 1>; 
};

它会生成内核严重错误

   14.222084] NETDEV WATCHDOG: eth0 (am65-cpsw-nuss): transmit queue 0 timed out
[   14.229333] WARNING: CPU: 1 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x214/0x220
[   14.229359] Modules linked in: rpmsg_client_sample rpmsg_ctrl rpmsg_char virtio_rpmsg_bus rpmsg_ns ti_am335x_adc cdns3 kfifo_buf cdns_usb_common spidev crct10dif_ce phy_can_transceiver hbmc_am654 hyperbus_core ti_k3_r5_remoteproc k3_j72xx_bandgap ti_am335x_tscadc sa2ul pci_j721e_ep pcie_cadence_ep pci_j721e_host pcie_cadence_host pci_j721e cdns3_ti pcie_cadence rti_wdt spi_omap2_mcspi optee_rng rng_core cfg80211 rfkill fuse drm drm_panel_orientation_quirks ipv6
[   14.229456] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.1.80-gcfac743d18fc-dirty #28
[   14.229465] Hardware name: PKAA ACU board (DT)
[   14.229468] IRQ stage: Linux
[   14.229473] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   14.229482] pc : dev_watchdog+0x214/0x220
[   14.229490] lr : dev_watchdog+0x214/0x220
[   14.229497] sp : ffff80000afabb30
[   14.229500] x29: ffff80000afabb30 x28: 0000000000000005 x27: ffff800008a1e170
[   14.229513] x26: ffff80000ad27dc0 x25: ffff00087f7b7f68 x24: ffff80000afabc00
[   14.229524] x23: ffff80000ad27000 x22: 0000000000000000 x21: ffff000801b8239c
[   14.229535] x20: ffff000801b82000 x19: ffff000801b82448 x18: ffffffffffffffff
[   14.229545] x17: 6f2064656d697420 x16: 3020657565757120 x15: 74696d736e617274
[   14.229556] x14: 203a297373756e2d x13: ffff80000ad41870 x12: 00000000000005e8
[   14.229566] x11: 00000000000001f8 x10: ffff80000ad99870 x9 : 0000000000000400
[   14.229577] x8 : 0000000000000000 x7 : ffff0008085ba3e8 x6 : 000000004b1717a6
[   14.229587] x5 : 0000000000000003 x4 : ffff800874bf1000 x3 : ffff800874bf1000
[   14.229597] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0008000f6580
[   14.229608] Call trace:
[   14.229612]  dev_watchdog+0x214/0x220
[   14.229619]  call_timer_fn.constprop.0+0x24/0x80
[   14.229632]  __run_timers.part.0+0x1f0/0x234
[   14.229641]  run_timer_softirq+0x3c/0x7c
[   14.229650]  _stext+0x124/0x27c
[   14.229657]  __irq_exit_rcu+0xb4/0xe0
[   14.229666]  irq_exit+0x10/0x20
[   14.229673]  arch_do_IRQ_pipelined+0x48/0x70
[   14.229682]  sync_current_irq_stage+0x168/0x270
[   14.229696]  __inband_irq_enable+0x78/0x8c
[   14.229709]  inband_irq_enable+0x10/0x20
[   14.229714]  arch_cpu_idle+0x1c/0x2c
[   14.229722]  default_idle_call+0x50/0x6c
[   14.229735]  do_idle+0x23c/0x2b0
[   14.229747]  cpu_startup_entry+0x34/0x40
[   14.229758]  secondary_start_kernel+0x138/0x164
[   14.229769]  __secondary_switched+0xb0/0xb4
[   14.229777] ---[ end trace 0000000000000000 ]---

下面以连续方式显示内核消息。

am65-cpsw-nuss c000000.ethernet eth0:TxQ:0 DRV_XOFF:0 tmo:37812 dql_avail:-90 free_desc:515

您能检查一下并提供一些有关如何调试的建议吗?

仅供参考、我使用"ti-processor-sdk-linux-j7200-evm-09_02_00_04"

BR

杰斯

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

    您好!

    我可以知道您使用的引导流程吗?

    此外、确认 MCU2_0上未加载 ETHFW?

    如果您使用的是经过 SBL 优化的引导流程、其中不存在 u-boot。 请参阅 常见问题解答 [如何在 SBL 优化引导流程中解决 Linux 中的 NETDEV 看门狗错误]、并按照建议的修复方法进行操作并确认一次。

    此致、
    Sudheer

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

    你(们)好、Sudheer。

    我不知道我们的板的启动流程。

    我们的参考是 J2700X SOM 板、它将使用以下引导二进制文件。

    - tiboot3.bin、 tispl.bin、u-boot.img  

    因此、我似乎没有使用经过 SLB 优化的引导流程、因为它使用 u-boot。

    我不清楚什么是 ETHFW 和 MCU2_0。

    您能添加更多关于它们的信息吗?

    BR

    杰斯

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

    您好!

    [报价用户 id="606047" url="~/support/processors-group/processors/f/processors-forum/1427207/tda4vm-dra821u-main-cpsw-rgmii-issue/5471595 #5471595"]

    我们的参考是 J2700X SOM 板、它将使用以下引导二进制文件。

    - tiboot3.bin、 tispl.bin、u-boot.img  

    [报价]

    您能否 检查 Linux 终端日志、如果您观察到 u-boot 打印、则 u-boot 存在。

    并且我不清楚什么是 ETHFW 和 MCU2_0.

    默认 CPSW5G 由在 MCU2_0上运行的 ETHFW 应用启用。 它会在 QSGMII 模式下配置。
    确保 MCU2_0上加载的固件二进制文件不是 ETHFW 映像、如果 ETHFW、则将 IPC 回显测试二进制文件软链接到 MCU2_0 (main_r5f0_0)。

    默认情况下、ETHFW 二进制文件可以软链接到 MCU2_0映像。 通过运行进行检查 "#ls -l /lib/firmware "  启动 EVM 后所需的全部设置。
    请参考以下内容。


    此致、
    Sudheer

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

    你(们)好、Sudheer。

    我检查过、main_r5f0二进制文件链接如下

    ls -l /lib/firmware
    lrwxrwxrwx 1根根10月21日65 2024 j7200-main-r5f0_0-FW ->/lib/firmware/ti-eth/j7200/app_remoteswitchcfg_server_strip.xer5f
    lrwxrwxrwx 1根根2012年10月21日72日 j7200-main-r5f0_0-fw-sec ->/lib/firmware/ti-eth/j7200/app_remoteswitchcfg_server_strip.xer5f.signed

    我删除了链路并再次引导、但如下所示初始化以太网端口失败。

    [    1.658490] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 5 quirks:00000000
    [    1.671261] am65-cpsw-nuss c000000.ethernet: Use random MAC address
    [    1.677524] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [    1.684644] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [    1.690969] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
    [    2.326716] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 5 quirks:00000000
    [    2.339714] am65-cpsw-nuss c000000.ethernet: Use random MAC address
    [    2.345996] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4
    [    2.353148] am65-cpsw-nuss c000000.ethernet: ALE Table size 512
    [    2.359672] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
    [    2.370672] am65-cpsw-nuss c000000.ethernet: set new flow-id-base 60
    [    5.170256] am65-cpsw-nuss c000000.ethernet: PSI-L request err -22
    [    5.196431] am65-cpsw-nuss c000000.ethernet eth0: PHY [c000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [    5.223209] am65-cpsw-nuss c000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [    9.316771] am65-cpsw-nuss c000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/t

    我还在 EVM 中添加了使用 MCU_CPWS 的 am65-cpsw-nuss。

    [    1.354106] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 2 quirks:00000000
    [    1.366974] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
    [    1.374183] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
    [    1.384647] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:500000000, add_val:1 pps:1
    [    2.091073] am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA02102, cpsw version 0x6BA82102 Ports: 2 quirks:00000000
    [    2.103944] am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 1.4
    [    2.111154] am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
    [    2.121672] am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:500000000, add_val:1 pps:1
    [    2.133162] am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
    [    5.640770] am65-cpsw-nuss 46000000.ethernet eth0: PHY [46000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [    5.664887] am65-cpsw-nuss 46000000.ethernet eth0: configuring for phy/rgmii-rxid link mode

    主要区别在于我的板报告"PSI-L Request err -22"

    我还尝试通过禁用 CONFIG_TI_AM65_CPSW_NUSS 来在 uboot 中禁用 MCU_CPWS 初始化、 但也失败了。

    请在下面找到 uboot 日志。

    U-Boot 2023.04-g6813f29e-dirty (Oct 21 2024 - 16:59:03 +0900)
    
    SoC:   J7200 SR2.0 GP
    Model: Texas Instruments K3 J7200 SoC
    DRAM:  2 GiB (effective 4 GiB)
    Core:  80 devices, 31 uclasses, devicetree: separate
    Flash: 0 Bytes
    MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
    Loading Environment from MMC... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Net:   No ethernet found.
    Hit any key to stop autoboot:  0

    BR

    杰斯

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

    你(们)好、Sudheer。

    我发现 R5固件也加载在 uboot 中。 (在 uboot 中运行 boot_rprocs 命令)

    在删除以太网端口后、我终于成功地对其进行了正确初始化。

    感谢您的支持

    BR

    杰斯

     

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

    你(们)好、Sudheer。

    甚至以太网端口配置没有错误。 Ping 无法正常工作。

    ifconfig 中有 RX/TX 数据包、但没有通过 ping 命令进行响应。

    BR

    杰斯

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

    您好!

    [报价用户 id="606047" url="~/support/processors-group/processors/f/processors-forum/1427207/tda4vm-dra821u-main-cpsw-rgmii-issue/5472046 #5472046"]

    甚至以太网端口配置没有错误。 Ping 无法正常工作。

    ifconfig 中有 RX/TX 数据包、但没有通过 ping 命令进行响应。

    [报价]

    RGMII 中的 Tx 和 RX 延迟可能会出现问题。

    请参阅 常见问题解答 [如何配置 RGMII 延迟]、并与您的硬件团队核实硬件 原理图中是否考虑了 RGMII 延迟? 并配置" PHY 模式" 信号解调。

    此致、
    Sudheer

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

    你(们)好、Sudheer。

    当我们通过 tcpdump 检查 RX/TX 数据包时、它可以接收 Rx 数据包。 但 TX 数据包 传输不正确

    请 在下面的测试板中找到测试条件和 tcpdump cature。

    -测试板(IP 地址:192.168.250.100. MAC: 7A:2E:D6:C3:2E:C4)

    - EVM (IP 地址: 192.168.250.101)

    ----------------------------------------------------------------------------------------------------------------------------

    7:44:09.022596 ARP、请求 who-has j7200-evm tell 192.168.254.101、长度46 <<=正确接收到数据包
    17:44:09.022638 ARP、reply j7200-evm IS-at 7a:2e:d6:c3:2e:c4 (oui 未知)、长度28 <<=尝试发送响应数据包

    -但 EVM 无法接收 ARP 回复。

    -----------------------------------------------------------------------------------------------------------------------------

    当我们通过 ethtool 检查 eth0的状态时、它设置正确、如下所示。

    root@j7200-evm:~# ethtool eth0
    Settings for eth0:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Supported pause frame use: Symmetric
            Supports auto-negotiation: Yes
            Supported FEC modes: Not reported
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Full
            Advertised pause frame use: Symmetric
            Advertised auto-negotiation: Yes
            Advertised FEC modes: Not reported
            Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                                 100baseT/Half 100baseT/Full
                                                 1000baseT/Full
            Link partner advertised pause frame use: Symmetric
            Link partner advertised auto-negotiation: Yes
            Link partner advertised FEC modes: Not reported
            Speed: 1000Mb/s
            Duplex: Full
            Auto-negotiation: on
            master-slave cfg: preferred slave
            master-slave status: slave
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: external
            MDI-X: Unknown
            Supports Wake-on: ubgs
            Wake-on: d
            SecureOn password: 00:00:00:00:00:00
            Current message level: 0x000020f7 (8439)
                                   drv probe link ifdown ifup rx_err tx_err hw

    当我们检查 RGMII1_TXC 时、它不是125MHz。 它是119Mhz ~ 121MHz

    (通过删除串行寄存器将 RGMII1_TXC 与 PHY 分离后、我们检查了 RGMII1_TXC。)

    RGMII1_RXC 是从 PHY 发送的125MHz。

    这似乎是它只能接收 Rx 数据包的主要原因。

    有什么我应该检查的?

    BR

    杰斯

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

    您好!

    您是否尝试过 phy-mode 作为"rgmi-id"?

    引导电路板后、您能否共享以下命令的日志?
    #k3conf 转储时钟19.

    检查日志是否 RGMII_MHz_250_CLK 为250000000Hz。 如果是、请检查您的原理图是否存在添加到通道以降低频率的任何电容。

    请与 TI EVM 原理图进行比较以供参考。

    此致、
    Sudheer

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

    你(们)好、Sudheer

    请在下面找到我的答案。

    您是否尝试过 phy-mode 作为"rgmi-id"?

    -我试过 RGMII-id,但没有效果。

    请在下方查找 k3conf.log

    e2e.ti.com/.../k3conf.log

    对于我检查的情况、  RGMII_MHz_250_CLK 为250000000Hz

    |  19   |  10  | DEV_CPSW0_RGMII_MHz_250_CLK                        | CLK_STATE_READY | 250000000    |

    BR

    杰斯

     

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

    您好!

    [报价用户 id="606047" url="~/support/processors-group/processors/f/processors-forum/1427207/tda4vm-dra821u-main-cpsw-rgmii-issue/5474722 #5474722"]

    您是否尝试过 phy-mode 作为"rgmi-id"?

    -我试过 RGMII-id,但没有效果。

    [报价]

    好的。 感谢您的确认。

    [报价用户 id="606047" url="~/support/processors-group/processors/f/processors-forum/1427207/tda4vm-dra821u-main-cpsw-rgmii-issue/5474722 #5474722"]

    对于我检查的情况、  RGMII_MHz_250_CLK 为250000000Hz

    |  19   |  10  | DEV_CPSW0_RGMII_MHz_250_CLK                        | CLK_STATE_READY | 250000000    |

    [报价]

    是的、好像250MHz 时钟被提供给了 RGMII。 H/W 将在 RGMII TxC 线路上输出125MHz 时钟。

    您能否确认 RGMII 接口原理图、请参阅 ti DRA821页面中的 TI EVM 设计文件(原理图)作为参考。
    https://www.ti.com/tool/J7200XSOMXEVM

    此致、
    Sudheer