Where, how that first bootloader is is heavily system dependent. You might have some sort of usb bootable device that enumerates and downloads firmware to ram all in hardware then the processor boots from that ram.
通常、最初の起動はある種のフラッシュです。最初のブートローダを非常にシンプルで、本質的に 100% バグがなく、耐久性と信頼性が高く、おそらくシリアルまたはその他の方法で侵入できるようにして、それを使用して 2 番目の/実際のブートローダを置き換えることができるようにすることをお勧めします。
理想的には、2 番目のブートローダーもフラッシュにする必要があります。2 番目のブートローダーは、ddr の初期化、イーサネットのセットアップ (イーサネット ベースのデバッグやファイルの転送、bootp など) が必要な場合は、大部分の作業を行う必要があります。非常に大きく複雑であるため、バグがあり、プライマリ ブートローダーよりも頻繁にアップグレードする必要があることが予想されます。プライマリは上書きされないように保護されているため、システムをブリックすることなく 2 番目のブートローダーを快適に交換できます。
すべてのシステムが上記を使用していますか? いいえ、一部/多くの人は単一のブートローダーしか使用していない可能性があります。おそらく非常に早い段階で一時停止するため、シリアル ポートでキーを押すとブートローダーが中断され、ブートローダーを再ロードできる場所に移動できます。ブリックの可能性が少ないブートローダーの開発を可能にしますが、キーストロークとシリアルフラッシュローダーのことを含めて、最初のビットを台無しにした場合でも可能性があります. ここでも、シリアル ローダーは常に存在するとは限りません。ブートローダー開発者にとっては便利なだけです。多くの場合、フォールバックは jtag、リムーバブル prom、または prom をブリックしたときに再プログラムするためのその他のシステム方法です (また、ボードが作成されたときにシステムで初めてプログラムするのと同じ方法で、
Linux ブートローダーは、これらのいずれかまたはすべてを必要とせず、非常に最小限の RAM のセットアップ、コマンド ラインまたは atags などの準備、および Linux への分岐を必要としません。
答えはシステム、プロセッサ、設計エンジニア (あなたを含む) に大きく依存するため、これは難しい質問です。従来、プロセッサはフラッシュから起動し、ブートローダーがメモリやその他のものを取得して、次のコードを実行できるようにしていました。その次のコードは、usb、ディスク、フラッシュ/ROM、イーサネット/bootp/tftp、pcie、mdio、spi、i2c など、さまざまな場所から取得できます。また、パワーオン リセットと Linux 起動の間には、次のように多くのレイヤーが存在する可能性があります。デザインが望んでいる、または必要としています。