BIF Syntax and Supported File Types - 2024.1 English

Vitis Unified Software Platform Documentation: Embedded Software Development (UG1400)

Document ID
UG1400
Release Date
2024-05-30
Version
2024.1 English

The BIF file specifies each component of the boot image, in order of boot, and allows optional attributes to be applied to each image component. In some cases, an image component can be mapped to more than one partition if the image component is not contiguous in memory. For example, if an ELF file has multiple loadable sections that are non-contiguous, then each section can be a separate partition. BIF file syntax takes the following form:

new_bif:
{
  id = 0x2
  id_code = 0x04ca8093
  extended_id_code = 0x01
  image
  {
      name = pmc_subsys, id = 0x1c000001
      partition
      { 
          id = 0x11, type = bootloader,
          file = /path/to/plm.elf
      }
      partition
      {
         type = pmcdata, load = 0xf2000000,
         file = /path/to/pmc_cdo.bin
      }
  }
}
Note: The above format is for AMD Versalâ„¢ devices only.
<image_name>:
{
	// common attributes
	[attribute1] <argument1>   
	 
	// partition attributes
	[attribute2, attribute3=<argument>] <elf>
	[attribute2, attribute3=<argument>, attibute4=<argument] <bit>
	[attribute3] <elf>
	<bin>
}  
  • The <image_name> and the {...} grouping brackets the files that are to be made into partitions in the ROM image.
  • One or more data files are listed in the {...} brackets.
  • Each partition data files can have an optional set of attributes preceding the data file name with the syntax [attribute, attribute=<argument>].
  • Attributes apply some quality to the data file.
  • Multiple attributes can be listed separated with a ',' as a separator. The order of multiple attributes is not important. Some attributes are one keyword, some are keyword equates.
  • You can also add a filepath to the file name if the file is not in the current directory. How you list the files is free form; either all on one line (separated by any white space, and at least one space), or on separate lines.
  • White space is ignored, and can be added for readability.
  • You can use C-style block comments of /*...*/, or C++ line comments of //.

The following example is of a BIF with additional white space and new lines for improved readability:

<bootimage_name>:
{
	/* 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 Supported Files

The following table lists the Bootgen supported files.

Table 1. Bootgen Supported Files
Device Supported Extension Description Notes
Supported by all devices .bin Binary Raw binary file.
.dtb Binary Raw binary file.
image.gz Binary Raw binary file.
.elf Executable Linked File (ELF) Symbols and headers removed.
.int Register initialization file  
.nky AES key  
.pub/.pem RSA key  
.sig Signature files Signature files generated by Bootgen or HSM.
Versal .rcdo CFI Files For Versal devices only.
.cdo/.npi/ .rnpi CDO files Configuration Data Object files. For Versal devices only.
.bin/.pdi Boot image Boot image generated using Bootgen.
Zynq 7000/Zynq UltraScale+ MPSoC/FPGA .bit/.rbt Bitstream Strips the BIT file header.