器件型号: J722SXH01EVM
工具/软件:
此常见问题解答是否适用于 J722?
【常见问题解答】J721S2XSOMXEVM:为 SPL 中的引导日志启用其他 UART?
每个器件有 3 个不同的补丁、是否应该有特定的一个用于 J722S?
为什么需要构建 BL31 和 BL32?
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.
器件型号: J722SXH01EVM
工具/软件:
此常见问题解答是否适用于 J722?
【常见问题解答】J721S2XSOMXEVM:为 SPL 中的引导日志启用其他 UART?
每个器件有 3 个不同的补丁、是否应该有特定的一个用于 J722S?
为什么需要构建 BL31 和 BL32?
尊敬的 Tony:
请应用以下补丁将控制台 UART 切换到 wkup UART。
UBoot 更改:
From 60055683a6cf30ab2f7e05c6fdafc7e5a9e458ac Mon Sep 17 00:00:00 2001
From: Gokul Praveen <g-praveen@ti.com>
Date: Tue, 30 Sep 2025 12:13:42 +0530
Subject: [PATCH] Enable WKUP UART IN J722S
---
arch/arm/dts/k3-j722s-evm.dts | 9 +++++----
arch/arm/dts/k3-j722s-r5-evm.dts | 4 ++--
arch/arm/mach-k3/r5/j722s/clk-data.c | 5 +++++
arch/arm/mach-k3/r5/j722s/dev-data.c | 1 +
4 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/arch/arm/dts/k3-j722s-evm.dts b/arch/arm/dts/k3-j722s-evm.dts
index d799be55..0b8181db 100644
--- a/arch/arm/dts/k3-j722s-evm.dts
+++ b/arch/arm/dts/k3-j722s-evm.dts
@@ -19,8 +19,8 @@
model = "Texas Instruments J722S EVM";
aliases {
- serial0 = &wkup_uart0;
- serial2 = &main_uart0;
+ serial0 = &main_uart0;
+ serial2 = &wkup_uart0;
mmc0 = &sdhci0;
mmc1 = &sdhci1;
usb0 = &usb0;
@@ -28,7 +28,7 @@
};
chosen {
- stdout-path = &main_uart0;
+ stdout-path = &wkup_uart0;
};
memory@80000000 {
@@ -338,7 +338,8 @@
/* WKUP UART0 is used by Device Manager firmware */
pinctrl-names = "default";
pinctrl-0 = <&wkup_uart0_pins_default>;
- status = "reserved";
+ clock-frequency = <96000000>;
+ status = "okay";
bootph-all;
};
diff --git a/arch/arm/dts/k3-j722s-r5-evm.dts b/arch/arm/dts/k3-j722s-r5-evm.dts
index b1788e40..b81b5a97 100644
--- a/arch/arm/dts/k3-j722s-r5-evm.dts
+++ b/arch/arm/dts/k3-j722s-r5-evm.dts
@@ -14,8 +14,8 @@
aliases {
remoteproc0 = &sysctrler;
remoteproc1 = &a53_0;
- serial0 = &wkup_uart0;
- serial2 = &main_uart0;
+ serial0 = &main_uart0;
+ serial2 = &wkup_uart0;
};
a53_0: a53@0 {
diff --git a/board/ti/j722s/j722s.env b/board/ti/j722s/j722s.env
index 4cc66e8d..58470990 100644
--- a/board/ti/j722s/j722s.env
+++ b/board/ti/j722s/j722s.env
@@ -8,7 +8,7 @@
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}
diff --git a/arch/arm/mach-k3/r5/j722s/clk-data.c b/arch/arm/mach-k3/r5/j722s/clk-data.c
index b4f27af3..ff1edbf3 100644
--- a/arch/arm/mach-k3/r5/j722s/clk-data.c
+++ b/arch/arm/mach-k3/r5/j722s/clk-data.c
@@ -206,6 +206,7 @@ static const struct clk_data clk_list[] = {
CLK_MUX("main_usart0_fclk_sel_out0", main_usart0_fclk_sel_out0_parents, 2, 0x108280, 0, 1, 0),
CLK_DIV("sam62_pll_ctrl_wrap_main_0_chip_div24_clk_clk", "sam62_pll_ctrl_wrap_main_0_sysclkout_clk", 0x41011c, 0, 5, 0, 0),
CLK_DIV("sam62_pll_ctrl_wrap_mcu_0_chip_div24_clk_clk", "sam62_pll_ctrl_wrap_mcu_0_sysclkout_clk", 0x402011c, 0, 5, 0, 0),
+ CLK_DIV("hsdiv4_16fft_mcu_0_hsdivout2_clk", "pllfracf2_ssmod_16fft_mcu_0_foutvcop_clk", 0x4040088, 0, 7, 0, 0),
};
static const struct dev_clk soc_dev_clk_data[] = {
@@ -302,6 +303,10 @@ static const struct dev_clk soc_dev_clk_data[] = {
DEV_CLK(170, 1, "hsdiv0_16fft_main_12_hsdivout0_clk"),
DEV_CLK(170, 2, "board_0_tck_out"),
DEV_CLK(170, 3, "sam62_pll_ctrl_wrap_main_0_chip_div1_clk_clk"),
+ DEV_CLK(114, 0, "hsdiv4_16fft_mcu_0_hsdivout2_clk"),
+ DEV_CLK(114, 3, "wkup_clksel_out0"),
+ DEV_CLK(114, 4, "hsdiv3_16fft_main_15_hsdivout0_clk"),
+ DEV_CLK(114, 5, "hsdiv4_16fft_mcu_0_hsdivout0_clk"),
};
const struct ti_k3_clk_platdata j722s_clk_platdata = {
diff --git a/arch/arm/mach-k3/r5/j722s/dev-data.c b/arch/arm/mach-k3/r5/j722s/dev-data.c
index 59176c98..ea2a69b9 100644
--- a/arch/arm/mach-k3/r5/j722s/dev-data.c
+++ b/arch/arm/mach-k3/r5/j722s/dev-data.c
@@ -55,6 +55,7 @@ static struct ti_dev soc_dev_list[] = {
PSC_DEV(170, &soc_lpsc_list[10]),
PSC_DEV(177, &soc_lpsc_list[11]),
PSC_DEV(55, &soc_lpsc_list[12]),
+ PSC_DEV(114, &soc_lpsc_list[0]),
};
const struct ti_k3_pd_platdata j722s_pd_platdata = {
--
2.34.1
编译步骤:
=============
编译 uboot:
内核更改:
From d61b6a289604ae25811b03e1091b3e8cd07b3c0c Mon Sep 17 00:00:00 2001
From: Gokul Praveen <g-praveen@ti.com>
Date: Tue, 30 Sep 2025 12:28:54 +0530
Subject: [PATCH] ENable wkup uart in Linux for J722S
---
arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 8 ++++----
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
index c105ea4e9..1afae4262 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
@@ -61,6 +61,7 @@ SYSC_OMAP2_SOFTRESET |
power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 114 0>;
clock-names = "fck";
+ clock-frequency = <96000000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0x2b300000 0x100000>;
diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
index 146c5580f..c51918b5d 100644
--- a/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-j722s-evm.dts
@@ -18,15 +18,15 @@ / {
model = "Texas Instruments J722S EVM";
aliases {
- serial0 = &wkup_uart0;
- serial2 = &main_uart0;
+ serial0 = &main_uart0;;
+ serial2 = &wkup_uart0;
serial3 = &main_uart5;
mmc0 = &sdhci0;
mmc1 = &sdhci1;
};
chosen {
- stdout-path = &main_uart0;
+ stdout-path = &wkup_uart0;
};
memory@80000000 {
@@ -534,7 +534,7 @@ &wkup_uart0 {
/* WKUP UART0 is used by Device Manager firmware */
pinctrl-names = "default";
pinctrl-0 = <&wkup_uart0_pins_default>;
- status = "reserved";
+ status = "okay";
bootph-all;
};
--
2.34.1
此致
Gokul
尊敬的 Gokul:
您使用的是哪个版本的 SDK? 无法与 SDK11.0.0 配合使用
Uboot 补丁不匹配:
tony@ubuntu22:~/ti-processor-sdk-linux-edgeai-j722s-evm-11_00_00_08/board-support/ti-u-boot-2025.01+git$ git apply --check Uboot_wkup_uart.txt error: arch/arm/dts/k3-j722s-evm.dts: No such file or directory error: patch failed: arch/arm/dts/k3-j722s-r5-evm.dts:14 error: arch/arm/dts/k3-j722s-r5-evm.dts: patch does not apply error: patch failed: board/ti/j722s/j722s.env:8 error: board/ti/j722s/j722s.env: patch does not apply error: patch failed: arch/arm/mach-k3/r5/j722s/clk-data.c:206 error: arch/arm/mach-k3/r5/j722s/clk-data.c: patch does not apply error: patch failed: arch/arm/mach-k3/r5/j722s/dev-data.c:55 error: arch/arm/mach-k3/r5/j722s/dev-data.c: patch does not apply
内核补丁不匹配:
tony@ubuntu22:~/ti-processor-sdk-linux-edgeai-j722s-evm-11_00_00_08/board-support/ti-linux-kernel-6.12.17+git-ti$ git apply --check Kernel_wkup_uart.txt error: arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi: No such file or directory error: patch failed: arch/arm64/boot/dts/ti/k3-j722s-evm.dts:18 error: arch/arm64/boot/dts/ti/k3-j722s-evm.dts: patch does not apply
尊敬的 Gokul:
它仍从第一个 UART 输出、并停止在启动内核时...

U-Boot SPL 2024.04-ti-dirty (Oct 14 2025 - 13:28:31 +0800) SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.6--v10.01.06 (Fiery Fox)') SPL initial stack usage: 17048 bytes Trying to boot from MMC2 Authentication passed Authentication passed Authentication passed Authentication passed Authentication passed Starting ATF on ARM64 core... Sciserver Testapp Built On: Oct 17 2024 17:39:03 Sciserver Version: v2024.10.0.0-REL.MCUSDK.10.00.00.25-2-gae935+ RM_PM_HAL Version: v10.01.03 Starting Sciserver..... PASSED [IPC RPMSG ECHO] Version: REL.MCUSDK.09.00.00.16 (Oct 17 2024 17:39:41): U-Boot SPL 2024.04-ti-dirty (Oct 14 2025 - 13:27:53 +0800) SYSFW ABI: 4.0 (firmware rev 0x000a '10.1.6--v10.01.06 (Fiery Fox)') Trying to boot from MMC2 Authentication passed Authentication passed U-Boot 2024.04-ti-dirty (Oct 14 2025 - 13:27:53 +0800) SoC: J722S SR1.0 HS-FS Model: Texas Instruments J722S EVM DRAM: 2 GiB (effective 8 GiB) Core: 80 devices, 29 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial@2b300000 Out: serial@2b300000 Err: serial@2b300000 Net: eth0: ethernet@8000000port@1 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc1 is current device SD/MMC found on device 1 940 bytes read in 71 ms (12.7 KiB/s) Loaded env from uEnv.txt Importing environment from mmc1 ... Running uenvcmd ... Failed to load '/lib/firmware/j722s-mcu-r5f0_0-fw' 625536 bytes read in 253 ms (2.4 MiB/s) Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices Load Remote Processor 2 with data@addr=0x82000000 625536 bytes: Success! 11804840 bytes read in 452 ms (24.9 MiB/s) Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices Load Remote Processor 3 with data@addr=0x82000000 11804840 bytes: Success! 11804840 bytes read in 453 ms (24.9 MiB/s) Warning: Did not detect image signing certificate. Skipping authentication to prevent boot failure. This will fail on Security Enforcing(HS-SE) devices Load Remote Processor 4 with data@addr=0x82000000 11804840 bytes: Success! 21029376 bytes read in 940 ms (21.3 MiB/s) 78013 bytes read in 76 ms (1002 KiB/s) Working FDT set to 88000000 6490 bytes read in 73 ms (85.9 KiB/s) ## Flattened Device Tree blob at 88000000 Booting using the fdt blob at 0x88000000 Working FDT set to 88000000 ERROR: reserving fdt memory region failed (addr=880000000 size=20000000 flags=4) Loading Device Tree to 000000008fee9000, end 000000008fffffff ... OK Working FDT set to 8fee9000 Starting kernel ...
是的、在之前的重放中、第一个是 wkup_uart、第三个是 MAIN_uart0:
#1。 几乎所有日志都打印到 wkup_uart(第一个)、但启动内核后不再打印...
#2. 仍然有两行通知 BL31 日志输出到 MAIN_uart0(第三个)。 该时间就 在 tiboot3 阶段结束。
下面是用于比较的原始控制台日志。

客户正在使用 SDK11 进行开发、如果有相应的补丁、会更好。
尊敬的 Tony:
#2. 仍然有两行通知 BL31 日志输出到 MAIN_uart0(第三个)。 它 处于 tiboot3 阶段的末尾。
ATF 和 OPTEE 打印仍将进入主 UART、就像那些打印是为了 wkup UART 一样。由于系统固件使用 wkup UART 进行日志记录、引导会挂起。
我也在以下常见问题解答中添加了该内容:
【常见问题解答】J721S2XSOMXEVM:为 SPL 中的引导日志启用其他 UART?
=======================
#1. 几乎所有日志都打印到 wkup_uart(第一个)、但启动内核后不再打印...
是否可以在进入 uboot 命令行后共享 printenv 命令的输出?
此致
Gokul
Tony、
[ 1.337701] MMIO 0x2800000 (IRQ = 310、base_baud = 3000000) 处的 2800000.serial: ttyS0 是 8250
我只在内核引导日志中显示了这一行、它适用于 MAIN_uart0、但没有关于 wkup UART 的消息。
请确保内核器件树中确实启用了 wkup_uart0、并且其别名设置为 SERIAL2。 (内核命令行具有“console=ttyS2115200n8“。)
尊敬的 Bin、Gokul、
#1。 Attach é 修改后的 dts 文件
#2. 从 dtb 文件恢复了 dts
#3. 使用修改后的文件引导、只需将内核 dtb 替换为原始文件、 首先将日志输出到 wkup_uart、然后输出到 MAIN_UART、并可启动以登录控制台。

#4.更正: 以下属性对控制台输出没有任何区别。
--- a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi @@ -61,6 +61,7 @@ SYSC_OMAP2_SOFTRESET | power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 114 0>; clock-names = "fck"; + clock-frequency = <96000000>; #address-cells = <1>;
尊敬的 Tony:
[报价 userid=“35100" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1571206/j722sxh01evm-j722s-evm-enable-wkup_uart-for-boot-logs-in-spl/6113842#1。 Attach é 修改后的 dts 文件
[/报价]您修改后的 EVM DTS 和重新命名的 DTS 有别名“SERIAL2 =&wkup_uart0“、但左侧 wkup_UART 控制台日志的最后第三行 — ttyS2 被分配给 2800000.serial、即 MAIN_uart0。 因此、DTB 和控制台日志之间的 UART 控制台别名不匹配。 如果您使用正确的 EVM dtb 文件启动、请再次检查。
11 月 12 日提供的控制台引导日志似乎是正确的:
ttyS0 分配给 2800000.serial、它是 MAIN_uart0、
但引导日志不会显示 wkup_uart0 已初始化。 请应用以下内核器件树补丁、查看内核是否可以初始化 wkup_uart0:
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
index dc1e9f531f8f..0c8f232ff1a1 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62p-wakeup.dtsi
@@ -58,7 +58,6 @@ SYSC_OMAP2_SOFTRESET |
<SYSC_IDLE_SMART_WKUP>;
ti,syss-mask = <1>;
ti,no-reset-on-init;
- power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
clocks = <&k3_clks 114 0>;
clock-names = "fck";
#address-cells = <1>;尊敬的 Tony:
[13.204416] 平台 2b300050.目标模块:延迟探头待定
日志中的最后一行告知内核未能启用 wkup_uart0。 请应用以下内核补丁来解决该问题。
diff -git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
索引 9ed9239b1228..947df3fa6cdd 100644
-- a/drivers/bus/ti-sysc.c
++ b/drivers/bus/ti-sysc.c
@@–937、7 +937、7 @@ static int sysc_map_and_check_registers (struct sysc *ddata)
if(错误)
返回错误;
- 错误= sysc_deber_non_critical (ddata);
+// 错误= sysc_debert_non_critical (ddata);
if(错误)
返回错误;
立即工作。 都将尝试迁移到 SDK11。
root@j722s-evm:/opt/edgeai-gst-apps# uname -a Linux j722s-evm 6.6.44-ti-g541c20281af7-dirty #2 SMP PREEMPT Wed Nov 19 11:48:25 CST 2025 aarch64 GNU/Linux root@j722s-evm:/opt/edgeai-gst-apps#