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:使用 WKUP_UART0 作为主 UART0

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1562893/j721excpxevm-using-wkup-uart0-as-main-uart0

器件型号:J721EXCPXEVM


工具/软件:

您好、

我们将 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 文件夹

    • 转到以下路径并应用这些更改:
      • 关断速度 : /board-support/

    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 更改:

    • 转到以下路径并应用这些更改:
      • 关断速度 : /board-support/trusted-firmware-a-2.12 + Git

    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 更改:

    • 转到以下路径并应用这些更改:
      • 关断速度 : /board-support/optee-os-4.5.0 + Git

    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:

    • 切换到以下目录:
      • 关断速度 : /board-support/trusted-firmware-a-2.12 + Git
    • 请按照“ 设置工具链路径 “和 正在构建 ATF“ 从下面的链接中获取
    • 复制名为“ bl31.bin“ 从该受信任固件文件夹到 以下路径:
      • 关断速度  : /board-support/prebuilt-images  
    • 从运行 make u-boot 并从 board-support/ti-u-boot-2025.01+git/build 文件夹中获取 tiboot3.bin、tispl.bin 和 u-boot、img。

    此致

    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 */、因此我们不能完全确定以后将其用于控制台是否会导致问题。

    如果您能分享一些有关“系统固件“到底是什么的参考资料或文档、也会非常有帮助。


    提前感谢、

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

    尊敬的 Santiago:

    您能否为此提出一个单独的线程、以便系统固件专家可以回答该问题。

    此致

    Gokul