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.

[参考译文] AM3352:[kernel 6.12.49]启用 UART5(从 4.19 迁移)时、引导在"Starting Kernel"

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1627397/am3352-kernel-6-12-49-boot-hang-at-starting-kernel-when-enabling-uart5-migration-from-4-19

器件型号: AM3352

尊敬的 TI 专家:

内核版本: 6.12.49  

上一工作版本: 4.19

我正在将定制电路板从内核 4.19 迁移到 6.12.49。 出现意外压降 UART5 在“Device Tree (DTS)(设备树 (DTS))Starting kernel...“中、引导过程会在消息中无限期挂起。

如果我将 UART5 的状态设置为"disabled"、内核将使用 UART0 作为控制台正常启动。 我已经将 DTS 剥离为基本要素 (UART0、SD 卡和 UART5)、但冲突仍然存在。

当前 DTS 配置:

我使用以下节点定义(简化):

下面附上 DTS:

/dts-v1/;

#include "am33xx.dtsi"

/ {
	model = "AM335x-P1-512";
	compatible = "ti,am335x-company-product-nxt", "ti,am33xx";

	cpus {
		cpu@0 {
			cpu0-supply = <&vdd_mpu_supply>;
		};
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x80000000 0x20000000>; /* 512MB */
	};

	chosen {
		stdout-path = &uart0;
	};

	vmmcsd_fixed: fixedregulator-sd {
		compatible = "regulator-fixed";
		regulator-name = "vmmcsd_fixed";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		enable-active-high;
	};

	vdd_mpu_supply: fixedregulator-mpu {
		compatible = "regulator-fixed";
		regulator-name = "vdd_mpu_supply";
		regulator-min-microvolt = <912500>;
		regulator-max-microvolt = <1351500>;
		regulator-boot-on;
	};

	
};

&am33xx_pinmux {

	uart0_pins: pinmux_uart0_pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_UART0_RXD, PIN_INPUT_PULLUP, MUX_MODE0)	/* uart0_rxd.uart0_rxd */
			AM33XX_PADCONF(AM335X_PIN_UART0_TXD, PIN_OUTPUT_PULLDOWN, MUX_MODE0)	/* uart0_txd.uart0_txd */
		>;
	};

	mmc1_pins_default: pinmux_mmc1_pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT0, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_dat3.mmc0_dat3 */
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT1, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_dat2.mmc0_dat2 */
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT2, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_dat1.mmc0_dat1 */
			AM33XX_PADCONF(AM335X_PIN_MMC0_DAT3, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_dat0.mmc0_dat0 */
			AM33XX_PADCONF(AM335X_PIN_MMC0_CMD, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_clk.mmc0_clk */
			AM33XX_PADCONF(AM335X_PIN_MMC0_CLK, PIN_INPUT_PULLUP, MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
			AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_INPUT, MUX_MODE7)           /* mcasp0_aclkx.gpio3_14 */
		>;
	};	

	
      	uart5_pins: pinmux_uart5_pins {
		pinctrl-single,pins = <
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_INPUT_PULLUP, MUX_MODE4 )	/* () uart5_rxd */
			AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT_PULLDOWN, MUX_MODE4 )   /* () uart5_txd */
		>;
	};

};


&uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;

        status = "okay";
};


&uart5 {
    pinctrl-names = "default";
    pinctrl-0 = <&uart5_pins>;
    status = "okay";
};

&mmc1 {
        status = "okay";
        vmmc-supply = <&vmmcsd_fixed>;
        bus-width = <4>;
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mmc1_pins_default>;
	cd-gpios = <&gpio3 14 GPIO_ACTIVE_LOW>;
};

 

观察和调试已完成:

  • 4.19 行为: 相同的硬件和 pinmux 配置运行良好。

  • 6.12 行为: 挂起发生得非常早。 控制台不会打印恐慌或糟糕。

    问题:

    1. 中是否存在已知的回归或变化 系统固件 (SYSFW/TISCI) 这些内核版本之间的 UART5 要求?

    2. 内核 6.12 是否需要power-domainsclocks以前在 4.19 中隐式处理的特定或属性?

    3. 我是否应启用特定调试标志来查看这是否是 UART5probe 功能期间的数据中止?

    此致。

     

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

    尊敬的 AMH:

    以下内核补丁应该可以解决该问题。

    diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
    索引 bdbbfbdac72a..05d4b2134062 100644
    -- a/arch/arm/configs/multi_v7_defconfig
    ++ b/arch/arm/configs/multi_v7_defconfig
    @@–357、8 +357、8 @@ CONFIG_INPUT_STPMIC1_ONKEY=y
     CONFIG_Serio_AMBAKMI=y
     CONFIG_SERIAL_8250=y
     CONFIG_SERIAL_8250_CONSOLE=y
    CONFIG_SERIAL_8250_NR_UARTs=5
    CONFIG_SERIAL_8250_RUNTIME_UARTs=5
    +CONFIG_SERIAL_8250_NR_UARTs= 6.
    +CONFIG_SERIAL_8250_RUNTIME_UARTs= 6.
     CONFIG_SERIAL_8250_EXTENDED=y
     CONFIG_SERIAL_8250_MANTIAL_PORT_=y
     CONFIG_SERIAL_8250_ASPEED_VUART=m