ブート ヘッダーは、PMC bootROM で使用されます。PMC bootROM は、ブート ヘッダーの属性設定に基づいて、PLM (Platform Loader and Manager) を検証して PPU RAM に読み込みます。最初の 16 バイトは SelectMAP Bus の検出に使用されます。PMC bootROM および PLM ではこのデータが無視されるので、Bootgen はチェックサム/SHA/RSA/暗号化などのどの動作にもこのデータを含めません。次のコードは、SelectMAP Bus 幅検出パターン ビットの例を示しています。Bootgen は、選択した幅ごとに、最初の 16 バイトへ次のデータを配置します。
次のリストは、このイメージ ヘッダー幅と該当するビットをそれぞれ示しています。
- X8
- [LSB] 00 00 00 DD 11 22 33 44 55 66 77 88 99 AA BB CC [MSB]
- X16
- [LSB] 00 00 DD 00 22 11 44 33 66 55 88 77 AA 99 CC BB [MSB]
- X32
- [LSB] DD 00 00 00 44 33 22 11 88 77 66 55 CC BB AA 99 [MSB]
注記: デフォルトの SelectMAP 幅は X32 です。
次の表は、 Versal® ACAP のブート ヘッダー形式を示しています。
オフセット (16 進数) | サイズ (バイト) | 説明 | 詳細 |
---|---|---|---|
0x00
|
16 | SelectMAP バス幅 | SelectMAP バス幅を x8、x16、x32 から指定します。 |
0x10
|
4 | QSPI バス幅 | QSPI バス幅の記述。これは、QSPI フラッシュがシングル/デュアル スタック モードであるか、デュアル パラレル モードであるかを識別するために必要です。これはリトル エンディアン フォーマットの 0xAA995566 です。 |
0x14
|
4 | イメージ ID | ブート イメージの ID 文字列。バイト順に 4 バイトの「X」、「N」、「L」、「X」を含みます。これは、リトル エンディアン フォーマットの 0x584c4e58 です。 |
0x18
|
4 | 暗号化キー ソース | このフィールドは、AES キー ソース 0x00000000 を識別するために使用します。
|
0x1C
|
4 | PLM ソース オフセット | PDI の PLM ソース開始アドレス |
0x20
|
4 | PMC データ読み込みアドレス | 読み込む PMC CDO アドレス |
0x24
|
4 | PMC データ長 | PMC CDO 長 |
0x28
|
4 | 合計 PMC データ長 | 認証および暗号化オーバーヘッドを含む PMC CDO 長 |
0x2C
|
4 | PLM 長 | PLM の元のイメージ サイズ |
0x30
|
4 | 合計 PLM 長 | 認証および暗号化オーバーヘッドを含む PLM イメージ サイズ |
0x34
|
4 | ブート ヘッダー属性 | ブート ヘッダー属性 |
0x38
|
32 | ブラック キー | 256 ビットのキーで、ブート ヘッダーで暗号化ステータスがブラック キーに設定されている場合にのみ使用可能です。 |
0x58
|
12 | ブラック IV | ブラック キーを復号化する際に使用する初期化ベクター |
0x64
|
12 | セキュア ヘッダー IV | セキュア ヘッダーの初期化ベクター |
0x70
|
4 | PUF シャッター値 | PUF がシャッターを閉じる前にサンプリングする時間の長さ 注記: このシャッター値は、PUF 登録中に使用されたシャッター値と一致している必要があります。
|
0x74
|
12 |
PMC データのセキュア ヘッダー IV |
PMC データのセキュア ヘッダーを復号化する際に使用される IV。 |
0x80
|
68 | 予約 | すべて 0 で生成されます。 |
0xC4
|
4 | メタ ヘッダー オフセット | メタ ヘッダーの開始のオフセット。 |
0xC8-0x124
|
96 | 予約 | |
0x128
|
2048 | レジスタ初期化 | システム レジスタ初期化用のレジスタ書き込みペアを格納 |
0x928
|
1544 | PUF ヘルパー データ | PUF ヘルパー データ |
0xF30
|
4 | チェックサム | ヘッダー チェックサム |
0xF34
|
76 | SHA3 パディング | SHA3 標準パディング |