BIF 属性のリファレンス

aarch32_mode

構文

[aarch32_mode] <partition>

説明

バイナリ ファイルが 32 ビット モードで実行されるように指定します。
注記: Bootgen では自動的に .elf ファイルからプロセッサの実行モードが検出されます。これは、バイナリ ファイルにのみ使用できます。

引数

指定されたパーティション。

the_ROM_image:
{
	[bootloader, destination_cpu=a53-0] zynqmp_fsbl.elf
	[destination_cpu=a53-0, aarch32_mode] hello.bin
	[destination_cpu=r5-0] hello_world.elf
}

aeskeyfile

構文

[aeskeyfile = <keyfile name>] <partition>
[aeskeyfile] <key filename>

説明

AES キー ファイルへのパスです。キー ファイルには、パーティションの暗号化に使用される AES キーが含まれます。ファイルの内容は eFUSE または BBRAM に書き込む必要があります。キー ファイルが指定されたパスに存在しない場合、Bootgen が暗号化に使用される新しいキーを生成します。

注記: Zynq® UltraScale+™ MPSoC のみ: BIF ファイルで複数のキー ファイルを指定できます。Key0、IV0、および Key Opt は、使用されるすべての NKY ファイルで同じものである必要があります。ELF ファイルに対して複数のパーティションが生成される場合、各パーティションは一意のキー ファイルからのキーを使用して暗号化できます。次の例を参照してください。

引数

指定されたファイル名。

戻り値

なし

Zynq-7000 SoC

fsbl.elf パーティションと hello.elf パーティションは test.nky のキーを使用して暗号化されます。

all:                                                          
{                                                             
     [keysrc_encryption] bbram_red_key                        
     [aeskeyfile] test.nky                                    
     [bootloader, encryption=aes] fsbl.elf                    
     [encryption=aes] hello.elf                               
}

サンプル キー (.nky) ファイルは test.nky です。

Device       xc7z020clg484;                                  
  Key 0        8177B12032A7DEEE35D0F71A7FC399027BF....D608C58; 
  Key StartCBC 952FD2DF1DA543C46CDDE4F811506228;               
  Key HMAC     123177B12032A7DEEE35D0F71A7FC3990BF....127BD89; 

Zynq UltraScale+ MPSoC

例 1:

fsbl.elf パーティションは test.nky のキーを使用し、hello.elftest1.nky のキーを使用し、app.elftest2.nky のキーを使用して暗号化されます。サンプル BIF は test_multipl.bif です。
all:                                                           
{                                                              
     [keysrc_encryption] bbram_red_key                         
     [bootloader,encryption=aes,aeskeyfile=test.nky] fsbl.elf  
     [encryption=aes,aeskeyfile=test1.nky] hello.elf           
     [encryption=aes,aeskeyfile=test2.nky] app.elf             
}      

例 2:

Bootgen が、hello.elfhello.elf.0hello.elf.1、および hello.elf.2 という 3 つのパーティションを作成するとします。サンプル BIF は test_mulitple.bif です。

all:                                                           
{                                                              
     [keysrc_encryption] bbram_red_key                         
     [bootloader,encryption=aes,aeskeyfile=test.nky] fsbl.elf  
     [encryption=aes,aeskeyfile=test1.nky] hello.elf           
}

その他の情報:

  • fsbl.elf パーティションは、test.nky のキーで暗号化されます。すべての hello.elf パーティションは、test1.nky のキーを使用して暗号化されます。
  • test1.1.nky および test1.2.nky という名前のキー ファイルを test1.nky と同じパスに置くことで、hello パーティションごとに一意のキー ファイルを使用できます。
  • hello.elf.0test1.nky を使用
  • hello.elf.1test1.1.nky を使用
  • hello.elf.2test1.2.nky を使用
  • キー ファイル (test1.1.nky または test1.2.nky) が存在しない場合、Bootgen はそのキー ファイルを生成します。

alignment

構文

[alignment= <value>] <partition>

バイト アライメントを設定します。パーティションは、この値の倍数値に揃えられるまでパディングされます。この属性はオフセットと共に使用することはできません。

引数

揃えられるバイト数。

all:
{
	[bootloader]fsbl.elf
	[alignment=64] u-boot.elf
}

auth_params

構文
[auth_params] ppk_select=<0|1>; spk_id <32-bit spk id>;/
 spk_select=<spk-efuse/user-efuse>; auth_header 

説明

認証パラメーターは、ブート イメージ内のパーティションの認証に使用する PPK、SPK などの追加設定を指定します。この BIF パラメーターの引数は次のとおりです。

  • ppk_select: 使用する PPK を選択します。オプションは 0 (デフォルト) または 1 です。
  • spk_id: 使用または取り消し可能な SPK を指定します。ユーザー eFUSE サポートおよび RSA キー取り消しの改善 を参照してください。デフォルト値は 0x00 です。
  • spk_select: SPK とユーザー eFUSE を識別します。オプションは spk-efuse (デフォルト) と user_efuse です。
  • header_auth: パーティションが認証されていない場合のヘッダーを認証します。
注記:
  1. ppk_select は各イメージに固有です。
  2. 各パーティションは固有の spk_select および spk_id を持つことができます。
  3. spk-efuse id はイメージ全体で一意ですが、spk-efuse id はパーティションによって異なる場合があります。
  4. パーティションの範囲外の spk_select/spk_id は、ヘッダーと、これらの指定をパーティション属性として持たないその他のパーティションに使用されます。

サンプル BIF 1 - test.bif

all:
{
	[auth_params]ppk_select=0;spk_id=0x12345678
	[pskfile] primary.pem
	[sskfile]secondary.pem 
	[bootloader, authentication=rsa]fsbl.elf
}

サンプル BIF 2 - test.bif

all:                                                          
{                                                             
	[auth_params] ppk_select=0;spk_select=user-efuse;spk_id=0x22
	[pskfile]     primary.pem                                   
	[sskfile]     secondary.pem                                 
	[bootloader, authentication = rsa] fsbl.elf                                                  
}

サンプル BIF 3 - test.bif

all:                                                      
{                                                         
  	[auth_params] ppk_select=1; spk_select= user-efuse; spk_id=0x22; header_auth   
  	[pskfile]     primary.pem                               
  	[sskfile]     secondary.pem                             
  	[destination_cpu=a53-0] test.elf                        
}

サンプル BIF 4 - test.bif

all:                                                           
{                                                              
  	[auth_params]  ppk_select=1;spk_select=user-efuse;spk_id=0x22
  	[pskfile]      primary.pem                                   
  	[sskfile]      secondary0.pem                                
                                                               
  /* FSBL - Partition-0) */                                     
   [                                                            
	bootloader,                                                
	destination_cpu   = a53-0,                                 
	authentication    = rsa,                                   
	spk_id            = 0x12345678,                            
	spk_select        = spk-efuse,                             
	sskfile           = secondary1.pem                         
   ] fsbla53.elf                                                 
                                                               
  /* Partition-1 */                                             
   [                                                            
     destination_cpu    = a53-1,                                
     authentication     = rsa,                                  
     spk_id             = 0x24,                                 
     spk_select         = user-efuse,                           
     sskfile            = secondary2.pem                        
   ] hello.elf                                                   
}

authentication

構文

[authentication=<option>] <partition>

説明

認証されるパーティションを指定します。

引数

  • none: パーティションは認証されない。これがデフォルト値です。
  • rsa: パーティションは RSA アルゴリズムを使用して認証される。

Sample BIF - test.bif                                          
all:                                                           
{
	[ppkfile] ppk.txt
	[spkfile] spk.txt
	[bootloader,authentication=rsa] fsbl.elf
	[authentication=rsa] hello.elf 	
}

big_endian

構文

[big_endian] <partition>

説明

バイナリ ファイルをビッグ エンディアン形式に指定します。
注記: Bootgen では自動的に .elf ファイルのエンディアン形式が検出されます。これは、バイナリ ファイルにのみ使用できます。

引数

指定されたパーティション。

the_ROM_image:
{
	[bootloader, destination_cpu=a53-0] zynqmp_fsbl.elf
	[destination_cpu=a53-0, big_endian] hello.bin
	[destination_cpu=r5-0] hello_world.elf
}

bh_keyfile

構文

[bh_keyfile] <key file path>

説明

ブート ヘッダーに格納される 256 ビットの難読化キーまたはブラック キーです。これは、暗号化キーのソースがグレー キーまたはブラック キーの場合にのみ有効です。

引数

難読化キーまたはブラック キーへのパス (選択されているソースによって異なる)。

Sample BIF - test.bif                                          
all:                                                           
{                                                              
	[keysrc_encryption] bh_gry_key
	[bh_keyfile] obfuscated_key.txt
	[bh_key_iv] obfuscated_iv.txt
	[bootloader, encryption=aes, aeskeyfile=encr.nky, destination_cpu=a53-0]fsbl.elf 
}

bh_key_iv

構文

[bh_key_iv] <iv file path>

説明

難読化キーまたはブラック キーを復号化する際に使用する初期化ベクターです。

引数

ファイルへのパス。

Sample BIF - test.bif                                          
all:
{
	[keysrc_encryption] bh_gry_key
	[bh_keyfile] obfuscated_key.txt
	[bh_key_iv] obfuscated_iv.txt
	[bootloader, encryption=aes, aeskeyfile=encr.nky, destination_cpu=a53-0]fsbl.elf
}

bhsignature

構文

[bhsignature] <signature-file>

説明

ブート ヘッダーの署名を認証証明にインポートします。これは、秘密キー PSK を共有しない場合に使用できます。署名を作成して Bootgen に与えることができます。

all:                                                           
{
	[ppkfile] ppk.txt
	[spkfile] spk.txt
	[spksignature] spk.txt.sha384.sig
	[bhsignature] bootheader.sha384.sig
	[bootloader,authentication=rsa] fsbl.elf
}

blocks

構文

[blocks = <size><num>;<size><num>;...;<size><*>] <partition>

説明

暗号化におけるキー ローリング機能のブロック サイズを指定します。各モジュールは独自のキーを使用して暗号化されます。最初のキーはデバイスのキー ソースで格納され、後続の各モジュールのキーは直前のモジュール内で暗号化 (ラップ) されます。

引数

指定した <size> は、バイト単位で取り込まれます。サイズが X(*) として指定されている場合、残りのブロックのサイズはすべて「X」になります。

Sample BIF - test.bif                                          
all:
{
	[keysrc_encryption] bbram_red_key
	[bootloader,encryption=aes, aeskeyfile=encr.nky, 
	destination_cpu=a53-0,blocks=4096(2);1024;2048(2);4096(*)]
	fsbl.elf
}
注記: 上記の例では、最初の 2 つのブロックは 4096 バイトで、2 番目のブロックは 1024 バイトで、次の 2 つのブロックは 2048 バイトです。残りのブロックは 4096 バイトです。

boot_device

構文

[boot_device] <options>

説明

セカンダリ ブート デバイスを指定します。パーティションが存在するデバイスを示します。

引数

オプションは次のとおりです。

  • qspi32
  • qspi24
  • nand
  • sd0
  • sd1
  • sd-ls
  • mmc
  • usb
  • ethernet
  • pcie
  • sata

all:
{
	[boot_device]sd0
	[bootloader,destination_cpu=a53-0]fsbl.elf
}

bootimage

構文

[bootimage] <image created by bootgen>

説明

続くファイルの仕様が Bootgen によって作成されたブート イメージであり、入力として再利用されることを指定します。

引数

指定されたファイル名。

all:
{
	[bootimage]fsbl.bin
	[bootimage]system.bin
}

上記の例では、fsbl.bin および system.bin は Bootgen を使用して生成されたイメージです。

fsbl.bin 生成の例

image: 
{ 
	[pskfile] primary.pem 
	[sskfile] secondary.pem 
	[bootloader, authentication=rsa, aeskeyfile=encr_key.nky, encryption=aes] fsbl.elf 
 } 
Command: bootgen -image fsbl.bif -o fsbl.bin -encrypt efuse 

system.bin 生成の例

image: 
{ 
	[pskfile] primary.pem 
	[sskfile] secondary.pem 
	[authentication=rsa] system.bit 
} 
Command: bootgen -image system.bif -o system.bin

bootloader

構文

[bootloader] <partition>

説明

ELF ファイルを FSBL として認識します。

  • この属性は ELF ファイルのみに適用可能です。
  • 1 ファイルのみブートローダーに指定可能です。
  • この ELF ファイルのプログラム ヘッダーには、ファイル サイズ > 0 の LOAD セクションが 1 つだけ必要です。このセクションは実行可能でなければなりません (xフラグを設定する必要がある)。

引数

指定されたファイル名。

all:
{
	[bootloader] fsbl.elf 
	hello.elf
}

bootvectors

構文

[bootvectors] <values>

説明

この属性は、XIP (eXecute In Place) のベクター テーブルを指定します。

all:
{
 [bootvectors]0x14000000,0x14000000,0x14000000,0x14000000,0x14000000,0x14000000,0x14000000,0x14000000
 [bootloader,destination_cpu=a53-0]fsbl.elf
}

checksum

構文

[checksum = <options>] <partition>

説明

チェックサムを実行する必要があるパーティションを指定します。認証暗号化などのよりセキュアな機能と共に使用することはできません。

引数

  • none: チェックサムなし。
  • MD5: Zynq®-7000 SoC デバイスの MD5 チェックサム。このデバイスでは、チェックサムはブートローダーでサポートされていません。
  • SHA3: Zynq® UltraScale+™ MPSoC デバイスのチェックサム。

core

構文

{ core = <options> }

説明

どのコアがパーティションを実行するか指定します。

引数

  • *a72-0
  • a72-1
  • r5-0
  • r5-1
  • psm

test:
{
    id = 0x2
    image
    {
        {type=bootloader, file=plm.elf}
        {type=pmcdata, load=0xf2000000, file=pmc_cdo.bin}
        {type=cdo, file=ps_cdo.bin}
        {core=a72-0, file=a72_app.elf}
        {core=r5-0, file=r5_app.elf}
    }
}

destination_cpu

構文

[destination_cpu <options>] <partition>

説明

パーティションをどのコアで実行するかを指定します。次の例では、FSBL を A53-0 コアで実行し、アプリケーションを R5-0 コアで実行するように指定します。

注記:
  • FSBL は、A53-0 または R5-0 のいずれかでのみ実行できます。
  • FSBL によってロードされる PMU: [destination_cpu=pmu] pmu.elf。このフローでは、最初に bootROM が FSBL をロードし、続いて FSBL が PMU ファームウェアをロードします。
  • bootROM によってロードされる PMU: [pmufw_image] pmu.elf。このフローでは、bootROM が PMU をロードした後に FSBL のロードが続くため、PMU は FSBL が起動する前に電力管理タスクを実行します。

引数

  • a53-0 (デフォルト)
  • a53-1
  • a53-2
  • a53-3
  • r5-0
  • r5-1
  • r5-lockstep
  • pmu

all:
{
	[bootloader,destination_cpu=a53-0]fsbl.elf
	[destination_cpu=r5-0] app.elf
}

destination_device

構文

[destination_device <options>] <partition>

説明

パーティションのターゲットを PS または PL のいずれに指定します。

引数

  • ps: パーティションのターゲットは PS。これがデフォルト値です。
  • pl: パーティションのターゲットはビットストリームの場合 PL。

all:
{
	[bootloader,destination_cpu=a53-0]fsbl.elf
	[destination_device=pl]system.bit
	[destination_cpu=r5-1]app.elf
}

early_handoff

構文

[early_handoff] <partition>

説明

このフラグは、パーティションのロード直後に重要なアプリケーションへのハンドオフが確実に実行されるようにします。このオプションを使用しない場合は、最初にすべてのパーティションが順にロードされ、続いてハンドオフが順に実行されます。

注記: 次のシナリオでは、FSBL は app1 をロードしてから app2 をロードし、その後すぐに app2 に制御を渡して app1 に制御を渡します。

all:
{
	[bootloader, destination_cpu=a53_0]fsbl.el
	[destination_cpu=r5-0]app1.elf
	[destination_cpu=r5-1,early_handoff]app2.elf
}

encryption

構文

[encryption = <options>] <partition>

説明

パーティションを暗号化する必要があることを指定します。暗号化アルゴリズムは次のとおりです。

引数

  • none: パーティションは暗号化されない。これがデフォルト値です。
  • aes: パーティションは AES アルゴリズムを使用して暗号化される。

all:
{
	[aeskeyfile]test.nky
	[bootloader,encryption=aes] fsbl.elf
	hello.elf
}

exception_level

構文

[exception_level=<options>] <partition>

説明

コアに設定する例外レベルを指定します。

引数

  • el-0
  • el-1
  • el-2
  • el-3 (デフォルト)

all:
{
	[bootloader, destination_cpu=a53-0]fsbl.elf
	[destination_cpu=a53-0, exception_level=el-3] bl31.elf
	[destination_cpu=a53-0, exception_level=el-2] u-boot.elf
}

familykey

構文

[familykey] <key file path>

説明

ファミリ キーを指定します。ファミリ キーを入手するには、ザイリンクスの代理店 (secure.solutions@xilinx.com) までお問い合わせください。

引数

ファイルへのパス。

all:
{
	[aeskeyfile] encr.nky
	[bh_key_iv] bh_iv.txt
	[familykey] familykey.cfg
}

fsbl_config

構文

[fsbl_config <options>] <partition>

説明

このオプションは、ブート イメージのコンフィギュレーションに使用するパラメーターを指定します。FSBL は、ブート ヘッダー認証モードで 64 ビット モードの A53 上で実行する必要があります。

引数

  • bh_auth_enable: ブート ヘッダー認証イネーブル: ブート イメージの RSA 認証を実行します (PPK ハッシュおよび SPK ID の検証を除く)。
  • auth_only: ブート イメージは RSA 署名のみです。FSBL の復号化は実行しません。
  • opt_key: block-0 の復号化に操作キーを使用します。操作キーはセキュア ヘッダーにあります。
  • pufhd_bh: PUF ヘルパー データはブート ヘッダーに格納されます(デフォルトは efuse)。/PUF ヘルパー データ ファイルは、[puf_file] オプションを使用して Bootgen に渡されます。
  • puf4kmode: PUF は 4k ビット コンフィギュレーションでの使用に合わせて調整されています(デフォルトは 12k ビット)。shutter = <value> を使用し、32 ビットの PUF_SHUT レジスタの値で、シャッター オフセット時間およびシャッター オープン時間を PUF に設定します。

all:
{
	[fsbl_config] bh_auth_enable
	[pskfile] primary.pem
	[sskfile]secondary.pem
	[bootloader,destination_cpu=a53-0,authentication=rsa] fsbl.elf
}

headersignature

構文

[headersignature] <signature file>                                

説明

ヘッダーの署名を認証証明にインポートします。これは、秘密キーを共有しない場合に使用できます。署名を作成して Bootgen に与えることができます。

引数

signature_file

all:
{
	[ppkfile] ppk.txt
	[spkfile] spk.txt
	[headersignature] headers.sha256.sig
	[spksignature] spk.txt.sha256.sig
	[bootloader, authentication=rsa] fsbl.elf
}

hivec

構文

[hivec] <partition>

説明

例外ベクター テーブルの場所を hivec として指定します。これは、A53 (32 ビット) および R5 コアにのみ適用されます。

  • hivec: 0xFFFF0000 の例外ベクター テーブル。
  • lovec: 0x00000000 の例外ベクター テーブル。これがデフォルト値です。

引数

なし

BIF ファイルのサンプルを次に示します。
all:
{
	[bootloader, destination_cpu=a53_0]fsbl.elf
	[destination_cpu=r5-0,hivec]app1.elf
}

init

構文

[init] <filename> 

説明

ブートローダーの最後にあるレジスタ初期化ブロックであり、.int ファイルの仕様を解析して構築されます。最大 256 のアドレスと値の初期化ペアが許可されます。.int ファイルには特定のフォーマットがあります。

BIF ファイルのサンプルを次に示します。
all:                                                           
{                                                              
	[init] test.int                                             
}   

keysrc_encryption

構文

[keysrc_encryption] <options> <partition>

説明

暗号化に使用するキー ソースを指定します。

引数

  • bbram_red_key: BBRAM に格納されているレッド キー。
  • efuse_red_key: eFUSE に格納されているレッド キー。
  • efuse_gry_key: eFUSE に格納されているグレー (難読化) キー。
  • bh_gry_key: ブート ヘッダーに格納されているグレー (難読化) キー。
  • bh_blk_key: ブート ヘッダーに格納されているブラック キー。
  • efuse_blk_key: eFUSE に格納されているブラック キー。
  • kup_key: ユーザー キー。

all:
{
	[keysrc_encryption]efuse_gry_key
	[bootloader,encryption=aes, aeskeyfile=encr.nky, destination_cpu=a53-0]fsbl.elf
}

FSBL は、暗号化用に eFUSE に格納されている encr.nky キーを使用して暗号化されます。

load

構文

[load=<value>] <partition>

説明

メモリ内のパーティションのロード アドレスを設定します。

 all:                                                           
{                                                              
	[bootloader] fsbl.elf                                     
	u-boot.elf                                                
	[load=0x3000000, offset=0x500000] uImage.bin              
	[load=0x2A00000, offset=0xa00000] devicetree.dtb          
	[load=0x2000000, offset=0xc00000] uramdisk.image.gz       
}

offset

構文

[offset=<value>] <partition>

説明

ブート イメージ内のパーティションの絶対オフセットを設定します。

引数

指定された値およびパーティション。

all:
{
	[bootloader] fsbl.elf u-boot.elf
	[load=0x3000000, offset=0x500000]uImage.bin
	[load=0x2A00000, offset=0xa00000] devicetree.dtb
	[load=0x2000000, offset=0xc00000] uramdisk.image.gz
}

partition_owner

構文

[partition_owner = <options>] <partition>

説明

パーティションをロードするパーティション オーナー。

引数

  • fsbl (デフォルト)
  • u-boot

all:
{
	[bootloader]fsbl.elf
	[partition_owner=uboot] hello.elf
}

pid

構文

 [pid = <id_no>] <partition>

説明

パーティション ID を指定します。デフォルト値は 0 です。

all:
{
	[encryption=aes, aeskeyfile=test.nky, pid=1] hello.elf
}

pmufw_image

構文

[pmufw_image] <PMU ELF file>

説明

FSBL をロードする前に bootROM によってロードされる PMU ファームウェア イメージです。pmufw_image のオプションは、ブートローダー パーティションに含まれます。Bootgen は、pmufw_image オプションと共に与えられる余分な属性を考慮しません。

引数

ファイル名

the_ROM_image:
{
	[pmufw_image] pmu_fw.elf
	[bootloader, destination_cpu=a53-0] fsbl_a53.elf
	[destination_cpu=a53-1] app_a53.elf
	[destination_cpu=r5-0] app_r5.elf
}

ppkfile

構文

[ppkfile] <key filename>

説明

プライマリ公開キー (PPK) は、ブート イメージ内のパーティションを認証するために使用されます。

認証の使用 を参照してください。

引数

指定されたファイル名。

注記: 秘密キー ファイルには、キーの公開キー コンポーネントが含まれます。秘密キー (PSK) が指定されている場合は、公開キー (PPK) を指定する必要はありません。

all:
{
	[ppkfile] primarykey.pub
	[pskfile] primarykey.pem
	[spkfile] secondarykey.pem
	[sskfile] secondarykey.pem
	[bootloader, authentication=rsa] fsbl.elf
	[authentication=rsa] hello.elf
}

presign

構文

[presign = <signature_file>] <partition>

説明

パーティション署名をパーティション認証証明にインポートします。これは、秘密キー (SSK) を共有しない場合に使用します。署名を作成して Bootgen に与えることができます。

  • <signature_file>: 署名ファイルを指定します。
  • <partition>: signature_file に適用するパーティションをリストします。

all:
{
	[ppkfile] ppk.txt
	[spkfile] spk.txt
	[headsignature] headers.sha256.sig
	[spksignature] spk.txt.sha256.sig
	[bootloader, authentication=rsa, presign=fsbl.sig]fsbl.elf
}

pskfile

構文

[pskfile] <key filename>                                       
                                           

説明

このプライマリ秘密キー (PSK) は、ブート イメージ内のパーティションを認証するために使用されます。詳細は、認証の使用 を参照してください。

引数

指定されたファイル名。

注記: 秘密キー ファイルには、キーの公開キー コンポーネントが含まれます。秘密キー (PSK) が指定されている場合は、公開キー (PPK) を指定する必要はありません。

all:
{
	[pskfile]primarykey.pem
	[sskfile]secondarykey.pem
	[bootloader,authentication=rsa]fsbl.elf
	[authentication=rsa] hello.elf
}

puf_file

構文

[puf_file] <puf data file>

説明

PUF ヘルパー データ ファイル。

  • PUF は、暗号化キー ソースとしてブラック キーと共に使用されます。
  • PUF ヘルパー データは 1544 バイトです。
  • 1536 バイトの PUF HD + 4 バイトの CHASH + 3 バイトの AUX + 1 バイト アライメント。

詳細は、ブラック キー/PUF キー を参照してください。

all:
{
	[fsbl_config]pufhd_bh
	[puf_file] pufhelperdata.txt
	[bh_keyfile] black_key.txt
	[bh_key_iv] bhkeyiv.txt
	[bootloader,destination_cpu=a53-0,encryption=aes]
	fsbl.elf
}

reserve

構文

[reserve=<value>] <partition>

説明

パーティションのメモリ サイズを維持します。このサイズになるまでパーティションにパディングが追加されます。維持するメモリ サイズは、バイト数で指定します。

引数

指定されたパーティション。

all:
{
	[bootloader]fsbl.elf
	[reserve=0x1000]test.bin
}

split

構文

[split] mode = <mode-options>, fmt=<format>

説明

モードに基づいてイメージを分割します。スレーブ ブート (slaveboot) モードでは次のように分割されます。
  • ブート ヘッダー + ブートローダー
  • イメージ ヘッダーおよびパーティション ヘッダー
  • 残りのパーティション
通常 (normal) モードでは次のように分割されます。
  • ブート ヘッダー + イメージ ヘッダー + パーティション ヘッダー + ブートローダー
  • パーティション 1
  • パーティション 2、以下同様
スレーブ ブート モードは Zynq MP でのみサポートされ、通常モードは Zynq および Zynq MP の両方でサポートされています。分割 (split) モードのほかに、出力フォーマットも bin または mcs に設定できます。

オプション

引数で使用可能なオプションは次のとおりです。
  • slaveboot
  • normal
  • bin
  • mcs

all:
{
	[split]mode=slaveboot,fmt=bin
	[bootloader,destination_cpu=a53-0]fsbl.elf
	[destination_device=pl]system.bit
	[destination_cpu=r5-1]app.elf
}
注記: オプションの split の normal モードは、コマンド ライン オプションの split と同じです。このコマンド ライン オプションは廃止予定です。

spkfile

構文

[spkfile] <key filename>                                       

説明

セカンダリ公開キー (SPK) は、ブート イメージ内のパーティションを認証するために使用されます。詳細は、認証の使用 を参照してください。

引数

指定されたファイル名。

all:
{
	[pskfile] primarykey.pem
	[spkfile] secondarykey.pem	
	[sskfile] secondarykey.pem
	[bootloader, authentication=rsa] fsbl.elf
	[authentication=rsa] hello.elf
}
注記: 秘密キー ファイルには、キーの公開キー コンポーネントが含まれます。秘密キー (SSK) が指定されている場合は、公開キー (SPK) を指定する必要はありません。

spksignature

コード例

[spksignature] <Signature file>                                

説明

SPK 署名を認証証明にインポートします。これは、ユーザーが秘密キー PSK を共有しない場合に可能で、ユーザーは署名を作成して Bootgen に与えることができます。

引数

指定されたファイル名。

all:
{
	[ppkfile] ppk.txt
	[spkfile] spk.txt
	[headersignature]headers.sha256.sig
	[spksignature] spk.txt.sha256.sig
	[bootloader, authentication=rsa] fsbl.elf
}

spk_select

構文

[spk_select = <options>]
or 
[auth_params] spk_select = <options>

説明

オプションは次のとおりです。

  • spk-efuse: パーティションに spk_id eFUSE が使用されていることを示します。これがデフォルト値です。
  • user-efuse: パーティションにユーザー eFUSE が使用されていることを示します。

CSU ROM によってロードされるパーティションは、常に spk_efuse を使用します。

注記: spk_id eFUSE は、どのキーが有効であるかを指定します。したがって、ROM は spk_id eFUSE のフィールド全体を SPK ID と照合してビットが一致することを確認します。
ユーザー eFUSE は、どのキー ID が有効でない (取り消された) かを指定します。したがって、ファームウェア (ROM 以外) は、SPK ID を表すそのユーザー eFUSE がプログラムされているかどうかをチェックします。spk_select = user-efuse の場合、そのパーティションにユーザー eFUSE が使用されることを意味します。

the_ROM_image:
{
	[auth_params]ppk_select = 0
	[pskfile]psk.pem
	[sskfile]ssk1.pem

	[
	  bootloader,
	  authentication = rsa,
	  spk_select = spk-efuse,
	   spk_id = 0x12345678,
	  sskfile = ssk2.pem
	] zynqmp_fsbl.elf

	[
	  destination_cpu =a53-0,
	  authentication = rsa,
	  spk_select = user-efuse,
	  spk_id = 200, 
	  sskfile = ssk3.pem
	] application1.elf

	[
	  destination_cpu =a53-0,
	  authentication = rsa,
	  spk_select = spk-efuse,
	  spk_id =0x12345678,
	  sskfile = ssk4.pem
	] application2.elf
}

sskfile

構文

[sskfile] <key filename>                                   

説明

セカンダリ秘密キー (SSK) は、ブート イメージ内のパーティションを認証するために使用されます。詳細は、認証の使用 を参照してください。

引数

指定されたファイル名。

all:
{
	[pskfile] primarykey.pem
	[sskfile] secondarykey.pem
	[bootloader, authentication=rsa]fsbl.elf
	[authentication=rsa] hello.elf
}
注記: 秘密キー ファイルには、キーの公開キー コンポーネントが含まれます。秘密キー (PSK) が指定されている場合は、公開キー (PPK) を指定する必要はありません。

startup

構文

[startup=<address_value>] <pattiion>

説明

このオプションは、ロード後のパーティションのエントリ アドレスを設定します。この識別子は、実行しないパーティションでは無視されます。

all:
{
	[bootloader] fsbl.elf
	[startup=0x1000000] app.elf
}

TrustZone

構文

[trustzone=<options>] <partition>                                   

説明

コアを TrustZone セキュアまたは非セキュアに設定します。オプションは次のとおりです。

  • secure
  • nonsecure (デフォルト)

all:
{
  [bootloader,destination_cpu=a53-0] fsbl.elf
  [exception_level=el-3,trustzone = secure] bl31.elf
}

udf_bh

構文

[udf_bh] <filename>                                

説明

ブート ヘッダーのユーザー定義フィールドにコピーされるデータのファイルをインポートします。入力されたユーザー定義データは、16 進数文字列フォーマットのテキスト ファイルで提供されます。ザイリンクス SoC における UDF の総バイト数は次のとおりです。

  • zynq: 76 バイト
  • zynqmp: 40 バイト

引数

指定されたファイル名。

all:
{
	[udf_bh]test.txt
	[bootloader]fsbl.elf 
	hello.elf
}

udf_bh の入力ファイルの例を次に示します。

udf_bh - test.txt のサンプル入力ファイル

 
123456789abcdef85072696e636530300301440408706d616c6c6164000508 
266431530102030405060708090a0b0c0d0e0f101112131415161718191a1b 
1c1d1

udf_data

構文

[udf_data=<filename>] <partition>                               

説明

最大 56 バイトのデータを含むファイルを認証証明のユーザー定義フィールド (UDF) にインポートします。認証証明の詳細は、認証を参照してください。

引数

指定されたファイル名。

all:
{
	[pskfile] primary0.pem
	[sskfile]secondary0.pem
	[bootloader, destination_cpu=a53-0, authentication=rsa,udf_data=udf.txt]fsbl.elf
	[destination_cpu=a53-0,authentication=rsa] hello.elf
}

xip_mode

構文

[xip_mode] <partition>

説明

FSBL が QSPI フラッシュから直接実行されるよう XIP (eXecute-In-Place) を示します。

注記: この属性は、FSBL/ブートローダー パーティションにのみ適用されます。

引数

指定されたパーティション。

次の例は、Zynq® UltraScale+™ MPSoC デバイスの代わりに実行するブート イメージをを作成する方法を示しています。

all:
{
	[bootloader, xip_mode] fsbl.elf 
	application.elf
}