はあなたの理解は部分的にしか正しい画像
上mkimageを実行することによって得ています。
uImageには、任意の種類のファイルを含めることができ、Linux Imageファイルに限定されません。実際には、(非圧縮の)イメージファイルではない可能性があります(これは通常のmakeオプションではありません)。
zImageのは、圧縮された画像である一方で、それは
(i'amは[原文]間違ったなら、私を修正し、私が何を考えて)ロードアドレスとエントリポイントが含まれていませんあなたが間違っている、のzImageには、カーネルのロードアドレスとエントリポイントが含まれています。カーネルイメージを適切なRAMアドレスに解凍するには、ロードアドレスが必要です。カーネルのエントリーポイントは、解凍された後でそれを実行するために必要です。
のMakefileは、物理メモリ+ 0x8000の開始に変換する必要があり
ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET)
を使用し、ARM用画像とzImageのを構築します。
zImage自体(すなわち、自己抽出プログラム)は、PICの位置独立コードです。 zImageは、RAMのどこにでもロードすることができ、その最初のアドレスで実行することができます。つまり、そのエントリポイントはロードアドレスです。
この場合、なぜzImageの代わりにuImageを使用するのですか? U-ブートの古いバージョンの
、bootzコマンドは、Linuxカーネルのために利用されていない可能性がありますので、選択の余地はありませんでした。
今日は主観的な選択かもしれません。
Linuxカーネルコミュニティでは、カーネルのU-Bootのサポートに多少の憤慨がありました。いくつかの人に道があるとすれば、私はあなたがメインラインソースからuImageを構築することができないという印象を受ける。
私はzImageとuImageの形式が何であるかを知りたいと思っています。
zImageのレイアウトは、基本的にそのリンカー仕様によって与えられます。
ARMの場合arch/arm/boot/compressed/vmlinux.lds.Sを参照してください。
_magic_startには意味のないロードアドレスが含まれています。これは、しかし、要件を起動ARMは、uImageのレイアウトは、単にU-ブートヘッダープラスであるラッセル・キングのDocumentation/arm/Booting
に取って代わられていることをヴィンセント・サンダースBooting ARM Linux
The zImage has a magic number and some useful information near its beginning.
Table 2. Useful fields in zImage head code
Offset into zImage Value Description
0x24 0x016F2818 Magic number used to identify this is an ARM Linux zImage
0x28 start address The address the zImage starts at
0x2C end address The address the zImage ends at
The start and end offsets can be used to determine the length of the compressed image (size = end - start).
...
The start address is usually 0 as the zImage code is position independent.
ノートのセクション5に記載されていますそれが何であれ、画像ファイル。
(私が書いたうまくいけば、何もトムRiniが書いたものと矛盾しない。)
1-「A uImageは、任意の種類のファイルを含めることができ、およびLinuxのイメージファイルに限定されるものではない」、あなたは一例をお願いでき、ありがとうuImageに含めることができるファイルの種類2 - "あなたは間違っている、zImageにはカーネルのロードアドレスとエントリーポイントが含まれています"、私はブートデバイスのロードアドレスではなく、カーネルロードアドレスを話していたとにかく、 zImageは、どこにロードされていようと、PICです。 – Mouin
(1)ヘッダーには、イメージのタイプをエンコードするバイトがあります。 30以上の可能な値については、http://elixir.free-electrons.com/u-boot/latest/source/include/image.h#L197を参照してください。 (2)zImageにはオフセット0x28のロードアドレスが含まれています(しかし誰もそれを使用していないようです)。 – sawdust
OK、クリア、ありがとう – Mouin