イメージ ヘッダーは、ELF ファイル、CFI、CDO、データ ファイルなど、各イメージに関連する情報を含む構造の配 列です。各イメージに複数のパーティションを含めることができます。たとえば、ELF には複数のロード可能なセク ションを含めることができ、それぞれがブート イメージ内にパーティションを形成します。イメージ ヘッダーは、
このイメージに関連付けられたパーティション (パーティション ヘッダー) を指定します。BIF キーワード image を 使用すると、複数のパーティション ファイルを 1 つのイメージにグループ化できます。これは、共通のサブシステム または関数に関連するパーティションを 1 つのグループにまとめるのに便利です。Bootgen は各ファイルに必要な パーティションを作成して、そのイメージに共通のイメージ ヘッダーを作成します。次の表には、イメージに関連す るパーティション数の情報も含まれます。
表 23: Versal ACAP イメージ ヘッダー
オフセット 名前 説明
0x0 第 1 パーティション ヘッダー 第 1 パーティション ヘッダーまでのワー ド オフセット
0x4 パーティションの数 このイメージのパーティション数
0x8 取り消し ID メタ ヘッダーの取り消し ID
0xC イメージ属性 イメージ属性の表を参照
0x10 〜 0x1C イメージの名前 イメージの ASCII 名。最大 16 文字まで。
パディングが必要な場合は 0 で埋められ ます。
0x20 イメージ/ノード ID イメージを初期化するリソース ノードを 定義します。
0x24 固有 ID デバイス リソースで必要な場合にアフィ
ニティ/互換性指示子を定義します。
0x28 親の固有 ID イメージのコンフィギュレーション内容
に必要な親リソース UID を定義します (必要な場合)。
0x2c 関数 ID イメージ コンフィギュレーション データ
の固有関数をキャプチャするために使用 される識別子
0x30 イメージ コピーの DDR 下位アドレス BIF で memcpy がイネーブルの場合にイ メージをコピーする必要のある DDR の下 位 32 ビット アドレス
0.34 イメージ コピーの DDR 上位アドレス BIF で memcpy がイネーブルの場合にイ メージをコピーする必要のある DDR の上 位 32 ビット アドレス
0x38 予約
0x3C チェックサム 前のワードすべての合計。
次の表に、イメージ ヘッダーの属性を示します。
表 24: Versal ACAP イメージ ヘッダーの属性
ビット フィールド 名前 説明
31:9 予約 0
8 遅延ハンドオフ 0: イメージを今すぐハンドオフします
(デフォルト)。
1: イメージを後でハンドオフします。
7 遅延読み込み 0: イメージを今すぐ読み込みます (デフ
ォルト)。
1: イメージを後で読み込みます。
6 メモリへのコピー 0: メモリにコピーしません (デフォルト)。
1: イメージをメモリにコピーします。
5:3 イメージ オーナー 0: PLM (デフォルト) 1: PLM 以外 2 〜 7: 予約
2:0 予約 0
0x0 パーティションのデータ ワード長 暗号化されたパーティション データの長 さ。
0x4 抽出されたデータ ワード長 暗号化されていないデータの長さ。
0x8 パーティションの合計ワード長 (認証証明
を含む) 暗号化、パディング、拡張、認証を加算し
た合計長さ。
0xC 次のパーティション ヘッダー オフセット 次のパーティション ヘッダーのオフセッ ト。
0x10 デスティネーション実行アドレス (下位半
分) ロード後のこのパーティションの実行可
能アドレスの下位 32 ビット。
0x14 デスティネーション実行アドレス (上位半
分) ロード後のこのパーティションの実行可
能アドレスの上位 32 ビット。
0x18 デスティネーション読み込みアドレス (下
位半分) このパーティションがロードされる RAM アドレスの下位 32 ビット。ELF ファイル の場合、Bootgen が自動的に ELF フォー マットから読み出されます。RAW データ を使用する場合は、読み込み先を指定する 必要があります。CFI およびコンフィギ ュレーション データの場合は、
0xFFFF_FFFF にする必要があります。
0x1C デスティネーション読み込みアドレス (上
位半分) このパーティションがロードされる RAM アドレスの上位 32 ビット。ELF ファイル の場合、Bootgen が自動的に ELF フォー マットから読み出されます。RAW データ を使用する場合は、読み込み先を指定する 必要があります。CFI およびコンフィギ ュレーション データの場合は、
0xFFFF_FFFF にする必要があります。
0x20 イメージのデータ ワード オフセット ブート イメージの開始に対するパーティ ション データの位置。
0x24 属性ビット パーティション属性の表を参照。
0x28 セクション数 イメージ タイプが ELF の場合は、この ELF にさらにいくつのパーティションが 関連付けられているかが示されます。
0x2C チェックサム ワード オフセット ブート イメージ内のチェックサム ワード の位置。
0x30 パーティション ID パーティション ID。
0x34 認証証明ワード オフセット ブート イメージ内の認証証明の位置。
0x38 〜 0x40 IV パーティションのセキュア ヘッダー用
IV。
0x44 暗号化キー セレクト 暗号化ステータス:
0x00000000: 暗号化なし 0xA5C3C5A3: eFuse レッド キー 0xA5C3C5A5: eFuse ブラック キー 0x3A5C3C5A: BBRAM レッド キー 0x3A5C3C59: BBRAM ブラック キー 0xA35C7C53: ブート ヘッダー ブラッ ク キー
0xC5C3A5A3: ユーザー キー 0 0xC3A5C5B3: ユーザー キー 1 0xC5C3A5C3: ユーザー キー 2 0xC3A5C5D3: ユーザー キー 3 0xC5C3A5E3: ユーザー キー 4 0xC3A5C5F3: ユーザー キー 5 0xC5C3A563: ユーザー キー 6 0xC3A5C573: ユーザー キー 7 0x5C3CA5A3: eFuse ユーザー キー 0 0x5C3CA5A5: eFuse ユーザー ブラッ ク キー 0
0xC3A5C5A3: eFuse ユーザー キー 1 0xC3A5C5A5: eFuse ユーザー ブラッ ク キー 1
0x48 ブラック IV そのパーティションのキーを暗号化する
ために使用される IV。
0x54 取り消し ID パーティション取り消し ID
0x58 〜 0x78 予約 0
0x7C ヘッダー チェックサム パーティション ヘッダーの以前のワード の合計値。
次の表に、パーティション ヘッダー テーブルの属性をリストします。
表 26: Versal ACAP パーティション ヘッダー テーブル属性
ビット フィールド 名前 説明
31:29 予約 0x0
28:27 DPA CM イネーブル 0: ディスエーブル
1: イネーブル
26:24 パーティション タイプ 0: 予約
1: ELF
2: コンフィギュレーション データ オブジ ェクト
3: Cframe データ (PL データ) 4: 生のデータ
5: 生の ELF
23 HiVec RPU/APU (32 ビット) プロセッサの VInitHi 設定
0: LoVec 1: HiVec
22:19 予約 0
18 エンディアン 0: リトル エンディアン (デフォルト) 1: ビッグ エンディアン
17:16 パーティション オーナー 0: PLM (デフォルト)
1: PLM 以外 2、3: 予約
15:14 PUF HD の場所 0: eFuse
1: ブート ヘッダー
13:12 チェックサム タイプ 000b: チェックサムなし (デフォルト)
011b: SHA3
11:8 デスティネーション CPU 0: なし (ELF 以外のファイルのデフォル ト)
1: A72-0 2: A72-1 3: 予約 4: 予約 5: R5-0 6: R5-1 7: R5-L 8: PSM 9: AIE 10 〜 15: 予約
3 A72 CPU 実行ステート 0: Aarch64 (デフォルト)
1: Aarch32
2:1 A72 コアを設定する必要のある例外レベ
ル (EL) 00b: EL0 01b: EL1 10b: EL2
11b: EL3 (デフォルト)
0 TZ セキュア パーティション 0: 非セキュア (デフォルト)
1: セキュア
このビットは、PLM を設定する必要のあ る (このパーティションを実行する必要の ある) コアを TrustZone セキュアとして 設定するかしないかを指定します。デフ ォルトではこれは 0 になっているはずで す。
認証証明は、パーティションの認証に関連するすべての情報を含む構造です。この構造には、公開キーと、
bootROM/PLM による検証が必要な署名が含まれます。各認証証明には認証ヘッダーがあります。このヘッダーは、
キー サイズ、署名に使用するアルゴリズムなどの情報を提供します。ほかのデバイスとは異なり、認証証明は認証が 有効になっているパーティションの先頭に追加されます。Bootgen でメタ ヘッダーに対して認証を実行するには、
metaheader BIF 属性で明示的に指定します。使用方法の詳細は、第 8 章: BIF 属性のリファレンス を参照してくださ い。
Versal ACAP では RSA-4096 認証および認証用の ECDSA アルゴリズムが使用されます。次の表に、Versal ACAP の認 証証明のフォーマットを示します。
表 27: Versal ACAP 認証証明 – ECDSA p384
認証証明ビット 説明
0x00 認証ヘッダー。Versal ACAP 認証証明ヘッダー を参照してください。
0x04 Revoke ID
0x08 UDF (56 バイト)
0x40 PPK x (48 バイト)
y (48 バイト)
パッド 0x00 (932 バイト)
0x444 PPK SHA3 パッド (12 バイト)
0x450 SPK x (48 バイト)
y (48 バイト)
パッド 0x00 (932 バイト)
0x854 SPK SHA3 パッド (4 バイト)
0x858 アライメント (8 バイト)
0x860 SPK 署名 (r+s+パッド)(48+48+416))
0xA60 BH/IHT 署名 (r+s+パッド)(48+48+416))
0xC60 パーティション署名 (r+s+パッド)(48+48+416))
表 28: Versal ACAP 認証証明 – ECDSA p521
認証証明ビット 説明
0x00 認証ヘッダー。Versal ACAP 認証証明ヘッダー を参照してください。
0x04 Revoke ID
0x08 UDF (56 バイト)
0x40 PPK PPK x (66 バイト)
y (66 バイト)
パッド 0x00 (896 バイト)
0x444 PPK SHA3 パッド (12 バイト)
0x450 SPK SPK x (66 バイト)
y (66 バイト)
0x858 アライメント (8 バイト)
0x860 SPK 署名 (r+s+パッド)(66+66+380))
0xA60 BH/IHT 署名 (r+s+パッド)(66+66+380))
0xC60 パーティション署名 (r+s+パッド)(66+66+380))
表 29: Versal ACAP 認証証明 – RSA
認証証明ビット 説明
0x00 認証ヘッダー。Versal ACAP 認証証明ヘッダー を参照してください。
0x04 Revoke ID
0x08 UDF (56 バイト)
0x40 PPK Mod (512 バイト)
Mod Ext (512 バイト) Exponent (4 バイト)
0x444 PPK SHA3 パッド (12 バイト)
0x450 SPK Mod (512 バイト)
Mod Ext (512 バイト) Exponent (4 バイト)
0x854 SPK SHA3 パッド (4 バイト)
0x858 アライメント (8 バイト)
0x860 SPK 署名
0xA60 BH/IHT 署名
0xC60 パーティション署名