私はBeaglebone Blackにカスタムシステムを統合する作業をしています。ほとんどの場合、すべてがうまく機能しますが、時々電源を入れたときにシステムが起動しないことがあります。シリアルデバッグケーブルが接続されている場合、これは発生しません。 (したがって、u-bootとカーネルメッセージを見ることができます。)
しかし、まれにエラーが発生した場合は、シリアルケーブルを接続するとu-bootプロンプトが表示されることがわかりました。カーネルをロードし、そこからすべてをロードするようにu-bootを手動で設定すると、すぐに起動できます(eMMCなどを読むことができます)。
私の最初の考えは、シリアルラインにu-bootが中断される一種のノイズがあるということでした(基本的に2秒で中断されると思います)。しかし、0秒の遅延(スペースバーを待たない)を使用するようにu-bootを再コンパイルしましたが、問題は解決されませんでした。
ブート中にシリアルケーブルを接続せずにu-bootがハングするのはなぜですか?これにより問題が解決します。 Heisenbug?あらゆる種類のロギングにアクセスできますか?
答え1
かつてuart RXピンがグランドに接続されたボードがありました。したがって、u-bootは常にボタンが押されたことを表示します。
どのバージョンを使用しているのかわかりませんが...
存在する
/common/autoboot.c
機能
static int abortboot_normal(int bootdelay)
返す前に行を追加してください
abort = 0;
これにより、押されたキーは返されません。