如何在u-boot的禁用串行控制台(非核心)

问题描述 投票:6回答:3

我建立一个Yocto图像英特尔爱迪生。

一个形象的组成部分之一是u-boot的与特定爱迪生补丁。默认情况下,爱迪生的UART端口用于U-Boot的控制台。我想禁用此功能,但只在串行接口(U-Boot的同时侦听USB和需要留)。

我主要关注的是UART端口上的“按任意键停止自动引导”功能。我需要这个端口连接的是可能会在主设备的引导过程中送东西的附件。

我该如何解决这个问题?是否有这样的一个环境变量,或是否需要修改的来源是什么?

提前致谢!

linux embedded-linux u-boot yocto intel-edison
3个回答
7
投票

我几乎一年之后又回到了这个问题,现在我已经设法找到一个妥善的解决办法。

我工作委员会曾在其BSP一个合理的新的u-boot。要禁用串行控制台,我不得不做到以下几点:

  • 添加以下定义了电路板的配置报头(位于包括/ CONFIGS / board.h): #define CONFIG_DISABLE_CONSOLE #define CONFIG_SILENT_CONSOLE #define CONFIG_SYS_DEVICE_NULLDEV
  • 检查您的主板已经在同一个文件early_init_f启用: #define CONFIG_BOARD_EARLY_INIT_F 1
  • 找到拱文件(喜欢的东西弓/ 86 / CPU /建筑/ architecture.c)和此调用添加到其early_init_f功能。它实际上改变董事会的全局数据变量有这些标志: 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; }

而已。希望这可以帮助别人!


3
投票

有没有办法做到这一点,而无需修改的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 1CONFIG_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


2
投票

设置U-Boot的环境变量bootdelay-2禁用的UART中断上的U-Boot 2017.01释放引导过程的能力。看来,-1是一个特例。

See common/autoboot.c from your U-Boot source tree了解详情。

© www.soinside.com 2019 - 2024. All rights reserved.