工具/软件:
您好、
我们将 J721EXCPXEVM 与 J7200XSOMXEVM 配合使用 以进行产品开发。
我们想知道是否可以使用 WKUP_UART0 打印所有引导日志、u-boot 终端以及 Linux 的终端。 配置此功能的步骤是什么?
我想以配置 main-UART0 的方式使用此 wkup-UART。
Im ti-processor-sdk-linux-j7200-evm-11_00_10_01。

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.
工具/软件:
您好、
我们将 J721EXCPXEVM 与 J7200XSOMXEVM 配合使用 以进行产品开发。
我们想知道是否可以使用 WKUP_UART0 打印所有引导日志、u-boot 终端以及 Linux 的终端。 配置此功能的步骤是什么?
我想以配置 main-UART0 的方式使用此 wkup-UART。
Im ti-processor-sdk-linux-j7200-evm-11_00_10_01。

尊敬的 Santiago:
你可以尝试下面的补丁:
diff --git a/arch/arm/mach-k3/r5/j7200/clk-data.c b/arch/arm/mach-k3/r5/j7200/clk-data.c
index eb8436de..b95d4435 100644
--- a/arch/arm/mach-k3/r5/j7200/clk-data.c
+++ b/arch/arm/mach-k3/r5/j7200/clk-data.c
@@ -62,6 +62,17 @@ static const char * const wkup_i2c0_mcupll_bypass_clksel_out0_parents[] = {
"gluelogic_hfosc0_clkout",
};
+static const char * const wkupusart_clk_sel_out0_parents[] = {
+ "hsdiv4_16fft_mcu_1_hsdivout3_clk",
+ "postdiv2_16fft_main_1_hsdivout5_clk",
+};
+
+static const char * const wkup_usart_mcupll_bypass_clksel_out0_parents[] = {
+ "wkupusart_clk_sel_out0",
+ "gluelogic_hfosc0_clkout",
+};
+
+
static const char * const main_pll_hfosc_sel_out0_parents[] = {
"gluelogic_hfosc0_clkout",
"board_0_hfosc1_clk_out",
@@ -419,6 +430,8 @@ static const struct clk_data clk_list[] = {
CLK_DIV("osbclk0_div_out0", "obsclk0_mux_out0", 0x108000, 8, 8, 0, 0),
CLK_DIV("k3_pll_ctrl_wrap_main_0_chip_div24_clk_clk", "k3_pll_ctrl_wrap_main_0_sysclkout_clk", 0x41011c, 0, 5, 0, 0),
CLK_DIV("k3_pll_ctrl_wrap_wkup_0_chip_div24_clk_clk", "k3_pll_ctrl_wrap_wkup_0_sysclkout_clk", 0x4201011c, 0, 5, 0, 0),
+CLK_MUX("wkupusart_clk_sel_out0", wkupusart_clk_sel_out0_parents, 2, 0x43008064, 0, 1, 0),
+ CLK_MUX("wkup_usart_mcupll_bypass_clksel_out0", wkup_usart_mcupll_bypass_clksel_out0_parents, 2, 0x43008060, 0, 1, 0),
};
static const struct dev_clk soc_dev_clk_data[] = {
@@ -554,6 +567,10 @@ static const struct dev_clk soc_dev_clk_data[] = {
DEV_CLK(323, 0, "main_pll8_sel_extwave_out0"),
DEV_CLK(323, 1, "pllfracf_ssmod_16fft_main_8_foutvcop_clk"),
DEV_CLK(323, 2, "hsdiv0_16fft_main_8_hsdivout0_clk"),
+ DEV_CLK(287, 2, "wkup_usart_mcupll_bypass_clksel_out0"),
+ DEV_CLK(287, 3, "wkupusart_clk_sel_out0"),
+ DEV_CLK(287, 4, "gluelogic_hfosc0_clkout"),
+ DEV_CLK(287, 5, "k3_pll_ctrl_wrap_wkup_0_chip_div1_clk_clk"),
};
const struct ti_k3_clk_platdata j7200_clk_platdata = {
diff --git a/arch/arm/mach-k3/r5/j7200/dev-data.c b/arch/arm/mach-k3/r5/j7200/dev-data.c
index 8ce6796f..ae24e573 100644
--- a/arch/arm/mach-k3/r5/j7200/dev-data.c
+++ b/arch/arm/mach-k3/r5/j7200/dev-data.c
@@ -69,6 +69,7 @@ static struct ti_dev soc_dev_list[] = {
PSC_DEV(103, &soc_lpsc_list[14]),
PSC_DEV(104, &soc_lpsc_list[15]),
PSC_DEV(102, &soc_lpsc_list[16]),
+ PSC_DEV(287, &soc_lpsc_list[13]),
};
const struct ti_k3_pd_platdata j7200_pd_platdata = {
diff --git a/dts/upstream/src/arm64/ti/k3-j7200-common-proc-board.dts b/dts/upstream/src/arm64/ti/k3-j7200-common-proc-board.dts
index 735ffd3f..2823ff13 100644
--- a/dts/upstream/src/arm64/ti/k3-j7200-common-proc-board.dts
+++ b/dts/upstream/src/arm64/ti/k3-j7200-common-proc-board.dts
@@ -18,9 +18,9 @@
model = "Texas Instruments J7200 EVM";
aliases {
- serial0 = &wkup_uart0;
+ serial0 = &main_uart0;
serial1 = &mcu_uart0;
- serial2 = &main_uart0;
+ serial2 = &wkup_uart0;
serial3 = &main_uart1;
serial5 = &main_uart3;
mmc0 = &main_sdhci0;
@@ -270,7 +270,7 @@
&wkup_uart0 {
/* Wakeup UART is used by System firmware */
- status = "reserved";
+ status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&wkup_uart0_pins_default>;
bootph-all;
diff --git a/dts/upstream/src/arm64/ti/k3-j7200-mcu-wakeup.dtsi b/dts/upstream/src/arm64/ti/k3-j7200-mcu-wakeup.dtsi
index d9a40b48..c24b1c8f 100644
--- a/dts/upstream/src/arm64/ti/k3-j7200-mcu-wakeup.dtsi
+++ b/dts/upstream/src/arm64/ti/k3-j7200-mcu-wakeup.dtsi
@@ -274,11 +274,10 @@
compatible = "ti,j721e-uart", "ti,am654-uart";
reg = <0x00 0x42300000 0x00 0x100>;
interrupts = <GIC_SPI 897 IRQ_TYPE_LEVEL_HIGH>;
- clock-frequency = <48000000>;
+ clock-frequency = <96000000>;
power-domains = <&k3_pds 287 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 287 2>;
clock-names = "fclk";
- status = "disabled";
};
mcu_uart0: serial@40a00000 {
此致
Gokul
尊敬的 Gokul:
很抱歉、为了编译这些 DTS、我必须执行“make u-boot“吗? 还是“make linux-dtbs“?
我有点困惑、因为我发现 board-support/ti-u-boot-2025.01+git/dts/上游 src /arm64/ti/k3-j7200-common-proc-board.dts 中的文件与 board-support/ti-linux-kernel-6.12.17+git-ti/arch/arm64/boot/j7200-dts/ti-proc-k3-common-board.dts 中的文件相同 。
那么、如果我要更改我打印所有引导日志的 UART、我是否应该更改这两个文件并为 uboot 编译器件树和为内核编译器件树?
此外、在 u-boot 之前、此设备树在哪里加载? tiboot3.bin 是否具有响应性? o tispl.bin?
感谢您的帮助。
尊敬的 Santiago:
很抱歉、要编译这些 DTS、我必须执行“make u-boot“吗? 还是“make linux-dtbs“?
您必须使用“make u-boot“。
那么、如果我要更改 UART(打印所有引导日志)、我是否应该更改这两个文件并为 uboot 编译设备树、为内核编译设备树?
这只需更改 R5 SPL、A72SPL 和 uboot 的 UART。 一旦确认它在 SPL 和 UBoot 中工作、我们就会转到 Linux 内核。
此致
Gokul
尊敬的 Gokul:
我应用了您建议的修改、但显然、它根本不起作用。 引导 EVM 时、我可以在 WKUP UART0 中看到以下输出:
U-Boot SPL 2025.01-ti-g70667128cb5b-dirty (Sep 12 2025 - 12:23:41 +0200) SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)') Trying to boot from MMC1 Skipping authentication on GP device Skipping authentication on GP device Skipping authentication on GP device Skipping authentication on GP device Skipping authentication on GP device Loading Environment from nowhere... OK init_env from device 17 not supported! Starting ATF on ARM64 core...
之后、没有显示任何其他内容、并且似乎引导过程没有继续进行。 看起来它会无限期地卡在这一点上。
这些日志是否来自 R5 SPL? 系统可能会卡住在这里吗? 
我们如何启用更详细的日志以了解失败的原因?
此问题是否与tiboot3.bin文件有关、或者是否可能tispl.bin未正确加载、从而导致 A72 SPL 无法正常运行?
编辑的文件路径如下:
- /ti-processor-sdk-linux-j7200-evm-11_00_10_01/board-support/ti-u-boot-2025.01+git/dts/上游/arm64/ti/k3-j7200-common-proc-board.dts src
- /ti-processor-sdk-linux-j7200-evm-11_00_10_01/board-support/ti-u-boot-2025.01+git/git/dts/上游 src /arm64/ti/k3-j7200-mcu-wakeup.dtsi
- /ti-processor-sdk-linux-j7200-evm-11_00_10_01/board-support/ti-u-boot-2025.01+git/arch/arm/mach-k3/r5/j7200/dev-data.c
-/board-support/ti-u-boot-2025.01 + git/arch/arm/mach-k3/r5/j7200/clk-data.c
感谢您的帮助。
尊敬的 Santiago:
除了先前所做的更改之外、您是否还可以添加这些更改:
u-boot 文件夹
diff --git a/board/ti/j721e/j721e.env b/board/ti/j721e/j721e.env
index 54cffa52..37214c3c 100644
--- a/board/ti/j721e/j721e.env
+++ b/board/ti/j721e/j721e.env
@@ -14,7 +14,7 @@ defined(CONFIG_TARGET_J721E_R5_EVM)
name_kern=Image
console=ttyS2,115200n8
-args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x02800000
+args_all=setenv optargs ${optargs} earlycon=ns16550a,mmio32,0x42300000
${mtdparts}
run_kern=booti ${loadaddr} ${rd_spec} ${fdtaddr}
ATF 更改:
diff --git a/plat/ti/k3/include/platform_def.h b/plat/ti/k3/include/platform_def.h index 6a05392ad..8a463ba05 100644 --- a/plat/ti/k3/include/platform_def.h +++ b/plat/ti/k3/include/platform_def.h @@ -90,14 +90,14 @@ /* Platform default console definitions */ #ifndef K3_USART_BASE -#define K3_USART_BASE (0x02800000 + 0x10000 * K3_USART) +#define K3_USART_BASE 0x42300000 #endif /* USART has a default size for address space */ #define K3_USART_SIZE 0x1000 #ifndef K3_USART_CLK_SPEED -#define K3_USART_CLK_SPEED 48000000 +#define K3_USART_CLK_SPEED 96000000 #endif /* Crash console defaults */
OPTEE OS 更改:
diff --git a/core/arch/arm/plat-k3/platform_config.h b/core/arch/arm/plat-k3/platform_config.h index cffca0a07..d15f9a08f 100644 --- a/core/arch/arm/plat-k3/platform_config.h +++ b/core/arch/arm/plat-k3/platform_config.h @@ -9,11 +9,11 @@ #include <mm/generic_ram_layout.h> -#define UART0_BASE 0x02800000 +#define UART0_BASE 0x42300000 -#define CONSOLE_UART_BASE (UART0_BASE + CFG_CONSOLE_UART * 0x10000) +#define CONSOLE_UART_BASE UART0_BASE #define CONSOLE_BAUDRATE 115200 -#define CONSOLE_UART_CLK_IN_HZ 48000000 +#define CONSOLE_UART_CLK_IN_HZ 96000000 #define DRAM0_BASE 0x80000000 #define DRAM0_SIZE 0x80000000 diff --git a/mk/clang.mk b/mk/clang.mk index d08b26e6f..8a01cd9db 100644 --- a/mk/clang.mk +++ b/mk/clang.mk @@ -31,7 +31,7 @@ comp-cflags-warns-clang := -Wno-language-extension-token \ # Note, use the compiler runtime library (libclang_rt.builtins.*.a) instead of # libgcc for clang -libgcc$(sm) := $(shell $(CC$(sm)) $(CFLAGS$(arch-bits-$(sm))) \ +libgcc$(sm) := $(shell $(CC$(sm)) $(LIBGCC_LOCATE_CFLAGS) $(CFLAGS$(arch-bits-$(sm))) \ -rtlib=compiler-rt -print-libgcc-file-name 2> /dev/null) # Core ASLR relies on the executable being ready to run from its preferred load
此致
Gokul
尊敬的 Gokul:
在应用您建议的所有更改后、我仍然卡在 R5 SPL 阶段。 启动过程似乎没有正确进行到后续步骤。
只是为了确认、在进行这些更改后、我使用make u-boot顶层文件夹中的重建了所有内容。 然后,从board-support/ti-u-boot-2025.01+git/build,我采取了以下文件:
tiboot3.bin
tispl.bin
u-boot.img
我将这些文件复制到中 BOOT0 eMMC 进行分区。 我的理解是、它应该开始将引导日志打印到 复位后的 WKUP_UART0 就像它做的那样 主 UART0 。
我们的目标是将此 UART 用作引导日志的主接口、因为它是引导序列中可用的第一个 UART。 这将使我们能够尽早捕获和诊断引导过程中发生的任何潜在故障。
尊敬的 Santiago:
您还必须使用以下步骤重新编译 ATF:
此致
Gokul
尊敬的 Santiago:
[报价 userid=“656660" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1562893/j721excpxevm-using-wkup-uart0-as-main-uart0/6046189我是否必须执行中所做的相同步骤:
-上游/arm64/ti/k3-j7200-common-proc-board.dts src
上游/mcu/arm64/ti/k3-j7200-mcu-wakeup.dtsi src
但这次是在内核文件夹中吗?
是的、必须在内核文件夹中应用相同的更改、并且这些文件显示在 ( /arch/arm64/boot/dts/ti) 文件夹中找到。
您是否还能在完成和测试后共享应用于 Linux 内核的补丁?
此致
Gokul
再次您好、Gokul、
我还有一个关于 WKUP_UART 的问题。
如果我们同时将 WKUP_UART 用于引导日志和 Linux 终端、这是否会对系统产生任何影响?
由于设备树将其标记为/*系统固件使用唤醒 UART */、因此我们不能完全确定以后将其用于控制台是否会导致问题。
如果您能分享一些有关“系统固件“到底是什么的参考资料或文档、也会非常有帮助。
提前感谢、