• スペースは無視されるため、読みやすいように追加しても問題ありません。
• C 形式のブロック コメント /*...*/、または C++ 形式の行コメント // を使用できます。
{ /* common attributes */
[attribute1] <argument1>
/* bootloader */
[attribute2, attribute3,
attribute4=<argument>
] <elf>
/* pl bitstream */
[
attribute2, attribute3,
attribute4=<argument>, attibute=<argument>
] <bit>
/* another elf partition */
[
attribute3 ] <elf>
/* bin partition */
<bin>
}
Bootgen でサポートされるファイル
次の表に、Bootgen でサポートされるファイルを示します。
表 31: Bootgen でサポートされるファイル
サポートされるデバイス 拡張子 説明 注記
すべてのデバイスでサポート
.bin バイナリ 未処理のバイナリ ファイル。
.dtb バイナリ 未処理のバイナリ ファイル。
image.gz バイナリ 未処理のバイナリ ファイル。
.elf 実行可能リンク ファイル
(ELF) シンボルとヘッダーを除く。
.int レジスタ初期化ファイル
.nky AES キー
.pub/.pem RSA キー
.sig 署名ファイル Bootgen または HSM によっ て生成される署名ファイル。
Versal
.cfi/.rcfi CFI ファイル Versal デバイスのみ。
.cdo/.rcdo/.npi/ .rnpi CDO ファイル コンフィギュレーション デー
タ オブジェクト ファイル。
Versal デバイスのみ。
ブート イメージ Bootgen を使用して生成した
次の例に、パーティションをまとめて BIF を詳細に記述する方法を示します。BIF 構文は Versal ACAP 用に変更され ており、複数のパーティションをまとめて 1 つのイメージを形成するサブシステムのコンセプト (1 つのイメージ ヘ ッダーのサブシステムとも呼ばれる) がサポートされるようになっています。
new_bif:
{ id_code = 0x04ca8093 extended_id_code = 0x01 id = 0x2
image {
name = pmc_subsys id = 0x1c000001 partition
{
id = 0x01
type = bootloader
file = gen_files/executable.elf }
partition {
id = 0x09
type = pmcdata, load = 0xf2000000 file = topology_xcvc1902.v2.cdo file = gen_files/pmc_data.cdo }
} image {
name = lpd id = 0x4210002 partition {
id = 0x0C type = cdo
file = gen_files/lpd_data.cdo }
partition {
id = 0x0B core = psm
file = static_files/psm_fw.elf }
} image {
name = pl_cfi id = 0x18700000 partition
{
id = 0x03 type = cdo
file = system.rcdo }
partition {
id = 0x05 type = cdo
file = system.rnpi
name = fpd id = 0x420c003 partition {
id = 0x08 type = cdo
file = gen_files/fpd_data.cdo }
} }
次の例に、パーティションをまとめて BIF を簡潔に記述する方法を示します。
new_bif:
{ id_code = 0x04ca8093 extended_id_code = 0x01 id = 0x2
image {
name = pmc_subsys, id = 0x1c000001
{ id = 0x01, type = bootloader, file = gen_files/executable.elf } { id = 0x09, type = pmcdata, load = 0xf2000000, file =
topology_xcvc1902.v2.cdo, file = gen_files/pmc_data.cdo } }
image {
name = lpd, id = 0x4210002
{ id = 0x0C, type = cdo, file = gen_files/lpd_data.cdo } { id = 0x0B, core = psm, file = static_files/psm_fw.elf } }
image {
name = pl_cfi, id = 0x18700000
{ id = 0x03, type = cdo, file = system.rcdo } { id = 0x05, type = cdo, file = system.rnpi } }
image {
name = fpd, id = 0x420c003
{ id = 0x08, type = cdo, file = gen_files/fpd_data.cdo } }
}
属性
次の表に、Bootgen の属性を示します。この表では簡単な説明を記載しており、詳細は各属性のリンクをクリックす ると参照できます。アーキテクチャ名は、属性を使用するザイリンクス デバイスを示します。
• zynq: Zynq-7000 SoC デバイス
表 32: Bootgen の属性と説明
オプション/属性 説明 属性を使用するデバイス
aarch32_mode 32 ビット モードで実行されるバイナリ ファイルを指定しま
す。 zynqmp
versal aeskeyfile <aes_key_filepath> AES キー ファイルへのパスです。キー ファイルには、パーテ
ィションの暗号化に使用される AES キーが含まれます。ファ イルの内容は eFUSE または BBRAM に書き込む必要があり ます。キー ファイルが指定されたパスに存在しない場合、
Bootgen が暗号化に使用される新しいキーを生成します。た とえば BIF ファイルでビットストリームの暗号化を選択した 場合、出力は暗号化されたビットストリームとなります。
すべて
a_hwrot 非対称ハードウェアの信頼のルート (A-HWRoT) ブート モー
ド。Bootgen で A-HWRoT ブート モードのデザイン ルール
がチェックされます。プロダクション PDI でのみ有効です。 versal
alignment <byte> バイト アライメントを設定します。パーティションは、この
値の倍数値に揃えられるまでパディングされます。この属性
はオフセットと共に使用することはできません。 zynq zynqmp
auth_params <options> 認証の追加オプションは次のとおりです。
ppk_select: 0 = 2 つの PPK のうち 1 つをサポート、1 = 2 つの PPK のうち 1 つをサポート。
spk_id: SPK を識別するための 32 ビット ID。
spk_select: SPK とユーザー eFUSE を識別。デフォルト は spk-efuse。
header_auth: パーティションが認証されていない場合の ヘッダーを認証。
zynqmp
authentication <option> 認証されるパーティションを指定します。
Zynq の認証は、RSA-2048 を使用して実行されます。
Zynq UltraScale+ MPSoC の認証は、RSA-4096 を使用し て実行されます。
Versal ACAP の認証は、RSA-4096 を使用して実行されま す。
引数は次のとおりです。
none: パーティションは署名されません。
ecdsa-p384: パーティションは ecdsa-p384 を使用して 署名されます。
ecdsa-p521: パーティションは ecdsa-p521 を使用して 署名されます。
rsa: パーティションは RSA アルゴリズムを使用して署 名されます。
すべて
bbram_kek_iv 該当するキーを暗号化するために使用する IV を指定します。
bbram_kek_iv は、keysrc=bbram_blk_key の場合にのみ有効
です。 versal
bh_kek_iv 該当するキーを暗号化するために使用する IV を指定します。
bh_kek_iv は、keysrc=bh_blk_key の場合にのみ有効です。 versal
bh_key_iv <filename> 難読化キーまたはブラック キーを復号化する際に使用する初
期化ベクター。 zynqmp
bh_keyfile <filename> ブート ヘッダーに格納される 256 ビットの難読化キーまた はブラック キー。これは、暗号化の keysrc が bh_gry_key ま たは bh_blk_key の場合にのみ有効です。
注記: 難読化キーは、Versal デバイスではサポートされませ ん。
zynqmp versal
bhsignature <filename> ブート ヘッダーの署名を認証証明にインポートします。これ
は、秘密キー PSK を共有しない場合に使用できます。署名を 作成して Bootgen に供給できます。ファイル フォーマット は bootheader.sha384.sig です。
zynqmp versal
big_endian バイナリ ファイルをビッグ エンディアン形式に指定します。
zynqmp versal
blocks <block sizes> 暗号化の際のキー ローリング機能のブロック サイズを指定
します。各モジュールは独自のキーを使用して暗号化されま す。最初のキーはデバイスのキー ソースで格納され、後続の 各ブロックのキーは直前のモジュール内で暗号化 (ラップ) さ れます。
zynqmp versal
boot_config <options> ブート イメージのコンフィギュレーションに使用するパラメ
ーターを指定します。 versal
boot_device <options> セカンダリ ブート デバイスを指定します。パーティション が存在するデバイスを示します。オプションは次のとおりで す。
qspi32 qspi24 nand sd0 sd1 sd-ls mmc usb ethernet pcie sata ospi smap sbi sd0-raw sd1-raw sd-ls-raw mmc-raw mmc0 mmc0-raw
注記: これらのオプションは、Bootgen のさまざまなデバイス でサポートされます。セカンダリ ブート オプションのリスト は、『Versal ACAP システム ソフトウェア開発者向けガイド』
(UG1304) を参照してください。ハードウェア/レジスタ/イン ターフェイス情報およびプライマリ ブート モードについて は、該当するテクニカル リファレンス マニュアルを参照して ください。
zynqmp versal
bootimage <filename.bin> リストされた入力ファイルが Bootgen によって作成された
ブート イメージであることを示します。 zynq zynqmp versal bootloader <partition> パーティションがブートローダー (FSBL/PLM) であることを
指定します。この属性は、ほかのパーティションの BIF 属性
と共に指定されます。 zynq
zynqmp versal bootvectors <vector_values> XIP (eXecute In Place) のベクター テーブルを指定します。
zynqmp
checksum <options> パーティションのチェックサムが必要であることを指定しま す。このオプションを認証や暗号化などのよりセキュアな機 能と共に使用することはできません。チェックサム アルゴリ ズムは次のとおりです。
none: チェックサムなし。
md5: Zynq®-7000 SoC デバイスの場合。
sha3: Zynq® UltraScale+™ MPSoC および Versal デバイ スの場合。
注記: Zynq デバイスでは、ブートローダーのチェックサムは サポートされません。Zynq UltraScale+ MPSoC および Versal ACAP ではブートローダーのチェックサムがサポート されます。
zynq zynqmp versal
copy イメージがメモリの指定したアドレスにコピーされます。
versal
core <options> パーティションをどのコアで実行するかを指定します。次の
オプションがあります。
*a72-0 a72-1 r5-0 r5-1 psm aie
versal
delay_handoff <delay_handoff> サブシステム/イメージへのハンドオフを遅延します。
versal delay_load <delay_load> サブシステム/イメージの読み込みを遅延します。
versal destination_device <device_type> パーティションのターゲットを PS または PL のいずれかに指
定します。次のオプションがあります。
ps: パーティションのターゲットは PS (デフォルト)。
pl: パーティションのターゲットは PL (ビットストリーム の場合)。
zynqmp
destination_cpu <device_core> パーティションを実行するコアを指定します。
a53-0 a53-1 a53-2 a53-3
r5-0 (デフォルト) r5-1
pmu r5-lockstep
zynqmp
early_handoff このフラグは、パーティションのロード直後に重要なアプリ ケーションへのハンドオフが確実に実行されるようにしま す。このオプションを使用しない場合は、最初にすべてのパ ーティションが順にロードされ、続いてハンドオフが順に実 行されます。
zynqmp
efuse_kek_iv 該当するキーを暗号化するために使用する IV を指定します。
efuse_kek_iv は、keysrc=efuse_blk_key の場合にのみ有効で
す。 versal
efuse_user_kek0_iv 該当するキーを暗号化するために使用する IV を指定します。
efuse_user_kek0_iv は、keysrc=efuse_user_blk_key0 の場合
にのみ有効です。 versal
efuse_user_kek1_iv 該当するキーを暗号化するために使用する IV を指定します。
efuse_user_kek1_iv は、keysrc=efuse_user_blk_key1 の場合
にのみ有効です。 versal
encryption <option> 暗号化するパーティションを指定します。使用される暗号化
アルゴリズムは、zynq では AES-CBC、zynqmp および Versal では AES-GCM です。
パーティションのオプションは次のとおりです。
none: パーティションは暗号化されない。
aes: パーティションは AES アルゴリズムを使用して暗号 化される。
すべて
exception_level <options> コアに設定する例外レベルを指定します。
オプションは次のとおりです。
el-0 el-1 el-2 el-3
zynqmp versal
familykey ファミリ キーを指定します。
zynqmp fpga
file <path/to/file> パーティションを作成するためのファイルを指定します。
versal