xilloader
Vitis Drivers API Documentation
xloader.h File Reference

Overview

This file contains declarations for image store functions.

MODIFICATION HISTORY:
Ver   Who  Date        Changes


1.00 kc 07/25/2018 Initial release tp 04/05/2019 Added API to reload a particular image kc 04/09/2019 Added support for PCIe secondary boot mode and partial PDI load bsv 06/11/2019 Added TCM power up code to Xilloader to fix issue in R5-1 split mode functionality bsv 06/17/2019 Added support for CFI and CFU error handling bsv 06/26/2019 Added secondary boot support kc 07/16/2019 Added code to print execution time rv 07/29/2019 Added code to request boot source before subsystem restart vnsl 07/30/2019 Added APIs to load secure headers scs 08/29/2019 Added API to validate extended ID Code bsv 08/30/2019 Added fallback and multiboot support in PLM kc 09/05/2019 Added code to use PMCDMA0 and PMCDMA1 in parallel kc 09/13/2019 SBI reset is removed for SMAP boot mode to ensure smap bus width value remains unchanged 1.01 bsv 10/31/2019 Added USB secondary boot mode support kc 12/02/2019 Added performance time stamps ma 12/12/2019 Added support for passing hand off parameters to ATF bsv 12/30/2019 Added SMAP secondary boot mode support ma 02/03/2020 Change XPlmi_MeasurePerfTime to retrieve Performance time and print bsv 02/12/2020 Added support for SD/eMMC raw boot mode bsv 02/23/2020 Added multi partition support for SD/eMMC FS boot modes bsv 02/25/2020 Added macros to handle u32 return values from drivers vnsl 02/26/2020 Added boot header reading call during partial PDI kc 02/27/2020 Added SEM support for partial reconfiguration bsv 02/28/2020 Added support for delay handoff har 02/28/2020 Removed code to return error codes for security related errors vnsl 03/01/2020 Added PUF KEK decrypt support bsv 03/14/2020 Added eMMC0 FS and raw boot mode support bsv 04/09/2020 Code clean up 1.02 ana 06/04/2020 Updated PlmkatStatus and Kekstatus variables from initial boot pdi to partial pdi structure variables bsv 06/22/2020 Cfi error handler should only be called for PL image bsv 07/01/2020 Added DevRelease to DevOps skd 07/14/2020 Function pointers Copy and DeviceCopy prototypes changed kal 07/20/2020 Added macro XLOADER_SECURE_CHUNK_SIZE for security bsv 07/29/2020 Added CopyToMem address and delay load fields in XilPdi structure skd 07/29/2020 Removed device copy macros bsv 08/06/2020 Code clean up bsv 08/10/2020 Added subsystem restart support from DDR har 08/11/2020 Added XLOADER_AUTH_JTAG_INT_STATUS_POLL_INTERVAL kal 08/12/2020 Added param ImageId for XLoader_CframeErrorHandler to identify Full PL partition and perform PL house cleaning. bsv 08/17/2020 Added redundancy in XLoader_IsAuthEnabled td 08/19/2020 Fixed MISRA C violations Rule 10.3 bm 08/19/2020 Added minor error codes skd 08/21/2020 Added flash size macros bm 09/21/2020 Added ImageInfo related code and added compatibility check required for DFx bm 09/24/2020 Added FuncID argument to RestartImage and ReloadImage bsv 10/13/2020 Code clean up ana 10/19/2020 Added doxygen comments 1.03 bm 12/15/2020 Added XLOADER_SD_MAX_BOOT_FILES_LIMIT macro ma 01/12/2021 Added macro for invalid boot mode Added macro for invalid SLR Type Added function for PMC State clear bm 03/16/2021 Added Image Upgrade support bm 05/10/2021 Added additional macro for PDI version 1.04 bm 07/16/2021 Updated XLoader_PdiInit prototype bsv 07/19/2021 Disable UART prints when invalid header is encountered in slave boot modes bsv 08/02/2021 Updated function return type as part of code clean up bm 08/09/2021 Removed obsolete XLoader_PMCStateClear API prototype bm 08/24/2021 Added Extract Metaheader support bm 08/26/2021 Added XLOADER_PDI_TYPE_PARTIAL_METAHEADER macro bsv 08/31/2021 Code clean up ma 09/01/2021 Use SSIT defines from XilPlmi kpt 09/06/2021 Added macro XLOADER_TOTAL_CHUNK_SIZE bsv 10/26/2021 Code clean up bsv 03/17/2022 Add support for A72 elfs to run from TCM 1.05 ma 06/21/2022 Add support for Get Handoff Parameters IPI command sk 06/24/2022 Removed bit field from XLoader_ImageInfoTbl to avoid compiler or portability issues bm 07/06/2022 Refactor versal and versal_net code kpt 07/05/22 Added PpdiKatStatus for partial pdi KAT bm 07/13/2022 Added compatibility check for In-Place PLM Update bm 07/13/2022 Retain critical data structures after In-Place PLM Update ma 07/27/2022 Added support for CFrame data clear check which is required during PL secure lockdown kal 01/05/2023 Added XLOADER_PCR_INVALID_VALUE macro 1.06 sk 01/11/2023 Updated XLoader_ImageStore structure to support image store feature bm 02/22/2023 Fix XLOADER_MAX_HANDOFF_CPUS value for versal Net sk 03/17/2023 Renamed member Kekstatus to DecKeySrc in xilpdi structure sk 04/28/2023 Added function to retrieve PDI Address from Image Store based on PDI ID sk 05/18/2023 Deprecate copy to memory feature,removed SubsystemPdiIns, Added BootPdiInfo Structure,Added XLoader_GetPdiInstance function declaration sk 07/06/2023 Added prototype for Enable and Disable Jtag functions Moved minor error codes to plat headers sk 08/18/2023 Renamed ValidHeader member to DiscardUartLogs in XilPdi dd 09/11/2023 MISRA-C violation Rule 17.8 fixed 2.00 kpt 02/21/2024 Update prototype for XLoader_EnableJtag and XLoader_DisableJtag mss 03/06/2024 Added ClearAtfHandoff member in XilPdi structure and ClearATFHandoffParams function prototype har 03/12/2024 Fixed doxygen warnings kal 06/04/2024 Added ImagePrtnId to XilPdi structure mss 04/05/2024 Added XLOADER_DEVICE_COPY_OPTIMIZATION_MASK macro pre 08/22/2024 Added XLoader_CfiSelectiveRead function obs 09/30/2024 Fixed Doxygen Warnings pre 12/09/2024 use PMC RAM for Metaheader instead of PPU1 RAM bm 12/16/2024 Move I2C Handshake feature to common code tri 03/13/2025 Added XLOADER_PCR_NUMBER_MASK macro pre 03/02/2025 Added XLoader_PpdiEventParamsPtr function and XLoader_ResourceSts type definition sk 03/28/2025 Updated the max handoff count for versal_2ve_2vm

Macros

#define XLOADER_SUCCESS   (u32)XST_SUCCESS
 Alias for XST_SUCCESS. More...
 
#define XLOADER_FAILURE   (u32)XST_FAILURE
 Alias for XST_FAILURE. More...
 
#define XLoader_Printf   XPlmi_Printf
 Alias for XPlmi_Printf. More...
 
#define XLOADER_DDR_TEMP_BUFFER_ADDRESS   (0x50000000U)
 Fixed DFU temporary address in DDR. More...
 
#define XLOADER_CHUNK_SIZE   (0x10000U)
 64K More...
 
#define XLOADER_TOTAL_CHUNK_SIZE   (XLOADER_CHUNK_SIZE + 0x100U)
 Total chunk size. More...
 
#define XLOADER_DMA_LEN_ALIGN   (0x10U)
 16 bytes alignment More...
 
#define XLOADER_DMA_LEN_ALIGN_MASK   (0xFU)
 Mask for 16 bytes alignment. More...
 
#define XLOADER_IMAGE_SEARCH_OFFSET   (0x8000U)
 32K More...
 
#define XLOADER_DEVICE_COPY_OPTIMIZATION_MASK   (0x30U)
 Mask to extract copy optimization bits of RTCA SecureCtrl registers. More...
 
#define XLOADER_PCR_NUMBER_MASK   (0x0000FFFFU)
 Number mask value. More...
 
#define XLOADER_RESP_CMD_EXEC_STATUS_INDEX   (0U)
 Index of executed coammnd status. More...
 
#define XLOADER_RESP_CMD_LOAD_PDI_STATUS_INDEX   (1U)
 Index of PDI load status. More...
 
#define XLOADER_INVALID_IMG_ID   (0x0U)
 Invalid Img ID. More...
 
#define XLOADER_INVALID_UID   (0x0U)
 Invalid UID. More...
 
#define XLOADER_IMG_INDEX_NOT_FOUND   (0xFFFFFFFFU)
 Image Index Not found. More...
 
#define XLOADER_IMG_STORE_INVALID_ADDR   (0xFFFFFFFFFFFFFFFFUL)
 Invalid address in Image Store. More...
 
#define XLOADER_IMG_STORE_INVALID_SIZE   (0x0U)
 Invalid size in Image Store. More...
 
#define PdiSrc_t   u32
 Alias for u32. More...
 
#define XLOADER_MULTIBOOT_OFFSET_MASK   (0x001FFFFFU)
 Mask for multiboot offset. More...
 
#define XLOADER_SD_MAX_BOOT_FILES_LIMIT   (8192U)
 Maximum limit of boot files in SD filesystem. More...
 
#define XLOADER_UFS_MAX_BOOT_FILES_LIMIT   (8192U)
 Maximum limit of boot files in UFS filesystem. More...
 
#define XLOADER_AUTH_JTAG_INT_STATUS_POLL_INTERVAL   (1000U)
 Polling interval for checking Authenticated JTAG interrupt status. More...
 
#define XLOADER_SHA3_LEN   (48U)
 SHA3 hash length in bytes. More...
 
#define XLOADER_MAX_PDI_LIST   (32U)
 Maximum number of PDIs. More...
 
#define XLoader_MbPmcI2cHandshake   (NULL)
 DDRMB - PMC I2C Handshake. More...
 
Subsystem related macros
#define XLOADER_MAX_HANDOFF_CPUS   (10U)
 < Subsystem related macros More...
 
Macros for different PDI types
#define XLOADER_PDI_TYPE_FULL   (0x1U)
 < Different PDI types More...
 
#define XLOADER_PDI_TYPE_PARTIAL   (0x2U)
 
#define XLOADER_PDI_TYPE_RESTORE   (0x3U)
 
#define XLOADER_PDI_TYPE_FULL_METAHEADER   (0x4U)
 
#define XLOADER_PDI_TYPE_PARTIAL_METAHEADER   (0x5U)
 
#define XLOADER_PDI_TYPE_IPU   (0x6U)
 
SD boot
#define XLOADER_PDISRC_FLAGS_MASK   (0xFU)
 < SD boot related macros More...
 
#define XLOADER_PDISRC_FLAGS_SHIFT   (0x4U)
 
Status of PDI Load
#define XLOADER_PDI_LOAD_COMPLETE   (0x1U)
 < Status of PDI load More...
 
#define XLOADER_PDI_LOAD_STARTED   (0x0U)
 
SLR Types
#define XLOADER_SSIT_MONOLITIC   XPLMI_SSIT_MONOLITIC
 < SLR Types More...
 
#define XLOADER_SSIT_MASTER_SLR   XPLMI_SSIT_MASTER_SLR
 
#define XLOADER_SSIT_INVALID_SLR   XPLMI_SSIT_INVALID_SLR
 
PDI version

< Flash size

#define XLOADER_PDI_VERSION_1   (0x01030000U)
 < PDI version More...
 
#define XLOADER_PDI_VERSION_2   (0x00020000U)
 
#define XLOADER_PDI_VERSION_4   (0x00040000U)
 
PDI Src Index
#define XLOADER_SBI_INDEX   (0U)
 < PDI Src index More...
 
#define XLOADER_QSPI_INDEX   (1U)
 
#define XLOADER_SD_INDEX   (2U)
 
#define XLOADER_SD_RAW_INDEX   (3U)
 
#define XLOADER_DDR_INDEX   (4U)
 
#define XLOADER_OSPI_INDEX   (5U)
 
#define XLOADER_USB_INDEX   (6U)
 
#define XLOADER_UFS_INDEX   (7U)
 
#define XLOADER_INVALID_INDEX   (8U)
 
SD Raw boot
#define XLOADER_SD_RAWBOOT_MASK   (0xF0000000U)
 < SD Raw boot More...
 
#define XLOADER_SD_RAWBOOT_VAL   (0x70000000U)
 
#define XLOADER_EMMC_BP1_RAW_VAL   (0x10000000U)
 
#define XLOADER_EMMC_BP2_RAW_VAL   (0x20000000U)
 

Functions

int XLoader_Init (void)
 This function initializes the loader instance and registers loader commands with PLM. More...
 
XilPdi * XLoader_GetPdiInstance (void)
 This function provides PdiInstance pointer. More...
 
int XLoader_LoadPdi (XilPdi *PdiPtr, PdiSrc_t PdiSrc, u64 PdiAddr)
 This function provides loading PDI. More...
 

Macro Definition Documentation

#define PdiSrc_t   u32

Alias for u32.

Referenced by XLoader_PdiInit(), and XLoader_PerformInternalPOR().

#define XLOADER_AUTH_JTAG_INT_STATUS_POLL_INTERVAL   (1000U)

Polling interval for checking Authenticated JTAG interrupt status.

Referenced by XLoader_UpdateHandler().

#define XLOADER_CHUNK_SIZE   (0x10000U)
#define XLOADER_DDR_TEMP_BUFFER_ADDRESS   (0x50000000U)

Fixed DFU temporary address in DDR.

#define XLOADER_DEVICE_COPY_OPTIMIZATION_MASK   (0x30U)

Mask to extract copy optimization bits of RTCA SecureCtrl registers.

#define XLOADER_DMA_LEN_ALIGN   (0x10U)

16 bytes alignment

#define XLOADER_DMA_LEN_ALIGN_MASK   (0xFU)

Mask for 16 bytes alignment.

#define XLOADER_FAILURE   (u32)XST_FAILURE

Alias for XST_FAILURE.

#define XLOADER_IMAGE_SEARCH_OFFSET   (0x8000U)

32K

#define XLOADER_IMG_INDEX_NOT_FOUND   (0xFFFFFFFFU)

Image Index Not found.

#define XLOADER_IMG_STORE_INVALID_ADDR   (0xFFFFFFFFFFFFFFFFUL)

Invalid address in Image Store.

Referenced by XLoader_ReadImageStoreCfg().

#define XLOADER_IMG_STORE_INVALID_SIZE   (0x0U)

Invalid size in Image Store.

Referenced by XLoader_ReadImageStoreCfg().

#define XLOADER_INVALID_IMG_ID   (0x0U)

Invalid Img ID.

Referenced by XLoader_GetImageInfoEntry(), and XLoader_LoadImage().

#define XLOADER_INVALID_UID   (0x0U)

Invalid UID.

#define XLOADER_MAX_HANDOFF_CPUS   (10U)

< Subsystem related macros

Referenced by XLoader_UpdateHandoffParam().

#define XLOADER_MAX_PDI_LIST   (32U)

Maximum number of PDIs.

#define XLoader_MbPmcI2cHandshake   (NULL)

DDRMB - PMC I2C Handshake.

#define XLOADER_MULTIBOOT_OFFSET_MASK   (0x001FFFFFU)

Mask for multiboot offset.

#define XLOADER_PCR_NUMBER_MASK   (0x0000FFFFU)

Number mask value.

Referenced by XLoader_DataMeasurement().

#define XLOADER_PDI_LOAD_COMPLETE   (0x1U)

< Status of PDI load

Referenced by XLoader_RestartImage().

#define XLOADER_PDI_TYPE_FULL   (0x1U)
#define XLOADER_PDI_VERSION_1   (0x01030000U)

< PDI version

#define XLOADER_PDISRC_FLAGS_MASK   (0xFU)

< SD boot related macros

Referenced by XLoader_PdiInit().

#define XLoader_Printf   XPlmi_Printf

Alias for XPlmi_Printf.

Referenced by XLoader_StartImage().

#define XLOADER_RESP_CMD_EXEC_STATUS_INDEX   (0U)

Index of executed coammnd status.

#define XLOADER_RESP_CMD_LOAD_PDI_STATUS_INDEX   (1U)

Index of PDI load status.

#define XLOADER_SBI_INDEX   (0U)

< PDI Src index

#define XLOADER_SD_MAX_BOOT_FILES_LIMIT   (8192U)

Maximum limit of boot files in SD filesystem.

#define XLOADER_SD_RAWBOOT_MASK   (0xF0000000U)

< SD Raw boot

Referenced by XLoader_GetSDPdiSrcNAddr(), and XLoader_PdiInit().

#define XLOADER_SSIT_MONOLITIC   XPLMI_SSIT_MONOLITIC

< SLR Types

Referenced by XLoader_PdiInit(), and Xloader_SsitEoPdiSync().

#define XLOADER_SUCCESS   (u32)XST_SUCCESS

Alias for XST_SUCCESS.

#define XLOADER_TOTAL_CHUNK_SIZE   (XLOADER_CHUNK_SIZE + 0x100U)

Total chunk size.

#define XLOADER_UFS_MAX_BOOT_FILES_LIMIT   (8192U)

Maximum limit of boot files in UFS filesystem.