您好!
我们的定制板将使用 UART4作为串行控制台。
由于电路板尚未完成、我们正在使用 AM62x-SK EVM 进行实验。
我们对 U-Boot 的 DTS 进行了如下修改:
diff --git a/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi b/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi index b57d9563d87..51397bfdfdd 100644 --- a/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi +++ b/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common-u-boot.dtsi @@ -68,11 +68,11 @@ u-boot,dm-spl; }; -&main_uart0 { +&main_uart4 { u-boot,dm-spl; }; -&main_uart0_pins_default { +&main_uart4_pins_default { u-boot,dm-spl; }; diff --git a/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common.dtsi b/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common.dtsi index fd52bb2872e..a899b8394ea 100644 --- a/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common.dtsi +++ b/sdk/u-boot/arch/arm/dts/k3-am62x-sk-common.dtsi @@ -14,7 +14,7 @@ / { aliases { - serial2 = &main_uart0; + serial2 = &main_uart4; mmc0 = &sdhci0; mmc1 = &sdhci1; mmc2 = &sdhci2; @@ -141,10 +141,10 @@ }; &main_pmx0 { - main_uart0_pins_default: main-uart0-pins-default { + main_uart4_pins_default: main-uart4-pins-default { pinctrl-single,pins = < - AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14) UART0_RXD */ - AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14) UART0_TXD */ + AM62X_IOPAD(0x0124, PIN_INPUT, 3) /* (A23) MMC2_SDCD.UART4_RXD */ + AM62X_IOPAD(0x0128, PIN_OUTPUT, 3) /* (B23) MMC2_SDWP.UART4_TXD */ >; }; @@ -273,8 +273,7 @@ }; &main_uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&main_uart0_pins_default>; + status = "disabled"; }; &main_uart1 { @@ -291,7 +290,8 @@ }; &main_uart4 { - status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&main_uart4_pins_default>; }; &main_uart5 {
然后,在 R5 SPL 中的 serial_find_console_or_paner()发生了恐慌。
原因似乎是 ti_clk_of_xlate ()正在返回一个错误。
在 arch/arm/dts/k3-am65-main.dtsi 中、UART0和 UART4定义如下:
main_uart0: serial@2800000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02800000 0x00 0x100>; interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 146 0>; clock-names = "fclk"; }; ... main_uart4: serial@2840000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02840000 0x00 0x100>; interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 155 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 155 0>; clock-names = "fclk"; };
我们假设之所以产生该误差、是因为与此误差相对应的定义 时钟=<&K3_CLKS 155 0> arch/arm/mach-k3/am62x/clk-data.c 中不存在。
static const struct dev_clk soc_dev_clk_data[] = { ... DEV_CLK(146, 0, "main_usart0_fclk_sel_out0"), DEV_CLK(146, 1, "usart_programmable_clock_divider_out0"), DEV_CLK(146, 2, "hsdiv4_16fft_main_1_hsdivout1_clk"), DEV_CLK(146, 5, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"), ... }
您可以建议如何解决此问题吗?