GNU/Linux >> Znalost Linux >  >> Linux

Jak zakázat sériovou konzoli (mimo jádro) v u-bootu

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 1CONFIG_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-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.


Linux
  1. Jak (skutečně) zakázat NCQ v Linuxu

  2. Přesměrujte konzolu na sériový port

  3. Jak deaktivovat jeden CPU

  1. Jak dočasně nebo trvale zakázat SELinux

  2. Jak určit přenosovou rychlost sériového portu?

  3. Jak zakázat vše v crontab -l?

  1. Jak zakázat Bootchart?

  2. Jak zakázat SELinux na CentOS?

  3. CentOS / RHEL 6 :Jak deaktivovat IPv6