blocks - 2020.2 English

Bootgen User Guide (UG1283)

Document ID
UG1283
Release Date
2020-12-15
Version
2020.2 English

Syntax

  • For Zynq devices and Zynq UltraScale+ MPSoC:
                                                      
    [blocks = <size><num>;<size><num>;...;<size><*>] <partition> 
    
  • For Versal ACAP:
    { blocks = <size><num>;...;<size><*>, file=<partition> }

Description

Specify block sizes for key-rolling feature in encryption. Each module is encrypted using its own unique key. The initial key is stored at the key source on the device, while keys for each successive module are encrypted (wrapped) in the previous module.

Arguments

The <size> mentioned is taken in Bytes. If the size is specified as X(*), then all the remaining blocks will be of the size 'X'.

Example

  • For Zynq® UltraScale+™ MPSoC:
    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
    }
  • For Versal ACAP:
    all:
    {
    	id_code = 0x04ca8093
    	extended_id_code = 0x01
    	id = 0x2
    
    	metaheader
    	{
    		encryption = aes,
    		keysrc = bbram_red_key,
    		aeskeyfile = efuse_red_metaheader_key.nky,
    		dpacm_enable
    	}
    
    	image
    	{
    		name = pmc_subsys, id = 0x1c000001
    		partition
    		{
    			id = 0x01, type = bootloader,
    			encryption = aes,
    			keysrc = bbram_red_key,
    			aeskeyfile = bbram_red_key.nky,
    			dpacm_enable,
    			blocks = 4096(2);1024;2048(2);4096(*),
    			file = executable.elf
    		}
    		partition
    		{
    			id = 0x09, type = pmcdata, load = 0xf2000000,
    			aeskeyfile = pmcdata.nky,
    			file = topology_xcvc1902.v1.cdo,
    			file = pmc_data.cdo
    		}
    	}
    
    	image
    	{
    		name = lpd, id = 0x4210002
    		partition
    		{
    			id = 0x0C, type = cdo,
    			encryption = aes,
    			keysrc = bbram_red_key,
    			aeskeyfile = key1.nky,
    			dpacm_enable,
    			blocks = 8192(20);4096(*),
    			file = lpd_data.cdo
    		}
    		partition
    		{
    			id = 0x0B, core = psm,
    			encryption = aes,
    			keysrc = bbram_red_key,
    			aeskeyfile = key2.nky,
    			dpacm_enable,
    			blocks = 4096(2);1024;2048(2);4096(*),
    			file = psm_fw.elf
    		}
    	}
    
    	image
    	{
    		name = fpd, id = 0x420c003
    		partition
    		{
    			id = 0x08, type = cdo,
    			encryption = aes,
    			keysrc = bbram_red_key,
    			aeskeyfile = key5.nky,
    			dpacm_enable,
    			blocks = 8192(20);4096(*),
    			file = fpd_data.cdo
    		}
    	}
    }
Note: In the above example, the first two blocks are of 4096 bytes, the second block is of 1024 bytes, and the next two blocks are of 2048 bytes. The rest of the blocks are of 4096 bytes.