これは、u-boot に関する基本的な質問です。
u-boot コード自体が再配置されるのはなぜですか?
u-boot が NOR フラッシュまたはブート ROM 空間から実行されている場合は理にかなっていますが、すでに SDRAM から実行されている場合、なぜもう一度再配置する必要があるのでしょうか?
これは、u-boot に関する基本的な質問です。
u-boot コード自体が再配置されるのはなぜですか?
u-boot が NOR フラッシュまたはブート ROM 空間から実行されている場合は理にかなっていますが、すでに SDRAM から実行されている場合、なぜもう一度再配置する必要があるのでしょうか?
U-Boot は、1) U-Boot 自体、2) uImage (圧縮されたカーネル)、および 3) 圧縮されていないカーネルを格納するメモリ内に 3 つの領域を予約する必要があります。これら 3 つの領域は、競合を防ぐために慎重に U-Boot に配置する必要があります。
ただし、u-boot を DRAM メモリに移動する前段階のブートローダー (BL2 または BL1) は、これら 3 つの領域での u-boot のプレーニングを認識しません。そのため、U-Boot を DRAM メモリの下位アドレスにロードしてそこにジャンプすることしかできません。次に、u-boot がいくつかの基本的な初期化を実行し、現在の PC が計画された場所にないことを検出した後、u-boot は、計画された場所に u-boot を移動してそこにジャンプする relocate 関数を呼び出します。