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:
我们已经进行了以下设置:
我想使用 Mac2Mac 功能、在 SGMII Port7的 TDA4_2上的 Linux 中建立工作正常的以太网连接。
我已经在 TDA4_1上尝试了以下操作:
&cpsw_port8 { phy-mode = "sgmii"; fixed-link { speed = <100>; full-duplex; }; };
和
&cpsw_port7 { phy-mode = "sgmii"; fixed-link { speed = <100>; full-duplex; }; };
但这样无效。 另请参阅:TDA4_1上的以太网适用于端口5、6和7 (Linux 上)。
是否有相应的补丁/指南可解决此问题?
感谢您的帮助、此致、
Felix
尊敬的 Felix:
您为此使用的 SDK 版本是什么?
此致、
Tanmay
您好、Tanmay、
我使用的是 PSDK Linux v09.01。
此致、
Felix
尊敬的 Felix:
您是否可以尝试添加以下补丁并查看您是否能够通信:
e2e.ti.com/.../enable_2D00_master_2D00_mode_2D00_in_2D00_sgmii_2D00_MAC.patch
在此补丁中、对于100M 全双工链路、不使用"LPA_SGMII_1000Full"、而使用"LPA_SGMII_100FULL"。
此致、
Tanmay
您好、Tanmay、
感谢您的快速响应。
我是否必须将此补丁应用于 TDA4_1器件树和 TDA4_2器件树?
我在下面对这两个进行了应用。
对于 TDA4_2、我得到以下输出:
root@j721e-evm:~# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@j721e-evm:~# dmesg | grep cpsw [ 1.171043] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.382685] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.396580] am65-cpsw-nuss c000000.ethernet: Use random MAC address [ 1.402890] am65-cpsw-nuss c000000.ethernet: Use random MAC address [ 1.409153] am65-cpsw-nuss c000000.ethernet: /bus@100000/ethernet@c000000/ethernet-ports/port@7 error retrieving port phy: -19 root@j721e-evm:~# dmesg | grep mdio root@j721e-evm:~#
对于 TDA4_1、我得到以下输出:
root@j721e-evm:~# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) root@j721e-evm:~# dmesg | grep cpsw [ 1.171798] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.464820] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.478716] am65-cpsw-nuss c000000.ethernet: Use random MAC address [ 1.485047] am65-cpsw-nuss c000000.ethernet: Use random MAC address [ 1.491367] am65-cpsw-nuss c000000.ethernet: /bus@100000/ethernet@c000000/ethernet-ports/port@8 error retrieving port phy: -19 root@j721e-evm:~# dmesg | grep mdio [ 1.386668] davinci_mdio c000f00.mdio: Configuring MDIO in manual mode [ 1.430755] davinci_mdio c000f00.mdio: davinci mdio revision 9.7, bus freq 1000000 [ 1.440572] davinci_mdio c000f00.mdio: phy[0]: device c000f00.mdio:00, driver TI DP83867 [ 1.448655] davinci_mdio c000f00.mdio: phy[1]: device c000f00.mdio:01, driver TI DP83867 [ 1.456727] davinci_mdio c000f00.mdio: phy[2]: device c000f00.mdio:02, driver TI DP83867 root@j721e-evm:~#
因此,除了使 Mac2Mac 连接无法正常工作之外,先前工作的 ethX 接口也不再显示。
删除
&cpsw0_port8 { status = "okay"; phy-mode = "sgmii"; fixed-link { speed = <1000>; full-duplex; }; };
从 TDA4_1可以修复此问题、所有三个以太网接口都可以再次正常工作。
此致、
Felix
尊敬的 Felix:
该补丁不是针对设备树、而是针对 CPSW 驱动程序、在使用固定链路时、您不会看到所看到的错误。
我怀疑在应用导致问题的补丁时出现了某种错误。
您能否分享如何应用补丁以及如何构建映像和 dtb。 您是否使用器件树叠加层进行配置?
此致、
Tanmay
尊敬的 Felix:
抱歉、再次遍历器件树节点后、发现还必须配置 serdes4节点以启用 SGMII。 默认情况下不存在该选项。
请 查看此票证、看看您是否可以使用此处的串行器/解串器配置。 您还必须指向 cpsw 端口节点中的 SerDes phy 句柄。
您能否简单介绍一下您的补丁程序应该怎么做?
我的补丁是一个附加组件。 默认情况下、CPSW MAC 配置为在 SGMII 从模式下工作。 我的补丁将其更改为主模式。 如果两侧均为从器件、则不会触发自动协商。 通常连接的接口处于主模式、因此从模式不是问题。
此致、
Tanmay
您好、Tanmay、
感谢您的提示。 我认为 serdes4节点已正确配置、因为端口5、6和7上 TDA4_1上的以太网连接工作正常(这些都通过 SGMII 连接)。
您还必须指向 cpsw 端口节点中的 SerDes phy 句柄。
此部件在我的上一器件诊断树中缺失。 因此、TDA4_1器件树的相关部分现在显示如下:
&cpsw0_port5 { status = "disabled"; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 5>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; phy-handle = <&cpsw9g_phy0>; }; &cpsw0_port6 { status = "disabled"; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 6>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; phy-handle = <&cpsw9g_phy1>; }; &cpsw0_port7 { status = "okay"; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 7>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; phy-handle = <&cpsw9g_phy2>; }; &cpsw0_port8 { status = "okay"; phy-mode = "sgmii"; phys = <&cpsw0_phy_gmii_sel 8>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; mac-address = [00 00 00 00 00 00]; fixed-link { speed = <100>; full-duplex; }; };
对于 TDA4_2:
&cpsw0_port5 { status = "disabled"; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 5>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; phy-handle = <&cpsw9g_phy0>; }; &cpsw0_port6 { status = "disabled"; phy-mode = "sgmii"; mac-address = [00 00 00 00 00 00]; phys = <&cpsw0_phy_gmii_sel 6>, <&serdes4_sgmii_link>; phy-names = "mac", "serdes"; phy-handle = <&cpsw9g_phy1>; }; &cpsw0_port7 { status = "okay"; phy-mode = "sgmii"; phys = <&cpsw0_phy_gmii_sel 7>, <&serdes4_sgmii_link>; mac-address = [00 00 00 00 00 00]; fixed-link { speed = <100>; full-duplex; }; };
我现在在 TDA4_2上得到以下与以太网相关的启动日志:
root@j721e-evm:~# dmesg | grep cpsw [ 1.171913] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.463614] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.477463] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4 [ 1.484595] am65-cpsw-nuss c000000.ethernet: ALE Table size 512 [ 1.490935] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0 [ 1.502714] am65-cpsw-nuss c000000.ethernet: set new flow-id-base 140 [ 5.503238] am65-cpsw-nuss c000000.ethernet eth0: configuring for fixed/sgmii link mode [ 5.517887] am65-cpsw-nuss c000000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
双向通信
root@j721e-evm:~# dmesg | grep cpsw [ 1.171825] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.465293] am65-cpsw-nuss c000000.ethernet: initializing am65 cpsw nuss version 0x6BA01901, cpsw version 0x6BA80101 Ports: 9 quirks:00000000 [ 1.479254] am65-cpsw-nuss c000000.ethernet: Use random MAC address [ 1.488660] am65-cpsw-nuss c000000.ethernet: initialized cpsw ale version 1.4 [ 1.500764] am65-cpsw-nuss c000000.ethernet: ALE Table size 512 [ 1.513985] am65-cpsw-nuss c000000.ethernet: CPTS ver 0x4e8a010a, freq:200000000, add_val:4 pps:0 [ 1.540542] am65-cpsw-nuss c000000.ethernet: set new flow-id-base 140 [ 5.362046] am65-cpsw-nuss c000000.ethernet eth1: configuring for fixed/sgmii link mode [ 5.380575] am65-cpsw-nuss c000000.ethernet eth1: Link is Up - 100Mbps/Full - flow control off [ 5.459995] am65-cpsw-nuss c000000.ethernet eth0: PHY [c000f00.mdio:02] driver [TI DP83867] (irq=POLL) [ 5.477619] am65-cpsw-nuss c000000.ethernet eth0: configuring for phy/sgmii link mode [ 9.568146] am65-cpsw-nuss c000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
TDA4_1上的 ETH0接口工作正常(端口7)。 TDA4_1 (端口8)上的 ETH1接口是固定链路、连接到 TDA4_2上的端口7。 在该屏幕上、我还会看到一个"link up" 但没有网络。
您刚才提到的详细信息
如果两端都是从端、将不会触发自动协商。 连接的接口通常处于主模式、因此从模式不是问题。[/QUOT]我必须在哪一侧应用该补丁? 目前、它仅应用于 TDA4_2。 是这样吗?
此致、
Felix
尊敬的 Felix:
我必须在哪一侧应用此补丁? 目前、它仅应用于 TDA4_2。 这是正确的吗?
这也应该起作用。 您也可以将补丁应用于两个 TDA4。 我实际上建议这么做。 使用 CPSW 开关(MAC 也处于主模式)时、可实现自动协商。
请注意、对于100M 链路、请在补丁中使用"LPA_SGMII_100FULL"。 或者使用现有增补程序、将设备树中的链接速度设置为1000。
您是否可以为两侧的相关端口提供以下寄存器值:
此致、
Tanmay
您好、Tanmay、
我已切换回1G 链接、修改了补丁和相应的器件树以适应此设置。 您的补丁现已应用于 TDA4_1和 TDA4_2。
的说明 TDA4_1端口8 我得到以下信息:
的说明 TDA4_2端口7 我得到以下信息:
此外、DIAG_STATUS 寄存器还显示:
TDA4上的 eth 接口显示接收和传输的数据包、但仍然无法从 TDA4_2端口7 ping 任何地址
这是 TDA4_1 (eth2是端口7、eth3是端口8):
root@j721e-evm:~# ifconfig eth0 Link encap:Ethernet HWaddr DA:62:37:AC:9A:16 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth1 Link encap:Ethernet HWaddr F2:79:07:27:79:90 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth2 Link encap:Ethernet HWaddr 34:08:E1:6C:4B:0E inet addr:192.168.50.82 Bcast:192.168.50.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:247 errors:0 dropped:0 overruns:0 frame:0 TX packets:28 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:45869 (44.7 KiB) TX bytes:1895 (1.8 KiB) eth3 Link encap:Ethernet HWaddr C2:F0:E6:95:BE:DE UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4995 (4.8 KiB) TX bytes:4995 (4.8 KiB)
这是 TDA4_2 (eth0是端口7、eth1是端口8;端口8当前未使用):
root@j721e-evm:~# ifconfig eth0 Link encap:Ethernet HWaddr 82:11:18:93:EB:CD UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4662 (4.5 KiB) TX bytes:4995 (4.8 KiB) eth1 Link encap:Ethernet HWaddr F2:8D:6C:C9:8B:8A UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:4995 (4.8 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
此致、
Felix
尊敬的 Felix:
指出这一点是因为我看不到这一点、但是您需要分配 IP 地址才能 ping 通接口。 您在测试时这么做了吗?
您可以在 TDA4_1上运行
在 TDA4_2上、您可以运行
这应该就足够了。
通过寄存器转储可以看到链路状态良好。
此致、
Tanmay
您好、Tanmay、
感谢您的提示。 我假设只要一切正常、IP 地址就会自动分配。 我现在支持从 TDA4_1对 TDA4_2执行 ping 操作、反之亦然。
另外还有一个问题、因为这是我的主要假设:
目前、我无法 从同一网络中的另一台主机对 TDA4_2 eth0执行 ping 操作。
此用例是否完全可以通过 MAC2MAC 功能实现?
再次感谢您的支持。
此致、
Felix
尊敬的 Felix:
默认情况下、接口配置为 MAC 模式。 在这种情况下、接口相互独立。 我们还拥有一种称为开关模式的原生 Linux 驱动程序、您可以将接口与 Linux 上的桥接接口相结合、用作开关。
按照此步骤操作以启用所需功能。
是否可以使用 MAC2MAC 功能实现此用例?
MAC2MAC 只是一种具有一个端口的链路类型、不会以任何方式限制交换机功能的运行。 它与 MAC 模式不同。
如果您有任何疑问、请告诉我。
此致、
Tanmay