u-bootの問題をデバッグする方法は?

u-bootの問題をデバッグする方法は?

私は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;

これにより、押されたキーは返されません。

関連情報