Creating a Boot Image (PDI) - 2023.1 English

Versal Adaptive SoC System Software Developers Guide (UG1304)

Document ID
UG1304
Release Date
2023-05-16
Version
2023.1 English

The AMD boot image generation tool, Bootgen is essential in creating an image file (PDI) used to boot and configure Versal devices. Bootgen creates the boot image (PDI for Versal devices) by building the required boot header, appending tables that describe the images and partitions, and processing the input data files (ELF files, PL configuration data, and other binary files) to partitions. Bootgen has specific features to assign specific destination memory addresses or imposing alignment requirements for each partition. Bootgen also supports the encryption, authentication, and calculation of checksums on each partition.

An input file (*.bif) known as the boot image format (BIF) file serves as the input for Bootgen.

For detailed information on building a boot image, see the Bootgen User Guide (UG1283).

For Versal devices, the Vivado tool flow generates a PDI using Bootgen in the backend. This PDI contains hardware-specific user configuration data, Adaptable Configuration data, NPI Data, and a PLM. Typically, the PDI is outputted from the Vivado tools and then exported to software tools, such as the Vitis development platform or PetaLinux. These tools either reuse the PDI components or input the PDI, additional software executables, or images to create a larger PDI. The Vitis tools PDI contains a PLM (optionally modified), the configuration data generated by Vivado tools, and typically contain applications that run on the APU and/or RPU cores.

Bootgen is required for creating an image file (PDI) to boot and reconfigure Versal devices. Bootgen places all of these binary images and generates a bootable image in a specific format that the PLM can interpret while loading the image.

The PDI created in the Vivado tool will contain the following sections, images, or configuration data:

  • Boot header (includes image identification, PLM partition size and offset, and other attributes)
  • PLM (platform-independent)
  • PMC CDO (based on CIPS configuration)
  • Meta headers
  • LPD CDO (based on CIPS configuration)
  • PSM (subject to CIPS configuration)
  • CFI data
  • NPI data
  • FPD CDO (based on CIPS configuration)

Some data files or images, like LPD/FPD CDO, and PSM might not be required for PL only flow, and may not be created for some use-cases like PL only, which involves limited CIPS configuration for PMC and I/O.

Extending the PDI Generated by the Vivado Design Suite

Following is a list of example files from the Vitis development platform that can be input to Bootgen:

  • PLM
    Note: Bootgen supports the replacement of the PLM and PSM ELF files from the Vivado-generated PDI. This is only if these need to be modified for specific needs. Most use cases should work with the default PLM and PSM ELFs from the Vivado tool. The PLM Boot and Configuration section discusses the files used by each subsystem and lists the general requirements for loading that subsystem.
  • APU / RPU applications
  • AI Engine configuration (DMAs, etc.)
  • AI Engine ELFs
  • U-Boot

Bootgen uses the following types of input to create the PDI:

  • PDI generated from the Vivado tools.
  • Other files from the Vitis tools, which includes an optionally modified PLM. The custom PLM replaces the default PLM. However, for most cases the default PLM can be used as is.
  • Optionally, a user-created boot image format (BIF) file, which provides Bootgen with the instructions needed to create a Vitis tools PDI. If required (in few rare use-cases), Vivado generated BIF can be reused to create/update an updated PDI in case some Vivado-generated file is updated.