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.

[参考译文] DRA821U-Q1:如何使用正确混合的 RGMII 和 SGMII 端口配置 cpsw5g?

Guru**** 2473270 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1460704/dra821u-q1-how-to-configure-cpsw5g-with-rgmii-and-sgmii-ports-mixed-rightly

器件型号:DRA821U-Q1

工具与软件:

您好!

由于没有足够的硬件端口用于使用、我们必须混合 cpsw5g 的 RGMII 和 SGMII 端口、端口1、3和4是 SGMII 端口、端口2是 RGMII 端口。 由于与 EVM 不同、我们将一些配置代码从 qsgmii 配置为 SGMII。 但该函数将 CpswMacPort_isSgmiiSupported 置为有效并显示"SGMII 端口未就绪、SERDES PLL 未锁定"。

因此我检查了 CPSW0_SGMII 寄存器、例如、 CPSW_SGMII_IDVER_REG_0具有非零值(0x4EC21102) 、但 CPSW_SGMII_IDVER_REG_1、CPSW_SGMII_IDVER_REG_2 、CPSW_SGMII_IDVER_REG_3的 内容都为零、因此检查功能失败。

此外、是否有 我们的自定义用法手册(不适用于 qsgmii 端口)? 谢谢

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

    QSGMII 将使用一个主 CPSW 端口、后跟下一个较低的三个 QSGMII_SUB 端口;由于您修改了 qsgmii 端口、可能是其他端口显示零值的问题。

    PLL 未锁定意味着 SERDES 看不到基准时钟或配置错误、SGMII 支持100MHz (或156.25MHz)基准时钟。

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

    感谢您的答复、我会检查它们。 这似乎是一个很长的方法来使它发挥作用。

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

    我已经检查了 REFCLK、它是100MHz。

    CLK

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

    您好!  

    您使用的是哪个 SDK 版本?  

    此外、您是否将 CPSW5G 与 ETHFW 或原生 Linux 驱动程序配合使用?  

    还会共享调试日志。  

    此致、  

    Sudheer

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

    只需一个界面即可工作吗? 要么仅支持 SGMII、要么仅支持 RGMII、但不能同时支持两者?

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

    否 如果是、则只有已启用端口的版本 reg 变为零。

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

    您好!  

    SGMII 的 CPSW 端口配置、需要参考 sers0_qsgmii_link 节点。  请参阅 SDK 中的四路扩展覆盖层。  

    此外、 串行器/解串器只能配置连续通道、为串行器/解串器配置的 SGMII 启用所有4个串行器/解串器通道。

    但是、从 cpsw 端口侧、在 RGMII 中配置所需的端口。  

    此外、确保未在 MCU2_0内核上加载 ETHFW。  

    此致、  

    Sudheer

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

    是的、MCU2_0内核没有任何负载。  

    由于我只测试了两个端口(3和4)、因此我修改了 DTS 如下所示:

    &cpsw0_port3 {
    	status = "okay";
    	phy-handle = <&cpsw5g_phy2>;
    	phy-mode = "sgmii";
    	phy-names = "portmode", "serdes-phy";
    	mac-address = [00 00 00 00 00 00];
    	phys = <&cpsw0_phy_gmii_sel 3>, <&serdes0_qsgmii_link>;
    };
    
    &cpsw0_port4 {
    	status = "disabled";
    	phy-handle = <&cpsw5g_phy3>;
    	phy-mode = "sgmii";
    	phy-names = "portmode", "serdes-phy";
    	mac-address = [00 00 00 00 00 00];
    	phys = <&cpsw0_phy_gmii_sel 4>, <&serdes0_qsgmii_link>;
    };
    &serdes0 {
    	serdes0_qsgmii_link: phy@1 {
    		reg = <2>;
    		cdns,num-lanes = <2>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_SGMII>;
    		resets = <&serdes_wiz0 3>,<&serdes_wiz0 4>;
    	};
    };

    有任何问题吗? 它的剂量也不起作用。 我可以找到链路接通、但无法成功对其他链路执行 ping 操作。

    从你最近的答复中、我有两个问题:

    1."此外、 串行器/解串器只能连续配置通道、为串行器/解串器配置中的 SGMII 启用所有4个串行器/解串器通道。"

      我使用"继续" 2个端口、是否正常? 或者用户必须同样配置全部4个通道?

    2."从 cpsw 端口端,在 RGMII 中配置所需端口。 "

      这需要更多配置?   CTRLMMR_ENET3_CTRL 和 CTRLMMR_ENET4_CTRL 的 PORT_MODE_SEL 值为 SGMII。

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

    您好!  

    [报价 userid="453688" url="~/support/processors-group/processors/f/processors-forum/1460704/dra821u-q1-how-to-configure-cpsw5g-with-rgmii-and-sgmii-ports-mixed-rightly/5609159 #5609159"]是的、MCU2_0内核没有任何负载。  [报价]

    感谢您的确认。  

     我要继续使用2个端口、是否可以? 或者用户必须同样配置全部4个通道?

    2个连续端口也很好。  

    我可以看到您提到了 serdes0_qsgmii_link @1、您可以将其用作@2吗

    此外、cpsw 端口中的 phy-names 为"Mac"、"SerDes"。

    [报价 userid="453688" url="~/support/processors-group/processors/f/processors-forum/1460704/dra821u-q1-how-to-configure-cpsw5g-with-rgmii-and-sgmii-ports-mixed-rightly/5609159 #5609159"] CTRLMMR_ENET3_CTRL 和 CTRLMMR_ENET4_CTRL 的 PORT_MODE_SEL 值是 SGMII

    您可以在 SGMII 中启用端口3、端口4。

     您能查看一下以上建议吗?  

    此致、  

    Sudheer

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

    我已经尝试了你以上的建议,但问题仍然存在。

    而且、我现在面临着新的问题:

    1.  在 am65_cpsw_nuss_init_slave_ports () 条目中调用 phy_set_mode_ext ()、CPSW_SGMII_IDVER_REG_3和 CPSW_SGMII_IDVER_REG_4 的内容变为零、并且我跟踪了 phy_set_mode_ext ()调用并发现它确实将 Phy 模式配置为 SGMII。

    2.关于 Serdes-wiz 的 DTS 节点如下:

    	serdes_wiz0: wiz@5060000 {
    		compatible = "ti,j721e-wiz-10g";
    		#address-cells = <1>;
    		#size-cells = <1>;
    		power-domains = <&k3_pds 292 TI_SCI_PD_EXCLUSIVE>;
    		clocks = <&k3_clks 292 11>, <&k3_clks 292 85>, <&serdes_refclk>;
    		clock-names = "fck", "core_ref_clk", "ext_ref_clk";
    		num-lanes = <4>;
    		#reset-cells = <1>;
    		ranges = <0x5060000 0x0 0x5060000 0x10000>;
    
    		assigned-clocks = <&k3_clks 292 85>;
    		assigned-clock-parents = <&k3_clks 292 89>;
    
    		wiz0_pll0_refclk: pll0-refclk {
    			clocks = <&k3_clks 292 85>, <&serdes_refclk>;
    			clock-output-names = "wiz0_pll0_refclk";
    			#clock-cells = <0>;
    			assigned-clocks = <&wiz0_pll0_refclk>;
    			assigned-clock-parents = <&k3_clks 292 85>;
    		};
    
    		wiz0_pll1_refclk: pll1-refclk {
    			clocks = <&k3_clks 292 85>, <&serdes_refclk>;
    			clock-output-names = "wiz0_pll1_refclk";
    			#clock-cells = <0>;
    			assigned-clocks = <&wiz0_pll1_refclk>;
    			assigned-clock-parents = <&k3_clks 292 85>;
    		};
    
    		wiz0_refclk_dig: refclk-dig {
    			clocks = <&k3_clks 292 85>, <&serdes_refclk>;
    			clock-output-names = "wiz0_refclk_dig";
    			#clock-cells = <0>;
    			assigned-clocks = <&wiz0_refclk_dig>;
    			assigned-clock-parents = <&k3_clks 292 85>;
    		};
    
    		wiz0_cmn_refclk_dig_div: cmn-refclk-dig-div {
    			clocks = <&wiz0_refclk_dig>;
    			#clock-cells = <0>;
    		};
    
    		serdes0: serdes@5060000 {
    			compatible = "ti,j7200-serdes-10g";
    			reg = <0x05060000 0x00010000>;
    			reg-names = "torrent_phy";
    			resets = <&serdes_wiz0 0>;
    			reset-names = "torrent_reset";
    			clocks = <&wiz0_pll0_refclk>;
    			clock-names = "refclk";
    			#address-cells = <1>;
    			#size-cells = <0>;
    		};
    	};

    在这里、似乎兼容 j721e、为什么不兼容 j7200?

    3.我发现另一个主题: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1113616/dra821u-how-to-configure-four-sgmii-ports-for-cpsw5g-linux-native-driver , 女巫说,串行器/解串器的 REFCLK 应该是内部的,从我的 DTS ,它认为是,对吗?

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

    您好!

    1.  从 am65_cpsw_nuss_init_slave_ports () 条目中的 phy_set_mode_ext ()调用起、CPSW_SGMII_IDVER_REG_3和 CPSW_SGMII_IDVER_REG_4 的内容变为零、并且我跟踪了 phy_set_mode_ext ()调用并发现它确实将 phy 模式配置为 SGMII。

    默认情况下、在 PCIe + QSGMII 的 u-boot 中启用了串行器/解串器。

    如果从 u-boot 启用、Linux 不会重新配置串行器/解串器。

    确保 u-boot 侧串行器/解串器未启用。

    此外、SDK 中的默认串行器/解串器配置启用了串行器/解串器和时钟。
    仅需更改串行器/解串器节点(serdes0)以进行接口选择和通道重置。

    在这里、似乎 j721e 兼容、为什么不使用 j7200?

    因为 J721E 和 J7200具有相同的 SerDes IP。 无需从 SDK 对此进行任何更改。

    您可以共享 Linux 引导日志吗?

    此致、
    Sudheer

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

    您好!

    您能否检查 PHY 的 MDIO 节点。

    [ 2.225105] davinci_mDIO c000f00.mDIO:davinci MDIO 修订版9.7、总线频率1000000
    [ 2.241946] MDIO_BUS c000f00.MDIO:地址0处的 MDIO 器件丢失。
    [ 2.248921] MDIO_BUS c000f00.MDIO:地址1处的 MDIO 器件丢失。
    [ 2.255521] Davinci_MDIO c000f00.MDIO:PHY[4]:器件 c000f00.MDIO:04、驱动程序 mv88q2110
    [ 2.263506] Davinci_MDIO c000f00.MDIO:PHY[5]:器件 c000f00.MDIO:05、驱动程序 mv88q2110

    您能否共享 CPSW 和 MDIO 节点配置。

    另外、请分享 CPSW 统计数据的完整列表。

    此致、
    Sudheer

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

    您好!

    设备树配置看起来正常。

    您能否分享端口3、端口4的 SGMII 状态和控制寄存器值。
    0x0C000310 ->端口3控制寄存器
    0x0C000410 ->端口4控制寄存器
    0x0C000314 ->端口3状态寄存器
    0x0C000414 ->端口4状态寄存器
    0x0C000318 ->端口3的 MR 广播寄存器。
    0x0C000418 ->端口4的 MR 广播。

    此致、
    Sudheer

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

    您好!

    此外、 在 serdes0节点中添加"status ="oke";"。

    此致、
    Sudheer

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

    您好!

    如前所述、串行器/解串器驱动程序无法使能非连续端口。

    如果还要启用端口1、则串行器/解串器节点应如下所示。

    &serdes0 {
    	serdes0_qsgmii_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <4>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_SGMII>;
    		resets = <&serdes_wiz0 1>,<&serdes_wiz0 2>,<&serdes_wiz0 3>,<&serdes_wiz0 4>;
    	};
    };


    您会在 CPSW 端口2中配置 RGMII 模式、并在 SGMII 模式下复位所有端口。

    我发现端口1的错误要小一点、从0xc000110开始、它是从属设备、但作为主设备、 

    主/从模式选择取决于 PHY 配置。
    如果 PHY 是从器件、则 MAC 在主器件中、反之亦然。

    您是否可以检查驱动程序的更改、以便进行 Mater 模式配置。



    此致、
    Sudheer

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

    Im 很抱歉、我删除了之前的最后一个帖子、因为我想更改我的状态。 我写错 DTS。

    0xc000310:1
    0xc000314:0x3d
    0xc000318:1
    0xc000410:1
    0xc000414:0x3d
    0xc000418:01

    和 ethtool:

    ethtool -S eth3
    NIC statistics:
         p0_rx_good_frames: 38
         p0_rx_broadcast_frames: 22
         p0_rx_multicast_frames: 16
         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: 6032
         p0_tx_good_frames: 0
         p0_tx_broadcast_frames: 0
         p0_tx_multicast_frames: 0
         p0_tx_octets: 0
         p0_tx_64B_frames: 16
         p0_tx_65_to_127B_frames: 0
         p0_tx_128_to_255B_frames: 12
         p0_tx_256_to_511B_frames: 10
         p0_tx_512_to_1023B_frames: 0
         p0_tx_1024B_frames: 0
         p0_net_octets: 6032
         p0_rx_bottom_fifo_drop: 0
         p0_rx_port_mask_drop: 0
         p0_rx_top_fifo_drop: 0
         p0_ale_rate_limit_drop: 0
         p0_ale_vid_ingress_drop: 0
         p0_ale_da_eq_sa_drop: 0
         p0_ale_block_drop: 0
         p0_ale_secure_drop: 0
         p0_ale_auth_drop: 0
         p0_ale_unknown_ucast: 0
         p0_ale_unknown_ucast_bytes: 0
         p0_ale_unknown_mcast: 0
         p0_ale_unknown_mcast_bytes: 0
         p0_ale_unknown_bcast: 0
         p0_ale_unknown_bcast_bytes: 0
         p0_ale_pol_match: 0
         p0_ale_pol_match_red: 0
         p0_ale_pol_match_yellow: 0
         p0_ale_mcast_sa_drop: 0
         p0_ale_dual_vlan_drop: 0
         p0_ale_len_err_drop: 0
         p0_ale_ip_next_hdr_drop: 0
         p0_ale_ipv4_frag_drop: 0
         p0_tx_mem_protect_err: 0
         p0_tx_pri0: 0
         p0_tx_pri1: 0
         p0_tx_pri2: 0
         p0_tx_pri3: 0
         p0_tx_pri4: 0
         p0_tx_pri5: 0
         p0_tx_pri6: 0
         p0_tx_pri7: 0
         p0_tx_pri0_bcnt: 0
         p0_tx_pri1_bcnt: 0
         p0_tx_pri2_bcnt: 0
         p0_tx_pri3_bcnt: 0
         p0_tx_pri4_bcnt: 0
         p0_tx_pri5_bcnt: 0
         p0_tx_pri6_bcnt: 0
         p0_tx_pri7_bcnt: 0
         p0_tx_pri0_drop: 0
         p0_tx_pri1_drop: 0
         p0_tx_pri2_drop: 0
         p0_tx_pri3_drop: 0
         p0_tx_pri4_drop: 0
         p0_tx_pri5_drop: 0
         p0_tx_pri6_drop: 0
         p0_tx_pri7_drop: 0
         p0_tx_pri0_drop_bcnt: 0
         p0_tx_pri1_drop_bcnt: 0
         p0_tx_pri2_drop_bcnt: 0
         p0_tx_pri3_drop_bcnt: 0
         p0_tx_pri4_drop_bcnt: 0
         p0_tx_pri5_drop_bcnt: 0
         p0_tx_pri6_drop_bcnt: 0
         p0_tx_pri7_drop_bcnt: 0
         rx_good_frames: 0
         rx_broadcast_frames: 0
         rx_multicast_frames: 0
         rx_pause_frames: 0
         rx_crc_errors: 0
         rx_align_code_errors: 0
         rx_oversized_frames: 0
         rx_jabber_frames: 0
         rx_undersized_frames: 0
         rx_fragments: 0
         ale_drop: 0
         ale_overrun_drop: 0
         rx_octets: 0
         tx_good_frames: 38
         tx_broadcast_frames: 22
         tx_multicast_frames: 16
         tx_pause_frames: 0
         tx_deferred_frames: 0
         tx_collision_frames: 0
         tx_single_coll_frames: 0
         tx_mult_coll_frames: 0
         tx_excessive_collisions: 0
         tx_late_collisions: 0
         rx_ipg_error: 0
         tx_carrier_sense_errors: 0
         tx_octets: 6032
         tx_64B_frames: 16
         tx_65_to_127B_frames: 0
         tx_128_to_255B_frames: 12
         tx_256_to_511B_frames: 10
         tx_512_to_1023B_frames: 0
         tx_1024B_frames: 0
         net_octets: 6032
         rx_bottom_fifo_drop: 0
         rx_port_mask_drop: 0
         rx_top_fifo_drop: 0
         ale_rate_limit_drop: 0
         ale_vid_ingress_drop: 0
         ale_da_eq_sa_drop: 0
         ale_block_drop: 0
         ale_secure_drop: 0
         ale_auth_drop: 0
         ale_unknown_ucast: 0
         ale_unknown_ucast_bytes: 0
         ale_unknown_mcast: 0
         ale_unknown_mcast_bytes: 0
         ale_unknown_bcast: 0
         ale_unknown_bcast_bytes: 0
         ale_pol_match: 0
         ale_pol_match_red: 0
         ale_pol_match_yellow: 0
         ale_mcast_sa_drop: 0
         ale_dual_vlan_drop: 0
         ale_len_err_drop: 0
         ale_ip_next_hdr_drop: 0
         ale_ipv4_frag_drop: 0
         iet_rx_assembly_err: 0
         iet_rx_assembly_ok: 0
         iet_rx_smd_err: 0
         iet_rx_frag: 0
         iet_tx_hold: 0
         iet_tx_frag: 0
         tx_mem_protect_err: 0
         tx_pri0: 38
         tx_pri1: 0
         tx_pri2: 0
         tx_pri3: 0
         tx_pri4: 0
         tx_pri5: 0
         tx_pri6: 0
         tx_pri7: 0
         tx_pri0_bcnt: 6032
         tx_pri1_bcnt: 0
         tx_pri2_bcnt: 0
         tx_pri3_bcnt: 0
         tx_pri4_bcnt: 0
         tx_pri5_bcnt: 0
         tx_pri6_bcnt: 0
         tx_pri7_bcnt: 0
         tx_pri0_drop: 0
         tx_pri1_drop: 0
         tx_pri2_drop: 0
         tx_pri3_drop: 0
         tx_pri4_drop: 0
         tx_pri5_drop: 0
         tx_pri6_drop: 0
         tx_pri7_drop: 0
         tx_pri0_drop_bcnt: 0
         tx_pri1_drop_bcnt: 0
         tx_pri2_drop_bcnt: 0
         tx_pri3_drop_bcnt: 0
         tx_pri4_drop_bcnt: 0
         tx_pri5_drop_bcnt: 0
         tx_pri6_drop_bcnt: 0
         tx_pri7_drop_bcnt: 0
    
    

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

    您好!

    从寄存器转储来看、端口4似乎是链路接通。

    此外、随着 TX 正常帧计数增加、统计数据包从 CPSW (TX_GOOD_FRAMES)发出。
    但是、MAC 不会从 PHY 接收任何信号。

    您能否检查一下以上建议的驱动程序更改?  

    此致、
    Sudheer

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

    你好,出口 Sudheer,我很抱歉,我不得不离开办公室后,我上周五的最后一次尝试。 事实上,我的板应该适合两个端口之前启用,因为读了上一篇文章后,我更换了一个新的板,它工作正常. 我终于发现 SerDes 损坏了、因为 USB 也无法正常工作。

    非常感谢、希望您每天都能好运。

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

    您好!

    感谢您的更新、我将关闭此主题。

    如果您有任何疑问、请创建新主题。

    此致、
    Sudheer