This page provides information related to the Versal Platform Loader and Manager (PLM).
...
*This above size which we give here is basically the total Image store memory allocated where multiple PDI’s are stored once the PDI add request is made.
Eg:
A new <PDI ID> field is added to the Add & Remove Image Store IPI command
...
id_code = 0x14ca8093
extended_id_code = 0x01
id = 0x1
boot_device { imagestore, address = 12 }
image
{
name = pmc_subsys
id = 0x1c000001
partition
{
id = 0x2
type = bootloader
file = ./plm.elf
}
partition
{
id = 0x3
type = pmcdata,load=0xF2000000
file = ./pmc_data.cdo
}
}
...
Please refer to CDO spec for the list of CDO/IPI commands supported by XilLoader.
CDO Offset logging
CDO offset logging helps in identifying and resolving issue with CDO command failures. This process can be done in two ways: through XSDB or from PMC CDO.
To enable CDO offset logging from XSDB, you need to use the "mwr" command to set the register "0xF1110054" with the value "0x8".
The command will look like this:
mwr 0xF1110054 0x8
On the other hand, to enable CDO offset logging from PMC CDO, you need to add the following CDO command to PMC CDO:
mask_write 0xF1110054 0x8 0x8
Once you have enabled CDO offset logging, you can fetch the last executed CDO offset address. This can be done either through the PLM log or from the "error_status" register. In the PLM log, the offset can be found in the register dump, specifically under "PMC_GLOBAL_PMC_GSW_ERR". In the "error_status" register, you can fetch it from xsdb by running "device status -hex error_status" and looking for "GSW ERROR (Bits [93:64])".
After obtaining the hex value from GSW ERROR, multiply it by 4. Then, identify the partition where the failure occurred.
To generate a CDO dump, use the command "cdoutil -annotate=offset <path to pdi>". Redirect this command output to a file to capture it.
Finally, open the dump and look for the partition offset. Subtract the partition offset with the GSW error offset calculated earlier. This will give you a new offset for the partition. Look for the command with this new offset to complete the process.
**Note: Generate the CDO dump for the entire PDI, rather than just for individual CDOs.
PM
Platform Management (XilPM) is a library that provides interfaces to create and manage subsystems, MIO, Clocks, Power and Reset settings of nodes. The following table provides the list of commands supported by this module. For details about Platform Management, refer to the Chapter 10: Versal ACAP Platform Management in UG1304
...
Info |
---|
Note: All of the metrics are with compilation optimized for size (-Os) and LTO settings enabled for PLM BSP. This optimization settings are enabled by default. |
[2022.2]
S No. | Feature/Build Flag | Size occupied (KB) | Free space (KB) | Additional Notes | Remarks |
---|---|---|---|---|---|
1 | PLM default build | 363.6 | 20.4 | Default PLM includes all PLM modules and basic PLM prints, and has time stamp enabled. (PLM_DEBUG and PLM_PRINT_PERF) | |
2 | PLM_PRINT_NO_UART enabled/plm_uart_dbg_en set to false | 363.6 | 20.4 | Disables prints to UART (Print to memory is enabled irrespective of this option being set) | This estimate is with the combination of (1) and (2) |
3 | PLM_PRINT enabled/plm_dbg_lvl set to level 0 | 331.9 | 52.1 | Enables only mandatory prints | This estimate is with PLM_PRINT macro enabled and all other print macros (PLM_DEBUG, PLM_DEBUG_INFO and PLM_DEBUG_DETAILED) disabled |
4 | PLM_DEBUG_INFO enabled/plm_dbg_lvl set to level 2 | 376.6 | 7.4 | Enables more info prints | This estimate is with PLM_DEBUG_INFO macro enabled and all other print macros (PLM_PRINT, PLM_DEBUG and PLM_DEBUG_DETAILED) disabled |
5 | PLM_DEBUG_DETAILED enabled/plm_dbg_lvl set to level 3 | Overflowed by 1480 bytes | - | Enables detailed debug prints | This estimate is with PLM_DEBUG_DETAILED macro enabled and all other print macros (PLM_PRINT, PLM_DEBUG and PLM_DEBUG_INFO) disabled |
6 | PLM_DEBUG_MODE enabled/plm_mode set to debug | 362.8 | 21.2 | PLM debug mode is enabled when PLM_DEBUG_MODE flag is enabled or plm_mode option is set to debug | This estimate is with the combination of (1) and (6) |
7 | PLM_PRINT_PERF disabled/plm_perf_en set to false | 363.3 | 20.7 | Disables PLM performance prints | This estimate is with the combination of (1) and (7) |
8 | PLM_QSPI_EXCLUDE enabled/plm_qspi_en set to false | 355.5 | 28.5 | Excludes QSPI related code | This estimate is with the combination of (1) and (8) |
9 | PLM_SD_EXCLUDE enabled/plm_sd_en set to false | 343.3 | 40.7 | Excludes SD related code | This estimate is with the combination of (1) and (9) |
10 | PLM_OSPI_EXCLUDE enabled/plm_ospi_en set to false | 363.6 | 20.4 | Excludes OSPI related code | This estimate is with the combination of (1) and (10) |
11 | PLM_SEM_EXCLUDE enabled/plm_sem_en set to false | 363.6 | 20.4 | Excludes SEM related code | This estimate is with the combination of (1) and (11) |
12 | PLM_SECURE_EXCLUDE enabled/plm_secure_en set to false | 317.5 | 66.5 | Excludes Secure related code | This estimate is with the combination of (1) and (12) |
13 | PLM_USB_EXCLUDE disabled/plm_usb_en set to true | 374.1 | 9.9 | Enables USB related code | This estimate is with the combination of (1) and (13) |
14 | PLM_NVM_EXCLUDE disabled/plm_nvm_en set to true | Overflowed by 232 bytes | - | Enables NVM related code | This estimate is with the combination of (1) and (14) |
15 | PLM_PUF_EXCLUDE disabled/plm_puf_en set to true | 366.5 | 17.5 | Enabled PUF related code | This estimate is with the combination of (1) and (15) |
[2023.1]
S No. | Feature/Build Flag | Size occupied (KB) | Free space (KB) | Additional Notes | Remarks |
1 | PLM default build | 376.35 | 7.65 | Default PLM includes all PLM modules and basic PLM prints, and has time stamp enabled. (PLM_DEBUG and PLM_PRINT_PERF) | |
2 | PLM_PRINT_NO_UART enabled/plm_uart_dbg_en set to false | 376.35 | 7.65 | Disables prints to UART (Print to memory is enabled irrespective of this option being set) | This estimate is with the combination of (1) and (2) |
3 | PLM_PRINT enabled/plm_dbg_lvl set to level 0 | 342.23 | 41.77 | Enables only mandatory prints | This estimate is with PLM_PRINT macro enabled and all other print macros (PLM_DEBUG, PLM_DEBUG_INFO and PLM_DEBUG_DETAILED) disabled |
4 | PLM_DEBUG_INFO enabled/plm_dbg_lvl set to level 2 | Overflowed by 7664 bytes | - | Enables more info prints | This estimate is with PLM_DEBUG_INFO macro enabled and all other print macros (PLM_PRINT, PLM_DEBUG and PLM_DEBUG_DETAILED) disabled |
5 | PLM_DEBUG_DETAILED enabled/plm_dbg_lvl set to level 3 | Overflowed by 16880 bytes | - | Enables detailed debug prints | This estimate is with PLM_DEBUG_DETAILED macro enabled and all other print macros (PLM_PRINT, PLM_DEBUG and PLM_DEBUG_INFO) disabled |
6 | PLM_DEBUG_MODE enabled/plm_mode set to debug | 374.46 | 9.54 | PLM debug mode is enabled when PLM_DEBUG_MODE flag is enabled or plm_mode option is set to debug | This estimate is with the combination of (1) and (6) |
7 | PLM_PRINT_PERF disabled/plm_perf_en set to false | 376.15 | 7.85 | Disables PLM performance prints | This estimate is with the combination of (1) and (7) |
8 | PLM_QSPI_EXCLUDE enabled/plm_qspi_en set to false | 367.21 | 16.79 | Excludes QSPI related code | This estimate is with the combination of (1) and (8) |
9 | PLM_SD_EXCLUDE enabled/plm_sd_en set to false | 353.46 | 30.54 | Excludes SD related code | This estimate is with the combination of (1) and (9) |
10 | PLM_OSPI_EXCLUDE enabled/plm_ospi_en set to false | 376.35 | 7.65 | Excludes OSPI related code | This estimate is with the combination of (1) and (10) |
11 | PLM_SEM_EXCLUDE enabled/plm_sem_en set to false | 376.35 | 7.65 | Excludes SEM related code | This estimate is with the combination of (1) and (11) |
12 | PLM_SECURE_EXCLUDE enabled/plm_secure_en set to false | 324.36 | 59.64 | Excludes Secure related code | This estimate is with the combination of (1) and (12) |
13 | PLM_USB_EXCLUDE disabled/plm_usb_en set to true | Overflowed by 3088 bytes | - | Enables USB related code | This estimate is with the combination of (1) and (13) |
14 | PLM_NVM_EXCLUDE disabled/plm_nvm_en set to true | Overflowed by 12872 bytes | - | Enables NVM related code | This estimate is with the combination of (1) and (14) |
15 | PLM_PUF_EXCLUDE disabled/plm_puf_en set to true | 378.89 | 5.11 | Enabled PUF related code | This estimate is with the combination of (1) and (15) |
16 | PLM_ECDSA_EXCLUDE enabled/plm_ecdsa_en set to false | 361.5 | 22.5 | Excludes ECDSA related code | This estimate is with the combination of (1) and (16) |
17 | PLM_RSA_EXCLUDE enabled/plm_rsa_en set to false | 368.5 | 15.5 | Excludes RSA related code | This estimate is with the combination of (1) and (17) |
18 | PLM_ENABLE_PLM_TO_PLM_COMM disabled/ssit_plm_to_plm_comm_en set to false | 376.35 | 7.65 | Excludes PLM to PLM communication related code | This estimate is with the combination of (1) and (18) |
...
clean:
rm -rf $(LIBPLMI_DIR)/${OBJECTS}
rm -rf ${RELEASEDIR}/${LIB}
$(LIBPLMI_DIR)/xplmi.o: $(LIBPLMI_DIR)/xplmi.c $(INCLUDEFILES)
$(COMPILER) $(COMPILER_FLAGS) -g -ffunction-sections -fdata-sections -Wall -Wextra -Og $(INCLUDES) -c $< -o $@
$(LIBPLMI_DIR)/%.o: $(LIBPLMI_DIR)/%.c $(INCLUDEFILES)
$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) -c $< -o $@
...
plm log -log-mem-addr 0x10A019000 -log-size 0x1000 → SLR1 / Slave 0
plm log -log-mem-addr 0x112019000 -log-size 0x1000 → SLR2/ Slave 1
plm log -log-mem-addr 0x11A019000 -log-size 0x1000 → SLR3/ Slave 2
*log-size (Max: 0x4000)
error_status / jtag_status for Secondary SLR / Slave SLR
...