2011-09-26 32 views
11

U-Boot/linuxの知識を体系化したいと思います。各組み込みプラットフォームに最低2つのブートローダフェーズが必要なのは事実ですか?それとも、後続のプロセスが異なるか?組み込みLinux - ブートフェーズ

  1. 第1段階のブートローダ(U-Bootが可能)は、プロセッサのROMの内部に格納されており、更新できません。内部キャッシュメモリから実行されます。このU-Bootは、少なくともRAMの初期化、外部フラッシュの初期化、シリアルコンソールの初期化、第2段階のブートローダの読み込みと実行が必要です。

  2. RWフラッシュメモリには、第2段階のブートローダ(U-Bootが可能)が格納されています。イーサネット、フラッシュRW機能などを処理します。このU-Bootは、カスタマイズして上書きすることができます。主な仕事は、LinuxカーネルをRAMにロードして実行することです。

  3. linuxカーネルの起動。

第1段階のブートローダは常に読み取り専用ですか。

答えて

11

ここで、最初のブートローダはシステムに大きく依存しています。ハードウェアのすべてをラムにファームウェアを列挙してダウンロードし、そのラムからプロセッサを起動する、ある種のUSBブート可能デバイスがあるかもしれません。

通常、最初の起動はフラッシュのようなものです。最初のブートローダをシンプルで、本質的に100%バグがなく、耐久性があり、信頼できるものにして、おそらくシリアルやその他の方法で取得して、2番目の/実際のブートローダを置き換えることができます。

理想的には、2番目のブートローダはフラッシュになりたい、2番目のブートローダは大量の作業を行い、ddrを初期化し、イーサネットベースのデバッグやファイル転送をしたい場合はイーサネットを設定し、 bootpなどがあります。はるかに大きく複雑なので、バグがあり、一次ブートローダよりも頻繁にアップグレードする必要があります。プライマリはうまくいけば上書きされないようになっているので、システムをレンジすることなく、2番目のブートローダを快適に置き換えることができます。

すべてのシステムで上記を使用していますか?いいえ、いくつかの/多くのものは単一のブートローダーしか使用しないかもしれません。シリアルポート上のキーストロークがブートローダを中断し、ブートローダを再ロードできる場所に移動することがあります。レンダリングの機会が少ないブートローダーの開発を可能にしますが、キーストロークとシリアルフラッシュローダーの事を前もって混乱させてしまう可能性もあります。ここでもまた、シリアルローダーの問題は常に存在するとは限らず、ブートローダ開発者にとっては便利です。多くの場合、フォールバックはjtag、またはリムーバブルプロムやレンタル時にプロムを再プログラムするための他のシステムの方法です(また、ボードが作成されたときに初めてシステムでプログラムするときと同じ方法で、コストを節約し、製造中にあらかじめプログラムされたフラッシュを使用して最初の起動が機能するようにレンガブルである)。

linuxのブートローダは、非常にごくわずかなセットアップRAMです。コマンドラインやatagsなどを準備して、Linuxに分岐してください。

答えがシステム、プロセッサ、設計エンジニア(あなたを含む)に大きく依存しているため、読み込まれた質問です。従来のプロセッサはフラッシュから起動し、ブートローダはメモリやその他のものを取得し、次のコードを実行することができます。そのコードの次のビットは、多くの場所、usb、ディスク、フラッシュ/ ROM、イーサネット/ bootp/tftp、pcie、mdio、spi、i2cなどから来ることができます。デザインが望む、または必要とする。

6

第1段階のブートローダは読み取り専用である必要はありませんが、フラッシュの読み取り/書き込み部分が破損した場合は、回復モードでROMに読み取り専用のブートローダを配置すると便利です。それ以外の場合は、リカバリするためにプログラマを物理的にフラッシュチップに接続する必要があります。

4

U-Bootを使用している場合は、ブートローダをスキップして起動時間を短縮できます。つまり、第1段階のブートローダ(SPL)は、第2段階のブートローダ(u-boot)をスキップしてLinuxカーネルを直接ロードします。 U-Bootでは、これはFalcon Modeと呼ばれます。

関連する問題