Je reviens sur ce problème presque un an plus tard, maintenant j'ai réussi à trouver une solution appropriée.
La carte sur laquelle je travaillais avait un u-boot raisonnablement nouveau dans son BSP . Pour désactiver la console série, j'ai dû faire ce qui suit :
-
Ajoutez les définitions suivantes à l'en-tête de configuration de la carte (situé dans include/configs/board.h ):
#define CONFIG_DISABLE_CONSOLE #define CONFIG_SILENT_CONSOLE #define CONFIG_SYS_DEVICE_NULLDEV
-
Vérifiez si votre carte a early_init_f activé dans le même fichier :
#define CONFIG_BOARD_EARLY_INIT_F 1
-
Trouvez le fichier arch (quelque chose comme arch/x86/cpu/architecture/architecture.c ) et ajoutez cet appel à son early_init_f fonction. Il modifie en fait la variable de données globale de la carte pour avoir ces drapeaux :
gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
-
Ma carte n'en avait pas, j'ai donc dû ajouter toute la fonction
int board_early_init_f(void) { gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE); return 0; }
C'est ça. J'espère que cela aidera quelqu'un d'autre !
Il n'y a aucun moyen de le faire, sans modifier la source (configuration) de U-Boot.
Pour désactiver la console série dans U-Boot, vous devez reconfigurer U-Boot. La documentation de la branche master de U-Boot :Readme.silent
Selon celui-ci, vous devez définir :
CONFIG_SILENT_CONSOLE
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET
CONFIG_SYS_DEVICE_NULLDEV
CONFIG_SILENT_U_BOOT_ONLY
est également nécessaire si vous souhaitez que seul U-Boot soit silencieux.
Vous devrez peut-être également tester avec CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC
et éventuellement en ajoutant silent 1
à CONFIG_EXTRA_ENV_SETTINGS
.
==MISE À JOUR ==
Consultez les options suivantes pour une éventuelle solution de contournement :
CONFIG_ZERO_BOOTDELAY_CHECK
CONFIG_AUTOBOOT_KEYED
CONFIG_AUTOBOOT_KEYED_CTRLC
CONFIG_AUTOBOOT_PROMPT
CONFIG_AUTOBOOT_DELAY_STR
CONFIG_AUTOBOOT_STOP_STR
Ces options vous donneront au moins un moyen d'exiger une chaîne magique pour arrêter le démarrage. Cela pourrait suffire à vous aider. Voir README.autoboot
Définition de la variable d'environnement u-boot bootdelay
à -2
désactive la possibilité pour l'UART d'interrompre le processus de démarrage sur U-Boot 2017.01
Libération. Il semble que -1
est un cas particulier.
Voir common/autoboot.c
depuis votre arborescence source U-Boot pour plus de détails.