私は最近、オープンソースのブートローダーであるU-bootを実行しているAtmel AT91SAM9G20 SBCで取り組んでいる厄介なバグの原因を突き止めました。問題の核心は、U-bootがハードウェアを私が構築したものとは異なるように構成することを期待していたため、一部のデバイスレジスタが誤って構成されていたことでした。
私は問題を理解したので、レジスタを正しく構成するためにU-bootを微調整する必要があります。プログラムの最後に数行のコードを追加することで盲目的にこれを行うことができますが、それは面倒です。
これは私に私の質問をもたらします:U-bootがmain()から開始してすべてのファイルのすべての可能なコードパスを読み取るよりも効率的に機能する方法を理解するにはどうすればよいですか?私はファイル内をぐるぐる回ってみて、関連する識別子の近くのコードを調べました。これは効果がないことが判明しました。ほとんどのコードは私が気にしていないサブシステムのドライバーのようです。私は実際にブートローダーがどのようにうまく機能するかを理解していますが、私の素朴なアプローチよりも優れた方法があることを願っています。