Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page provides information related to the Versal Platform Loader and Manager (PLM). 

...

Since PLM supports three priority tasks (Critical, High and Normal priority), below example shows how the user can create a high priority task within PLM

Code Block
languagec
int XPlm_PreBootTasksUserTaskHandler(void* Arg)
{
  XPlmi_Printf(DEBUG_PRINT_ALWAYS, "User task handler\r\n");
  
  return XST_SUCCESS;
}

int XPlmi_RegisterUserTask(void)
{
  int Status = XST_FAILURE;
  XPlmi_TaskNode *Task;
  
  Task = XPlmi_TaskCreate(XPLM_TASK_PRIORITY_0, UserTaskHandler, NULL);
  if (Task == NULL) {
    Status = XPlmi_UpdateStatus(XPLM_ERR_TASK_CREATE, 0);
  }
  
  XPlmi_TaskTriggerNow(Task);
  
  return Status;
}

In the above example code, XPLM_TASK_PRIORITY_0 is passed to the XPlmi_TaskCreate function along with the task handler to create a task with high priority. Similarly, If user wants to create a Normal priority task, XPLM_TASK_PRIORITY_1 needs to be passed as priority argument for XPlmi_TaskCreate function.

...

*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
}
}

...

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

...