Ich komme fast ein Jahr später auf dieses Problem zurück, jetzt habe ich es geschafft, eine angemessene Lösung zu finden.
Das Board, an dem ich arbeitete, hatte einen ziemlich neuen U-Boot in seinem BSP . Um die serielle Konsole zu deaktivieren, musste ich Folgendes tun:
-
Fügen Sie die folgenden Definitionen zum Konfigurationsheader des Boards hinzu (zu finden in include/configs/board.h ):
#define CONFIG_DISABLE_CONSOLE #define CONFIG_SILENT_CONSOLE #define CONFIG_SYS_DEVICE_NULLDEV
-
Überprüfen Sie, ob Ihr Board early_init_f hat aktiviert in derselben Datei:
#define CONFIG_BOARD_EARLY_INIT_F 1
-
Suchen Sie die Arch-Datei (so etwas wie arch/x86/cpu/architecture/architecture.c ) und fügen Sie diesen Aufruf zu seinem early_init_f hinzu Funktion. Es ändert tatsächlich die globale Datenvariable des Boards, um diese Flags zu haben:
gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
-
Mein Board hatte keine, also musste ich die ganze Funktion hinzufügen
int board_early_init_f(void) { gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE); return 0; }
Das ist es. Hoffe, das hilft jemand anderem!
Es gibt keine Möglichkeit, dies zu tun, ohne die Quelle (Konfiguration) von U-Boot zu ändern.
Um die serielle Konsole in U-Boot zu deaktivieren, müssen Sie U-Boot neu konfigurieren. Die Dokumentation aus dem Master-Zweig von U-Boot:Readme.silent
Dementsprechend müssen Sie Folgendes festlegen:
CONFIG_SILENT_CONSOLE
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET
CONFIG_SYS_DEVICE_NULLDEV
CONFIG_SILENT_U_BOOT_ONLY
wird auch benötigt, wenn nur U-Boot stumm sein soll.
Möglicherweise müssen Sie auch mit CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
testen und eventuell silent 1
hinzufügen bis CONFIG_EXTRA_ENV_SETTINGS
.
==AKTUALISIEREN ==
Sehen Sie sich die folgenden Optionen für eine mögliche Problemumgehung an:
CONFIG_ZERO_BOOTDELAY_CHECK
CONFIG_AUTOBOOT_KEYED
CONFIG_AUTOBOOT_KEYED_CTRLC
CONFIG_AUTOBOOT_PROMPT
CONFIG_AUTOBOOT_DELAY_STR
CONFIG_AUTOBOOT_STOP_STR
Diese Optionen geben Ihnen zumindest die Möglichkeit, eine magische Zeichenfolge zu verlangen, um den Startvorgang zu stoppen. Es könnte ausreichen, um Ihnen zu helfen. Siehe README.autoboot
Setzen der u-boot-Umgebungsvariable bootdelay
bis -2
deaktiviert die Fähigkeit des UART, den Startvorgang auf U-Boot 2017.01
zu unterbrechen Veröffentlichung. Es scheint, dass -1
ist ein Sonderfall.
Siehe common/autoboot.c
Einzelheiten finden Sie in Ihrem U-Boot-Quellbaum.