Vracím se k tomuto problému téměř po roce, nyní se mi podařilo najít správné řešení.
Deska, na které jsem pracoval, měla přiměřeně nový u-boot v jeho BSP . Chcete-li zakázat sériovou konzolu, musel jsem provést následující:
-
Přidejte následující definice do hlavičky konfigurace desky (nachází se v include/configs/board.h ):
#define CONFIG_DISABLE_CONSOLE #define CONFIG_SILENT_CONSOLE #define CONFIG_SYS_DEVICE_NULLDEV
-
Zkontrolujte, zda má vaše deska early_init_f povoleno ve stejném souboru:
#define CONFIG_BOARD_EARLY_INIT_F 1
-
Najděte soubor arch (Něco jako arch/x86/cpu/architecture/architecture.c ) a přidejte toto volání do jeho early_init_f funkce. Ve skutečnosti upravuje globální datovou proměnnou desky tak, aby měla tyto příznaky:
gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
-
Moje deska ji neměla, takže jsem musel přidat celou funkci
int board_early_init_f(void) { gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE); return 0; }
A je to. Doufám, že to pomůže někomu dalšímu!
Neexistuje žádný způsob, jak to udělat, aniž byste upravili zdroj (konfiguraci) U-Boot.
Chcete-li zakázat sériovou konzolu v U-Bootu, musíte znovu nakonfigurovat U-Boot. Dokumentace z hlavní větve U-Boot:Readme.silent
Podle toho je potřeba nastavit:
CONFIG_SILENT_CONSOLE
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET
CONFIG_SYS_DEVICE_NULLDEV
CONFIG_SILENT_U_BOOT_ONLY
je také potřeba, pokud chcete, aby byl tichý pouze U-Boot.
Možná budete také muset otestovat s CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
a případně přidání silent 1
až CONFIG_EXTRA_ENV_SETTINGS
.
==AKTUALIZACE ==
Podívejte se na následující možnosti možného řešení:
CONFIG_ZERO_BOOTDELAY_CHECK
CONFIG_AUTOBOOT_KEYED
CONFIG_AUTOBOOT_KEYED_CTRLC
CONFIG_AUTOBOOT_PROMPT
CONFIG_AUTOBOOT_DELAY_STR
CONFIG_AUTOBOOT_STOP_STR
Tyto možnosti vám alespoň poskytnou způsob, jak vyžadovat magický řetězec k zastavení spouštění. To by vám mohlo stačit. Viz README.autoboot
Nastavení proměnné prostředí u-boot bootdelay
až -2
deaktivuje schopnost UART přerušit proces zavádění na U-Boot 2017.01
uvolnění. Zdá se, že -1
je zvláštní případ.
Viz common/autoboot.c
podrobnosti naleznete ve zdrojovém stromu U-Boot.