ブート ヘッダーについて
Bootgen は、ブート イメージの先頭にブート ヘッダーを追加します。ブート ヘッダー テーブルは、FSBL などのプライマリ ブートローダーのブートに関連する情報を含む構造です。ブート イメージには、このような構造が 1 つだけあります。bootROM はこのテーブルを解析して、FSBL がフラッシュのどこに格納されていて、OCM のどこにロードする必要があるかを判断します。一部の暗号化および認証に関連するパラメーターもここに格納されます。ブート イメージには、次のコンポーネントが含まれます。
bootROM は、ブート ヘッダーを使用して、FSBL の位置と長さ、および FSBL に制御を渡す前にシステムを初期化するために必要なその他の情報を検索します。次の表に、 Zynq® UltraScale+™ MPSoC デバイスのアドレス オフセット、パラメーター、および説明を示します。
アドレス オフセット | パラメーター | 説明 |
---|---|---|
0x00-0x1F | Arm® ベクター テーブル | XIP ELF ベクター テーブル:
|
0x20 | 幅検出ワード | QSPI の幅検出に使用されます。これは、リトル エンディアン フォーマットでは 0xAA995566 です。 |
0x24 | ヘッダー署名 | バイト オーダーで 4 バイトの「X」、「N」、「L」、「X」を含みます。これは、リトル エンディアン フォーマットの 0x584c4e58 です。 |
0x28 | キー ソース |
|
0x2C | FSBL 実行アドレス (RAM) | OCM 内の FSBL 実行アドレスまたは XIP ベース アドレス。 |
0x30 | ソース オフセット | PMUFW がない場合は、FSBL の開始オフセットです。PMUFW がない場合は、FSBLPMUFW の開始です。 |
0x34 | PMU イメージの長さ | PMU ファームウェアの元のイメージの長さ (バイト)。(0~128KB)。
|
0x38 | PMU FW 全体の長さ | PMUFW イメージ全体の長さ.(PMUFW 長 + 暗号化オーバーヘッド) |
0x3C | FSBL イメージの長さ | 元の FSBL イメージの長さ (バイト)。(0~250KB)。0 の場合、XIP ブート イメージと見なされます。 |
0x40 | FSBL イメージ全体の長さ | FSBL イメージの長さ + FSBL イメージの暗号化オーバーヘッド + 認証証明 + 64 バイト アライメント + ハッシュ サイズ (インテグリティ チェック)。 |
0x44 | FSBL イメージ属性 | 属性ビットを参照してください。 |
0x48 | ブート ヘッダー チェックサム | オフセット 0x20 ~ 0x44 のワードの合計。ワードはリトル エンディアンと見なされます。 |
0x4C-0x68 | 難読化/ブラック キーの格納 | 難読化キーまたはブラック キーを格納します。 |
0x6C | シャッター値 | PUF でシャッター オフセット時間およびシャッター オープン時間を設定する 32 ビットの PUF_SHUT レジスタ値。 |
0x70 ~ 0x94 | ユーザー定義フィールド (UDF) | 40 バイト。 |
0x98 | イメージ ヘッダー テーブル オフセット | イメージ ヘッダー テーブルを指すポインター。 |
0x9C | パーティション ヘッダー テーブル オフセット | パーティション ヘッダーを指すポインター。 |
0xA0-0xA8 | セキュア ヘッダー IV | ブートローダー パーティションのセキュア ヘッダー用 IV。 |
0x0AC-0xB4 | 難読化/ブラック キー IV | 難読化キーまたはブラック キーの IV。 |