Bootgen は、ブート イメージの先頭にブート ヘッダーを追加します。ブート ヘッダー テーブルは、FSBL などのプライマリ ブートローダーのブートに関連する情報を含む構造です。ブート イメージには、このような構造が 1 つだけあります。bootROM はこのテーブルを解析して、FSBL がフラッシュのどこに格納されていて、OCM のどこにロードする必要があるかを判断します。一部の暗号化および認証に関連するパラメーターもここに格納されます。その他のブート イメージ コンポーネントは次のとおりです。
- Zynq-7000 SoC のレジスタ初期化テーブル
- Zynq-7000 SoC イメージ ヘッダー テーブル
- Zynq-7000 SoC のイメージ ヘッダー
- Zynq-7000 SoC のパーティション ヘッダー
- Zynq-7000 SoC の認証証明
ブート ヘッダーには、Zynq-7000 SoC のレジスタ初期化テーブル も含まれます。bootROM は、ブート ヘッダーを使用して、FSBL の位置と長さ、および FSBL に制御を渡す前にシステムを初期化するために必要なその他の情報を検索します。
次の表に、 Zynq®-7000 SoC ブート ヘッダーのアドレス オフセット、パラメーター、および説明を示します。
アドレス オフセット | パラメーター | 説明 |
---|---|---|
0x00 ~ 0x1F | Arm® ベクター テーブル | Bootgen によりダミー ベクター テーブルが挿入されます (Arm オペ コード 0xEAFFFFFE 、初期化されていないベクターの検出を目的とした分岐-セルフ間の無限ループ)。 |
0x20 | 幅検出ワード | QSPI フラッシュがシングル/デュアル スタック モードであるか、デュアル パラレル モードであるかを識別します (必須)。これは、リトル エンディアン フォーマットでは 0xAA995566 です。 |
0x24 | ヘッダー署名 | 4 バイト X、N、L、X をバイト順で含みます。これは、リトル エンディアン フォーマットでは 0x584c4e58 です。 |
0x28 | キー ソース | デバイス内の暗号化キーの場所:
|
0x2C | ヘッダー バージョン |
0x01010000
|
0x30 | ソース オフセット | このイメージ ファイル内の FSBL (ブートローダー) の場所。 |
0x34 | FSBL イメージの長さ | 復号化後の FSBL の長さ。 |
0x38 | FSBL ロード アドレス (RAM) | デスティネーション RAM アドレス。このアドレスに FSBL をコピーします。 |
0x3C | FSBL 実行アドレス (RAM) | FSBL 実行のエントリ ベクター。 |
0x40 | FSBL イメージ全体の長さ | 暗号化後の FSBL の合計サイズ、認証証明 (ある場合) およびパディングを含みます。 |
0x44 | QSPI コンフィギュレーション ワード |
0x00000001 にハードコード化されます。 |
0x48 | ブート ヘッダー チェックサム | オフセット 0x20 ~ 0x44 のワードの合計。ワードはリトル エンディアンと見なされます。 |
0x4c ~ 0x97 | ユーザー定義フィールド | 76 バイト |
0x98 | イメージ ヘッダー テーブル オフセット | イメージ ヘッダー テーブルを指すポインター |
0x9C | パーティション ヘッダー テーブル オフセット | パーティション ヘッダー テーブルを指すポインター |