The platform loader and manager (PLM) can be loaded either via JTAG or from a static flash device via the BootROM. The role of the PLM is to configure the Versal device (both the processor subsystem and the programmable logic) with the binaries that are generated in the Vivado Design Suite. These binaries are delivered in various formats. For example, the user configuration created in the CIPS using the Vivado IP integrator is passed to the PLM as an input called a CDO file. The programmable logic binary is passed as a RCDO file. The PLM is executed on a platform processing unit (PPU) MicroBlazeâ„¢ processor in the platform management controller (PMC). The PLM executable is typically generated in the Vivado Design Suite and packaged within the XSA file. The PLM takes the input files, such as the CDO file, and parses and executes the commands within the file. The PLM and binary files are packaged into a single binary called a programmable device image (PDI) or BOOT.BIN file.
The most typical place for a PLM to fail is on the execution of one of the binaries, such as a CDO or an RCDO that has a timeout of a register. For example, in the DDR memory configuration in the RCDO file, the DDR memory calibration register is polled until it goes high. If the calibration does not go high, an issue with the PLM might occur, which results in an error message. For more information on these error messages, see the Versal Platform Loader and Manager Error Codes Wiki page.
In a typical Linux boot flow, the PDI contains the processor subsystem, the programmable logic binaries, and the secondary boot image, such as the U-BOOT ELF file. The secondary boot image contains the Arm® trusted firmware (ATF) and the device tree blob at a default offset 0x1000. The PLM hands off to the ATF, which hands off to the U-BOOT.