如何使 i.MX93 上的 U-启动 SPL 和 ATF/BL31 输出静音? 你好,恩智浦社区、 我正在使用一台基于i.MX93的设备,它具有双重用途的控制台端口:它既用于编程/调试设备,又用作与网络设备(思科、Fortigate等)的出站控制台连接。 问题:在启动期间将控制台电缆连接到外部网络设备时,U-Boot SPL 和 ATF/BL31 启动信息会回显到外部设备的控制台。如果外部设备也在启动,它可以将这些字符解释为输入命令,这可能会损坏其引导加载程序或配置。 我成功静音的内容:我已经在我的defconfig中使用以下配置成功地对U-启动进行了静音: CONFIG_SILENT_CONSOLE=y CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC=y CONFIG_SILENT_U_BOOT_ONLY=y CONFIG_SYS_DEVICE_NULLDEV=y CONFIG_AUTOBOOT_KEYED=y CONFIG_AUTOBOOT_STOP_STR="\x03" CONFIG_AUTOBOOT_DELAY_STR="" 我还尝试在 common/spl/spl.c 中添加以下内容,使 SPL 保持沉默: void board_init_r(gd_t *dummy1, ulong dummy2) { /* 在 SPL 中强制静音控制台 */ gd->flags |= GD_FLG_SILENT; /* ... 其余代码...*/ } ```` 仍然输出的内容: 尽管做了这些更改,我仍然在控制台上看到 SPL 和 ATF 输出: U-启动 SPL 2023.04+gf8a2983ec83+p0(2024 年 3 月 4 日-07:25:04 +0000) SOC:0xa1009300 LC:0x2040010 PMIC:低驱动电压模式 DDR:3733MTS M33 准备就绪通知:BL31:v2.8(版本):lf-6.3-1.0.0-0-g8dbe28631 通知:BL31:版本:2024 年 1 月 22 日 17:57:56 问题 -对于 U-启动 SPL:i.MX93 的 U-Boot 2023.04 中是否存在 CONFIG_SPL_SILENT_CONSOLE?如果是这样,除了设置 gd->flags |= GD_FLG_SILENT 之外,还需要哪些其他配置? - 对于 ATF/BL31:建议采用什么方法来静音 ATF NOTICE 消息?我是否应该在 LOG_LEVEL=0 的情况下重建 imx-atf?有任何 i.MX93 特定的注意事项吗? -替代方法:是否有更好的方法可以防止早期启动阶段的输出影响联网设备?我考虑过在硬件寄存器级别禁用 UART TX,但不确定这是否是推荐的方法。 环境: -SoC:i.mx93 -U-Boot 启动版本:2023.04+gf8a2983ec83+p0-ATF 版本:v2.8 (lf-6.6.3-1.0.0-0-0-g8dbe28631 )-编译系统:基于 Yocto 如能提供任何有关关闭这些早期启动阶段的指导,我将不胜感激! 谢谢! 尼特什 Linux Yocto Project Re: How to silence U-Boot SPL and ATF/BL31 output on i.MX93? 大家好 感谢您的反馈和支持。只要稍作调整,我就能使用上述方法正确静音 u-boot-spl、ATF 和 u-boot。 谢谢、 尼特什 Re: How to silence U-Boot SPL and ATF/BL31 output on i.MX93? Sprunki Retak e 是的,我之前在恩智浦系统上处理过这个确切的问题 —— 当你的启动日志让思科交换机感到困惑时,这很烦人!对于 SPL 来说,CONFIG_SPL_SILENT_CONSOLE 确实存在于最近的 U-启动 版本(包括 2023.04)中,但是你还需要确保在 SPL 主机初始化路径的早期就尊重它——有些板稍后会重新启用主机。对于 ATF/BL31,你说对了:在 ATF make 命令中使用 LOG_LEVEL=0 进行重建(例如,make plat=imx93 LOG_LEVEL=0)——那里没有 i.MX93 特定的捕获量,只要确保 Yocto 配方通过该标志即可。 Re: How to silence U-Boot SPL and ATF/BL31 output on i.MX93? 你好 Jorge, 我在 Arm-trusted-启动 中添加了几个补丁,你可以更改宏注意事项 (...),比如你可以将 UART TX 引脚混到 GPIO 模式... [Wizard @Oz 解码器] $ cat br-extrn/patches/Arm-trusted-firmware/单行版本-time.patch --- a/bl31/bl31_main.c +++ b/bl31/bl31_main.c @@ -124,8 +124,8 @@ void bl31_main(void) /* Init per-world context registers for non-secure world */ manage_extensions_nonsecure_per_world(); - NOTICE("BL31:%s\n", version_string); - NOTICE("BL31:%s\n", build_message); + NOTICE("BL31:%s", version_string); + /* NOTICE("BL31:%s\n", build_message); */ #if FEATURE_DETECTION /* Detect if features enabled during compilation are supported by PE.*/ --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -436,7 +436,7 @@ endef # 允许 覆盖时间戳,例如用于可重现的 版本,或者 # 同步多个项目的时间戳。 # 必须设置为 C 字符串(包括引号(如适用))。 -BUILD_MESSAGE_TIMESTAMP?=__TIME__ ", "__DATE__ +BUILD_MESSAGE_TIMESTAMP? = $ (shell LC_ALL=C 日期-u +' (%Y-% m-%D %T) ') .PHONY:图书馆 @@ -560,8 +560,8 @@ $ (elf):$ (OBJS) $(默认链接器脚本)IFDEF make_build_strings $( 调用 make_build_strings,$ (build_DIR) /BUILD_MESSAGE.O)else-@echo 'con_sage.O st char build_message [] = " build: " $ (build_message_Timestamp);\-const ChaR 版本_字符串 [] = "${VERSION_STRING} ";\ + @echo 'const char build_message [] = " 构建时间:$ (BUILD_MESSAGE_TIMESTAMP) ";\ + const char version_string [] = "${VERSION_STRING}${BUILD_MESSAGE_TIMESTAMP} ";\ c onst char 版本 [] = "${VERSION} "; '|\ $$ (CC) $$ (TF_CFLAGS) $$ (CFLAGS)-xc-c--o $ (BUILD_DIR) /build_message.o endif Re: How to silence U-Boot SPL and ATF/BL31 output on i.MX93? 你好
在 U-启动 中没有添加 CONFIG_SPL_SILENT_CONSOLE 的选项。
我的其他建议是添加变量:
"silent=1\0" \
并赋予它一个不同于"0" 的值:
您可以在此检查配置:
使用静音控制台构建 uboot 映像。
关于在硬件层面禁用 UART TX,这可能是可行的。 在 ATF 或 SPL 中配置键盘设置,在 U-Boot/Linux 启动之前保持 TX 处于非活动状态。
顺祝商祺!
查看全文