GNU/Linux >> Linux の 問題 >  >> Linux

u-boot でシリアル コンソール (非カーネル) を無効にする方法

ほぼ 1 年後にこの問題に戻ってきましたが、適切な解決策を見つけることができました.

私が取り組んでいたボードには、かなり新しい u-boot がありました BSP で .シリアル コンソールを無効にするには、次の手順を実行する必要がありました:

  • 次の定義をボードの構成ヘッダーに追加します (include/configs/board.h にあります) ):

    #define CONFIG_DISABLE_CONSOLE
    #define CONFIG_SILENT_CONSOLE
    #define CONFIG_SYS_DEVICE_NULLDEV
    
  • ボードに ear_init_f があるかどうかを確認します 同じファイルで有効化:

    #define CONFIG_BOARD_EARLY_INIT_F 1
    
  • arch ファイルを見つけます (arch/x86/cpu/architecture/architecture.c のようなもの) )、この呼び出しをその early_init_f に追加します 関数。実際には、これらのフラグを持つようにボードのグローバル データ変数を変更します:

    gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
    
  • 私のボードにはそれがなかったので、関数全体を追加する必要がありました

     int board_early_init_f(void)
     {
          gd->flags |= (GD_FLG_SILENT | GD_FLG_DISABLE_CONSOLE);
          return 0;
     }
    

それでおしまい。これが誰かの役に立てば幸いです!


U-Boot のソース (構成) を変更せずにこれを行う方法はありません。

U-Boot でシリアル コンソールを無効にするには、U-Boot を再構成する必要があります。 U-Boot のマスター ブランチのドキュメント:Readme.silent

それによると、設定する必要があります:

CONFIG_SILENT_CONSOLE
CONFIG_SILENT_CONSOLE_UPDATE_ON_SET
CONFIG_SYS_DEVICE_NULLDEV

CONFIG_SILENT_U_BOOT_ONLY U-Boot のみをサイレントにしたい場合にも必要です。

CONFIG_SILENT_CONSOLE_UPDATE_ON_RELOC でテストする必要があるかもしれません silent 1 を追加する可能性があります CONFIG_EXTRA_ENV_SETTINGS まで .

==更新 ==

考えられる回避策については、次のオプションを参照してください:

CONFIG_ZERO_BOOTDELAY_CHECK
CONFIG_AUTOBOOT_KEYED
CONFIG_AUTOBOOT_KEYED_CTRLC
CONFIG_AUTOBOOT_PROMPT
CONFIG_AUTOBOOT_DELAY_STR
CONFIG_AUTOBOOT_STOP_STR

これらのオプションは、少なくとも起動を停止するために魔法の文字列を要求する方法を提供します。あなたを助けるにはそれで十分かもしれません。 README.autoboot を参照してください


u-boot 環境変数 bootdelay の設定 -2まで UART が U-Boot 2017.01 でブート プロセスを中断する機能を無効にします リリース。 -1 のようです は特殊なケースです。

common/autoboot.c を参照 詳細については、U-Boot ソース ツリーから。


Linux
  1. CentOSでSELinuxを無効にする方法は?

  2. LinuxでNCQを(実際に)無効にする方法

  3. コンソールをシリアル ポートにリダイレクトする

  1. SELinuxを一時的または永続的に無効にする方法

  2. NGINXでETagを無効にする方法

  3. CentOS / RHEL 6:IPv6 を無効にする方法

  1. 画面上の通知を無効にする方法 -D -R

  2. 1 つの CPU を無効にする方法

  3. シリアルポートのボーレートを決定する方法は?