我正在为英特尔爱迪生构建Yocto图像。
其中一个图像组件是u-boot,带有Edison特定的补丁。默认情况下,Edison的UART端口用于u-boot控制台。我想禁用此功能,但仅限于串行接口(u-boot也会侦听USB并且需要保留)。
我主要担心的是" 按任意键停止自动提取" UART端口上的功能。我需要此端口来连接可能在主设备启动过程中发送内容的附件。
如何解决此问题?是否有环境变量,或者我是否需要修改源?
提前致谢!
答案 0 :(得分:6)
我差不多一年后才回到这个问题,现在我已经找到了合适的解决方案。
我正在处理的董事会在 BSP 中有一个相当新的 u-boot 。要禁用串行控制台,我必须执行以下操作:
将以下定义添加到主板的配置标题(位于 include / 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
找到拱门文件(类似 arch / x86 / cpu / architecture / architecture.c )并将此调用添加到其 early_init_f 功能中。它实际上修改了board的全局数据变量以具有这些标志:
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;
}
就是这样。希望这有助于其他人!
答案 1 :(得分:1)
将u-boot环境变量bootdelay
设置为-2
将禁用UART中断U-Boot 2017.01
发行版中的启动过程的功能。看来-1
是特例。
答案 2 :(得分:0)
Here is the video,其中逐步说明了如何防止U-boot控制台中断Raspberry Pi上的UART的自动启动并发送调试消息-如果其他板使用U-boot,则其他板也应类似地工作。但是,您将需要在u-boot源文件夹中找到适合您主板的正确配置文件。我知道只有链接不回答,所以下面是解决方案的快速分解:
安装依赖项
sudo apt install git make gcc gcc-aarch64-linux-gnu
Git克隆正式的u-boot存储库。或者,您可以git clone my fork of repository,这里我已经进行了无提示自动启动的必要更改-但是,如果您需要最新版本,则需要克隆官方存储库并自己进行更改。
git clone --depth 1 git://git.denx.de/u-boot.git
cd u-boot
找到您的电路板配置文件-它们取决于型号,例如对于Raspberry Pi 3是rpi_3_defconfig,对于Raspberry Pi 4是rpi_4_defconfig,依此类推。在文件末尾添加以下行
CONFIG_BOOTDELAY=-2
CONFIG_SILENT_CONSOLE=y
CONFIG_SYS_DEVICE_NULLDEV=y
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET=y
CONFIG_SILENT_U_BOOT_ONLY=y
第一行消除了启动延迟,因此自动启动不会被UART接口上发送的消息打断。接下来的四行启用静默启动,因此U-boot不会在UART本身上发送任何消息,因为这些消息可能反过来会使您的设备混乱。还剩下一件事,设置静默启动环境变量。更改板子的头文件(ro raspberry pi是include / configs / rpi.h):
#define CONFIG_EXTRA_ENV_SETTINGS \
"dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
"silent=1\0" \
ENV_DEVICE_SETTINGS \
ENV_DFU_SETTINGS \
ENV_MEM_LAYOUT_SETTINGS \
BOOTENV
现在配置为
make rpi_3_defconfig
从存储库主文件夹开始并使用
make CROSS_COMPILE=aarch64-linux-gnu-
构建过程完成后,您将拥有一个u-boot.bin文件,您需要对其进行重命名并将其复制到Raspberry Pi SD卡中。现在,您的Raspberry Pi在启动过程中将不会受到UART上任何消息的干扰。引导后的UART功能将不受影响。
相关文档:https://gitlab.denx.de/u-boot/u-boot/blob/HEAD/doc/README.autoboot https://gitlab.denx.de/u-boot/u-boot/blob/HEAD/doc/README.silent https://wiki.ubuntu.com/ARM/RaspberryPi