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.

[参考译文] AM62P:外部交换机连接问题

Guru**** 2914220 points

Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1647576/am62p-external-switch-connectivity-problems

部件号: AM62P

您好、专家、

我们的定制板上有一个 AM62P。 在 CPSW 端口 2 上、我们通过 RMII 从 Microchip 的 LAN9354 连接了一个外部以太网交换机。 它通过 MDIO 进行管理。 下图描述了我们的设置:

image.png

如果我省略 DSA 驱动程序、该开关在 U-Boot 和 Linux 中都能正常工作。 然后、它将作为具有两个端口的普通非托管交换机运行。

当我在 DTS 中添加 DSA 驱动程序片段时、芯片似乎被正确探测、但我在两个用户端口上没有连接。

探测本身似乎有点不稳。 有些引导不会成功并返回到非托管模式。 所有数据线和时钟线均已重新连接以实现布线长度匹配。

以下是一些相关片段:

DTS:

&cpsw3g {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_rgmii1_pins_default>,
		    <&main_rgmii2_pins_default>;
};

&cpsw_port1 {
	status = "disabled";
};

&cpsw_port2 {
	status = "okay";
	phy-mode = "rmii";
	fixed-link {
		speed = <100>;
		full-duplex;
	};
};

&cpsw3g_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_mdio1_pins_default>;

	lan9354_switch: switch@1 {
		compatible = "microchip,lan9354-mdio";
		reg = <1>;
		reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_LOW>; /* GPIO0_91 */
		reset-duration = <1000>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;
				label = "cpu";
				ethernet = <&cpsw_port2>;
				phy-mode = "rmii";
				fixed-link {
					speed = <100>;
					full-duplex;
				};
			};

			port@1 {
				reg = <1>;
				label = "lan1";
			};

			port@2 {
				reg = <2>;
				label = "lan2";
			};
		};
	};
};

引导日志 dmesg:

root@AS-B-3-261750009:~# dmesg | grep -i lan
[    0.146339] usbcore: registered new interface driver lan78xx
[    0.160256] 8021q: 802.1Q VLAN Support v1.8
[    1.378937] LAN9303_MDIO 8000f00.mdio:01: Found LAN9354 rev. 1
[    1.394316] LAN9303_MDIO 8000f00.mdio:01: configuring for fixed/rmii link mode
[    1.396514] LAN9303_MDIO 8000f00.mdio:01: Link is Up - 100Mbps/Full - flow control off
[    1.398273] LAN9303_MDIO 8000f00.mdio:01 lan1 (uninitialized): PHY [dsa-0.0:01] driver [Generic PHY] (irq=POLL)
[    1.401181] LAN9303_MDIO 8000f00.mdio:01 lan2 (uninitialized): PHY [dsa-0.0:02] driver [Generic PHY] (irq=POLL)
[    1.401810] LAN9303_MDIO 8000f00.mdio:01: LAN9303 MDIO driver loaded successfully
[    3.600363] LAN9303_MDIO 8000f00.mdio:01 ethernet1: renamed from lan1
[    3.603653] LAN9303_MDIO 8000f00.mdio:01 ethernet2: renamed from lan2
[    8.142677] 8021q: adding VLAN 0 to HW filter on device ethernet3
[    8.146455] am65-cpsw-nuss 8000000.ethernet: Adding vlan 1 to vlan filter
[    8.150146] LAN9303_MDIO 8000f00.mdio:01 ethernet1: configuring for phy/gmii link mode
[    8.155020] LAN9303_MDIO 8000f00.mdio:01 ethernet1: Link is Up - 100Mbps/Full - flow control rx/tx

接口:

root@AS-B-3-261750009:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ethernet3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc mq qlen 1000
    link/ether aa:a3:80:99:b7:66 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a8a3:80ff:fe99:b766/64 scope link
       valid_lft forever preferred_lft forever
3: ethernet1@ethernet3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue qlen 1000
    link/ether aa:a3:80:99:b7:66 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::a8a3:80ff:fe99:b766/64 scope link
       valid_lft forever preferred_lft forever
4: ethernet2@ethernet3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether aa:a3:80:99:b7:66 brd ff:ff:ff:ff:ff:ff
5: g_ether0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 62:d9:66:af:f6:5c brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2:6175:9/64 scope link tentative
       valid_lft forever preferred_lft forever
6: g_ether1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 2a:1a:1e:d6:3b:c9 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::2:6175:9/64 scope link
       valid_lft forever preferred_lft forever
    inet6 fe80::281a:1eff:fed6:3bc9/64 scope link
       valid_lft forever preferred_lft forever
7: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether de:ef:90:2b:e1:d3 brd ff:ff:ff:ff:ff:ff

尝试配置 Ethernet1:

root@AS-B-3-261750009:~# ip addr add 10.142.3.9/22 dev ethernet1
root@AS-B-3-261750009:~# ip link set ethernet1 up
root@AS-B-3-261750009:~# ip route add default via 10.142.0.1
root@AS-B-3-261750009:~# ping -c 4 10.142.0.1
PING 10.142.0.1 (10.142.0.1): 56 data bytes

--- 10.142.0.1 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss

像往常一样,感谢所有的帮助,我可以得到。

此致、

/BO

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

    您好 Bo、

    对延迟的回复表示歉意。  

    请问您目前使用的 TI Linux SDK 版本是什么?

    当我在 DTS 中添加 DSA 驱动程序片段时、芯片似乎被正确探测、但在我的两个用户端口上没有连接。

    您在 DTS 中的 DSA 驱动程序片段如何? 它是 lan9354_swtichDTS 设置的一部分吗?

    启用 DSA 后、您是否可以共享整个引导日志? 我想看看是否有任何明显的错误或日志表明某些内容配置不正确。  

    -道林

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

    尊敬的 Daolin:

    SDK 版本为 11.02.11、Linux 内核 6.12.57

    您在 DTS 中的 DSA 驱动程序片段如何? 它是 lan9354_swtichdts 设置的一部分吗?

    此行会将以下内容拉入驱动器:


    compatible = "microchip,lan9354-mdio";

    无论如何、我找到勘误表 J2329 后、问题现在可以解决、该勘误表 J2329 清楚地指出 MDIO 实现存在缺陷、需要进行位拆裂。

    FFR:

    static const struct soc_device_attribute k3_mdio_socinfo[] = {
    	{ .family = "AM62X", .data = &am65_mdio_soc_data },
    +	{ .family = "AM62PX", .data = &am65_mdio_soc_data },
    	{ .family = "AM64X", .data = &am65_mdio_soc_data },
    	{ .family = "AM65X", .data = &am65_mdio_soc_data },
    	{ .family = "J7200", .data = &am65_mdio_soc_data },
    	{ .family = "J721E", .data = &am65_mdio_soc_data },
    	{ .family = "J721S2", .data = &am65_mdio_soc_data },
    	{ /* sentinel */ },
    };
    

    在 davinci_mdio.c 中添加上述行、MDIO 总线将按预期工作。

    /b.