我建立一个Yocto图像英特尔爱迪生。
一个形象的组成部分之一是u-boot的与特定爱迪生补丁。默认情况下,爱迪生的UART端口用于U-Boot的控制台。我想禁用此功能,但只在串行接口(U-Boot的同时侦听USB和需要留)。
我主要关注的是UART端口上的“按任意键停止自动引导”功能。我需要这个端口连接的是可能会在主设备的引导过程中送东西的附件。
我该如何解决这个问题?是否有这样的一个环境变量,或是否需要修改的来源是什么?
提前致谢!
我几乎一年之后又回到了这个问题,现在我已经设法找到一个妥善的解决办法。
我工作委员会曾在其BSP一个合理的新的u-boot。要禁用串行控制台,我不得不做到以下几点:
#define CONFIG_DISABLE_CONSOLE
#define CONFIG_SILENT_CONSOLE
#define CONFIG_SYS_DEVICE_NULLDEV
#define CONFIG_BOARD_EARLY_INIT_F 1
gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
int board_early_init_f(void)
{
gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
return 0;
}
而已。希望这可以帮助别人!
有没有办法做到这一点,而无需修改的U-Boot源(配置)。
要禁用U-Boot的串行控制台,您需要重新配置的U-Boot。从U-Boot的的主分支的文档:Readme.silent
根据那一个,你需要设置:
CONFIG_SILENT_CONSOLE
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET
CONFIG_SYS_DEVICE_NULLDEV
如果你只想要的U-Boot是沉默也需要CONFIG_SILENT_U_BOOT_ONLY
。
您可能还需要与CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
测试,并可能增加silent 1
到CONFIG_EXTRA_ENV_SETTINGS
。
== ==更新
见一个可能的解决方法如下选项:
CONFIG_ZERO_BOOTDELAY_CHECK
CONFIG_AUTOBOOT_KEYED
CONFIG_AUTOBOOT_KEYED_CTRLC
CONFIG_AUTOBOOT_PROMPT
CONFIG_AUTOBOOT_DELAY_STR
CONFIG_AUTOBOOT_STOP_STR
这些选项将至少给你需要的魔法字符串停止引导的方式。这可能足以帮助你。见README.autoboot
设置U-Boot的环境变量bootdelay
到-2
禁用的UART中断上的U-Boot 2017.01
释放引导过程的能力。看来,-1
是一个特例。