2013-05-23 19 views
11

これはu-bootに関連する基本的な質問です。u-boot:再配置

なぜu-bootコード自体が再配置されますか?

[OK]を、uはブートはNORフラッシュまたはブートROM空間から実行している場合、それは理にかなっているが、それはすでにSDRAMから実行されている場合、なぜそれが再び自分自身を再配置しなければならないのでしょうか?

+1

これは閉じていないはずです。 –

+0

これは閉鎖されていますか?これは関連する質問ではありませんか? –

+0

再オープンするにはもう一度投票が必要です。 –

答えて

5

この質問は頻繁に発生します。 Good answersもあります。

開発中にSDRAMにビルドをロードすると便利だと私は同意します。それは私のために働く、私はいつもそれを行う。私はMMU /キャッシュを有効にしない特別なブートコードをフラッシュに持っています。私のu-bootビルドでは、フラッシュとRAMの間でCONFIG_SYS_TEXT_BASEを切り替えます。私は自分の開発を日常的に構築しています。実際問題として

、MMU /キャッシュの再初期化を処理することは自明でない問題だろう。そして、U-Bootは、そのようなものを除外した結果として、単純さからIMOを享受します。

Denxのハイテクリードは彼のopinionを表明しています。 IIRCの彼の他の投稿は、それよりも強く語られています。彼は自分自身を繰り返すことを好まないという印象を受ける。

更新:なぜ再配置します。メモリアクセスはROMよりもRAMより高速ですが、ターゲットに命令キャッシュがない場合は特に重要です。 RAMから実行すると、フラッシュの再プログラミングが可能です。また、(もっとマイナーな)それは "トラップ"命令でソフトウェアブレークポイントを許可します。ターゲットの通常の動作モードによく似ています。 RAMからのバースト読み取りは、早期起動時にエラーが表示される場合があります。 1)U-ブート自体、2)uImage(圧縮されたカーネル)、および3)非圧縮カーネル:

+1

このリンクは実際には質問に対する答えではありませんが、明らかにあなたが想定していることは質問の背後にある動機です。あなたのMMUの再初期化のコメントは興味深いですが、私が実際にMMUを持っていなかったため、u-bootから* u-boot *をロードしたプラットフォームに大きな問題はありませんでした。 –

+0

[手のひらを額に]あなたはそうです。回答が更新されます。 –

1

U-ブート格納するメモリ3つの領域を確保しなければなりません。競合を避けるために、これらの3つの領域を慎重にu-bootに配置する必要があります。

しかし、DRAMメモリドン\ tのにU-ブートをもたらし、前の段階のブート・ローダー、(BL2またはBL1)は、これらの3つの領域上のu-ブートのプレーニングを知っています。したがって、u-bootをDRAMメモリのより低いアドレスにロードして、それにジャンプすることができます。その後、u-bootの後に基本的な初期化を実行し、現在のPCが計画された場所にないことを検出すると、u-bootを再配置してu-bootを計画された場所に移動してジャンプします。

0

SDRAM、NOR型フラッシュからSDRAMへのその後のコピーコードを初期化しなければならないNORフラッシュのコードは、このプロセスは、自分自身をコピーしますあなたはMMUを有効にする可能性があるため、我々は仮想アドレスマッピングを開始します。

関連する問題