Вот видео, в котором пошагово объясняется, как сделать так, чтобы консоль U-boot не прерывала автозагрузку и не отправляла отладку сообщения по UART на Raspberry Pi — должно работать аналогично для других плат, при условии, что они используют U-boot. Однако вам нужно будет найти правильные файлы конфигурации для вашей платы в исходной папке u-boot. Я знаю, что ответы только на ссылки не одобряются, поэтому вот краткое описание решения:
Установите зависимости
sudo apt install git make gcc gcc-aarch64-linux-gnu
Git клонирует официальный репозиторий u-boot. В качестве альтернативы вы можете клонировать мой форк репозитория, где у меня уже есть необходимые изменения для тихой автозагрузки. - но если вам нужна последняя версия, то вам нужно клонировать официальный репозиторий и самостоятельно вносить изменения.
git clone --depth 1 git://git.denx.de/u-boot.git
cd u-boot
Найдите файлы конфигурации вашей платы - они зависят от модели, например. rpi
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
defconfig для Raspberry Pi 3, rpi
#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
defconfig для Raspberry Pi 4 и так далее. Добавьте следующие строки в конец файла
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, потому что сообщения, в свою очередь, могут запутать ваше устройство. Осталась еще одна мелочь, установить переменную среды тихой загрузки. Измените заголовочный файл для вашей платы (для 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, который вам нужно переименовать и скопировать на SD-карту Raspberry Pi. Теперь вас 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
person
Dmitry Maslov
schedule
29.10.2020