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.

[参考译文] PROCESSOR-SDK-AM62A:am65-cpsw-nuss 驱动器探头返回–22、同时进入两个 cpsw 端口

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1524994/processor-sdk-am62a-am65-cpsw-nuss-driver-probe-return--22-while-enbale-two-cpsw-port

器件型号:PROCESSOR-SDK-AM62A
主题中讨论的其他器件:SK-AM62A-LP

工具/软件:

您好 TI 专家:

     我正在使用 ti-processor-sdk-linux-edgeai-am62axx-evm-09_01_00_07 和 一个基于电路板的 SK-AM62A-LP。

     我 在 DTS 文件中配置两个以太网端口、  端口 1 连接到 phy 芯片、 端口 2 连接到 MAC2MAC 模式。

     DTS 文件“ k3-am62a7-sk.dts “中与以太网配置相关的代码片段更改如下:

     

	aliases {
		serial0 = &mcu_uart0;
		serial1 = &wkup_uart0;
		serial2 = &main_uart0;
		mmc0 = &sdhci0;
		mmc1 = &sdhci1;
		ethernet0 = &cpsw_port1;
		ethernet1 = &cpsw_port2;
		spi0 = &ospi0;
	};
	
	
	
&main_pmx0 {
	main_mdio1_pins_default: main-mdio1-pins-default {
		pinctrl-single,pins = <
			AM62AX_IOPAD(0x160, PIN_OUTPUT, 0) /* (V12) MDIO0_MDC */
			AM62AX_IOPAD(0x15c, PIN_INPUT, 0) /* (V13) MDIO0_MDIO */
		>;
	};

	main_rgmii1_pins_default: main-rgmii1-pins-default {
		pinctrl-single,pins = <
			AM62AX_IOPAD(0x14c, PIN_INPUT, 0) /* (AB16) RGMII1_RD0 */
			AM62AX_IOPAD(0x150, PIN_INPUT, 0) /* (V15) RGMII1_RD1 */
			AM62AX_IOPAD(0x154, PIN_INPUT, 0) /* (W15) RGMII1_RD2 */
			AM62AX_IOPAD(0x158, PIN_INPUT, 0) /* (V14) RGMII1_RD3 */
			AM62AX_IOPAD(0x148, PIN_INPUT, 0) /* (AA16) RGMII1_RXC */
			AM62AX_IOPAD(0x144, PIN_INPUT, 0) /* (AA15) RGMII1_RX_CTL */
			AM62AX_IOPAD(0x134, PIN_INPUT, 0) /* (Y17) RGMII1_TD0 */
			AM62AX_IOPAD(0x138, PIN_INPUT, 0) /* (V16) RGMII1_TD1 */
			AM62AX_IOPAD(0x13c, PIN_INPUT, 0) /* (Y16) RGMII1_TD2 */
			AM62AX_IOPAD(0x140, PIN_INPUT, 0) /* (AA17) RGMII1_TD3 */
			AM62AX_IOPAD(0x130, PIN_INPUT, 0) /* (AB17) RGMII1_TXC */
			AM62AX_IOPAD(0x12c, PIN_INPUT, 0) /* (W16) RGMII1_TX_CTL */
		>;
	};

	main_rgmii2_pins_default: main_rgmii2-default-pins {
		pinctrl-single,pins = <
			AM62AX_IOPAD(0x0184, PIN_INPUT, 0) /* (AA21) RGMII2_RD0 */
			AM62AX_IOPAD(0x0188, PIN_INPUT, 0) /* (Y20) RGMII2_RD1 */
			AM62AX_IOPAD(0x018c, PIN_INPUT, 0) /* (AB21) RGMII2_RD2 */
			AM62AX_IOPAD(0x0190, PIN_INPUT, 0) /* (AB20) RGMII2_RD3 */
			AM62AX_IOPAD(0x0180, PIN_INPUT, 0) /* (AA20) RGMII2_RXC */
			AM62AX_IOPAD(0x017c, PIN_INPUT, 0) /* (W18) RGMII2_RX_CTL */
			AM62AX_IOPAD(0x016c, PIN_INPUT, 0) /* (AA19) RGMII2_TD0 */
			AM62AX_IOPAD(0x0170, PIN_INPUT, 0) /* (Y18) RGMII2_TD1 */
			AM62AX_IOPAD(0x0174, PIN_INPUT, 0) /* (AA18) RGMII2_TD2 */
			AM62AX_IOPAD(0x0178, PIN_INPUT, 0) /* (W17) RGMII2_TD3 */
			AM62AX_IOPAD(0x0168, PIN_INPUT, 0) /* (AB19) RGMII2_TXC */
			AM62AX_IOPAD(0x0164, PIN_INPUT, 0) /* (Y19) RGMII2_TX_CTL */
		>;
	};
};



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

	cpts@3d000 {
		/* MAP HW3_TS_PUSH to GENF1 */
		ti,pps = <2 1>;
	};
};

&cpsw_port1 {
	status = "okay";
	phy-mode = "rgmii-rxid";
	phy-handle = <&cpsw3g_phy0>;
};

&cpsw_port2 {
	//status = "disabled";
	status = "okay";
	phy-mode = "rgmii-rxid";
	fixed-link {
		link-speed = <1000>;
		full-duplex;
	};
};

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

	cpsw3g_phy0: ethernet-phy@2 {
		compatible = "ethernet-phy-id002b.0b20";
		reg = <2>;
		ti,rx-internal-delay = <10>;
		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
		ti,min-output-impedance;
	};

};
	

构建 Linux 和 u-boot 并将所有映像烧录到 EMMC 后、 我在启动电路板时从 am65-cpsw-nuss 驱动程序收到了一条错误消息:

[    1.251065] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
[    1.263974] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
[    1.270241] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[    1.277368] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.283721] pps pps0: new PPS source ptp0
[    1.287986] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
[    1.297883] am65-cpsw-nuss: probe of 8000000.ethernet failed with error -22

请帮助确定我的配置有什么问题

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

    您好 Chi Chen、  

    [报价 userid=“588125" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1524994/processor-sdk-am62a-am65-cpsw-nuss-driver-probe-return-–22-while-enbale-two-cpsw-port ]我正在使用 ti-processor-sdk-linux-edgeai-am62axx-evm-09_01_00_07

    您是否限于此 SDK 版本、或者是否可以使用最新的 SDK 版本 (SDK 10.1)?

    您是否可以共享完整的引导日志?

    您已将哪些设备连接到 MAC 到 MAC 端口? (例如外部以太网交换机?)

    本文档的末尾有一个链接、要求提供有关您的电路板的信息、可帮助我们进行调试。  https://www.ti.com/lit/an/spradj8/spradj8.pdf

    对于具有 PHY 的 CPSW 端口、应该在 cpsw 驱动程序发出消息之前识别 PHY、因此我想查看完整的引导日志。 此外、 可能还应识别连接到 MAC 到 MAC 端口的设备。  

    错误 22 表示参数无效。 要识别错误 22 是否是由于 CPSW 端口 1 或端口 2 的参数无效导致的、您能否在 DTS 中将端口 2 状态保持禁用状态、看看问题是否仍然发生? 这只是一项健全性检查 、用于确定导致问题的端口。

    -道林

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

    尊敬的 Daolin:

    感谢您的支持。 客户无法使用最新的 SDK、他们需要保留 SDK9.1。

    BR、

    Biao

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

    您是否限于此 SDK 版本、或者是否可以使用最新的 SDK 版本 (SDK 10.1)?

       是的、我们需要使用 SDK 9.1

    您已将哪些设备连接到 MAC 到 MAC 端口?

       另一个 AM62A  

    您能否在 DTS 中将 port2 状态保持为禁用状态并查看问题是否仍然存在?  

      禁用端口 2、网络可以正常工作。

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

    尊敬的 Chi Chen, Biao、

    通过设备树设置、我不会立即看到您的固定链路端口配置出现任何问题。 只是检查一下、预计会有 1000Mbps 和 RGMII? 在对我假设的定制电路板进行测试之前、您是否尝试过在 TI AM62A EVM 上使用相同的固定链路配置?

    的引导日志应显示以下与“set new flow-id-base“相关的信息、该信息由于错误 22 输出而丢失。

    我猜是在 CPSW 驱动程序探针期间、错误发生在配置此“follow-id-base"的“的部分运行之前。 根据 https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/net/ethernet/ti/am65-cpsw-nuss.c?h=ti-linux-6.1.y#n1915 、可以看到该函数  am65_cpsw_nuss_init_rx_chns is responsible for the missing "flow-id-base" message.

    The am65_cpsw_nuss_init_rx_chns function gets used in the am65_cpsw_nuss_register_ndevs function which in turn gets run in the CPSW probe function at https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/net/ethernet/ti/am65-cpsw-nuss.c?h=ti-linux-6.1.y#n3078. I encourage taking a look through the probe function prior to the am65_cpsw_nuss_register_ndevs function to see if you can isolate where the error occurs. 

    root@am62xx-evm:~# dmesg | grep am65-cpsw-nuss
    [   2.320215] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000006
    [   2.343551] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
    [   2.343698] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
    [   2.343705] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512, Policers 32
    [   2.370701] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [   2.393119] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19

    -道林

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

    更改 DTS 节点

    &cpsw_port2 {
    	//status = "disabled";
    	status = "okay";
    	phy-mode = "rgmii-rxid";
    	fixed-link {
    		link-speed = <1000>;
    		full-duplex;
    	};
    };

    最终目的  

    &cpsw_port2 {
    	//status = "disabled";
    	status = "okay";
    	phy-mode = "rgmii-rxid";
    	fixed-link {
    		speed = <1000>;
    		full-duplex;
    	};
    };

    并解决了我的问题