AM263Px MCU+ SDK: bootloader_soc.h File Reference

| AM263Px MCU+ SDK 26.00.00 |

Data Structures | Macros | Functions
bootloader_soc.h File Reference

Go to the source code of this file.

## Data Structures
struct | Bootloader_CoreBootInfo
| Data structure containing information about a core specific to the SOC. More...
struct | Bootloader_socCoreOpModeConfig
| Data structure containing information about the operating mode specific to the SOC. More...

## Macros
#define | BOOTLOADER_APP_SEGMENT_CANBE_ENCRYPTED (0xA5U)
#define | BOOTLOADER_APP_SEGMENT_CANNOTBE_ENCRYPTED (0x5AU)
#define | BOOTLOADER_SOC_APP_CERT_SIZE (0x1000)
Device Types
#define | BOOTLOADER_DEVTYPE_HSSE (0x0AU)
| device type HSSE More...
#define | BOOTLOADER_DEVTYPE_HSFS (0xAAU)
| device type HSFS More...
#define | BOOTLOADER_DEVTYPE_GP (0x03U)
| device type GP More...
#define | BOOTLOADER_CLIENT_ID (0x02)
| hsmclient ID for bootloader More...
#define | BOOTLOADER_MAX_SBL_SIZE_IN_TCM_KB (640U)

## Functions
int32_t | Bootloader_socCpuRequest (uint32_t cpuId)
| Request for a particular CPU in the AM64x SOC. More...
int32_t | Bootloader_socCpuRelease (uint32_t cpuId)
| Release a particular CPU in the AM64x SOC. More...
int32_t | Bootloader_socCpuSetClock (uint32_t cpuId, uint32_t cpuHz)
| Set the clock of a particular CPU in the AM64x SOC. More...
uint64_t | Bootloader_socCpuGetClock (uint32_t cpuId)
| Get the clock of a particular CPU in the AM64x SOC. More...
uint32_t | Bootloader_socCpuGetClkDefault (uint32_t cpuId)
| Get the default clock of a particular CPU in the AM64x SOC. More...
int32_t | Bootloader_socCpuPowerOnReset (uint32_t cpuId, void *socCoreOpMode)
| Do power-on-reset of a particular CPU in the AM64x SOC. More...
int32_t | Bootloader_socCpuResetRelease (uint32_t cpuId, uintptr_t entryPoint)
| Release a particular CPU in the AM64x SOC from reset. More...
int32_t | Bootloader_socCpuResetReleaseSelf (void)
| Release self CPU in the AM64x SOC from reset. More...
int32_t | Bootloader_socCpuSetEntryPoint (uint32_t cpuId, uintptr_t entryPoint)
| Set entry point for self CPU in the AM64x SOC from reset. More...
uint32_t | Bootloader_socTranslateSectionAddr (uint32_t cslCoreId, uint32_t addr)
| Translate a CPU address to the SOC address wherever applicable. More...
uint32_t | Bootloader_socRprcToCslCoreId (uint32_t rprcCoreId)
| Obtain the CSL core ID of a CPU from its RPRC core ID. More...
uint32_t * | Bootloader_socGetSelfCpuList (void)
| Get the list of self cpus in the SOC. More...
char * | Bootloader_socGetCoreName (uint32_t cpuId)
| Get the name of a core. More...
int32_t | Bootloader_socMemInitCpu (uint32_t cpuId)
| Initialize the core memories of a specific core. More...
int32_t | Bootloader_socSecHandover (void)
| API to trigger the security handover from SYSFW. More...
void | Bootloader_socInitL2MailBoxMemory (void)
| API to configure Core and Per PLLS. More...
int32_t | Bootloader_socAuthImage (uint32_t certLoadAddr)
| API to authenticate (and decrypt if needed) an appimage using SYSFW. More...
uint32_t | Bootloader_socIsAuthRequired (void)
| API to check if authentication is required for the device. Checks the SYS_STATUS register to see if device is GP, HS-FS, HS-SE etc. More...
void | Bootloader_socGetBootSeqOid (uint8_t *boot_seq_oid)
| API to get boot sequence oid. More...
void | Bootloader_socLoadHsmRtFw (HsmClient_t *gHSMClient, const uint8_t *HsmRtFw, uint32_t hsmRTSize)
| API to load hsm runtime firmware. More...
void | Bootloader_socLoadHsmRtFwNonBlocking (HsmClient_t *gHSMClient, const uint8_t *HsmRtFw, uint32_t hsmRTSize)
| Non blocking API to load hsm runtime firmware. More...
void | Bootloader_socSetAutoClock ()
| API to set CPU clock to 200 MHz or 400 MHz on the basis of eFUSE bits configuration. More...
int32_t | Bootloader_socCpuSetAppEntryPoint (uint32_t cpuId, uintptr_t entryPoint)
int32_t | Bootloader_authStart (uintptr_t startAddr, uint32_t size)
| API to start streaming boot authentication. More...
int32_t | Bootloader_authUpdate (uintptr_t startAddr, uint32_t size, uint8_t enc)
| API to update the Secure Boot Stream with a new segment. More...
int32_t | Bootloader_authFinish (void)
| API to finish streaming boot authentication. More...

## Macro Definition Documentation

## ◆ BOOTLOADER_APP_SEGMENT_CANBE_ENCRYPTED

#define BOOTLOADER_APP_SEGMENT_CANBE_ENCRYPTED (0xA5U)

This application segment can be encrypted.

## ◆ BOOTLOADER_APP_SEGMENT_CANNOTBE_ENCRYPTED

#define BOOTLOADER_APP_SEGMENT_CANNOTBE_ENCRYPTED (0x5AU)

This application segment can never be encrypted.

## ◆ BOOTLOADER_SOC_APP_CERT_SIZE

#define BOOTLOADER_SOC_APP_CERT_SIZE (0x1000)

Maximum supported size of the application certificate

## ◆ BOOTLOADER_DEVTYPE_HSSE

#define BOOTLOADER_DEVTYPE_HSSE (0x0AU)

device type HSSE

## ◆ BOOTLOADER_DEVTYPE_HSFS

#define BOOTLOADER_DEVTYPE_HSFS (0xAAU)

device type HSFS

## ◆ BOOTLOADER_DEVTYPE_GP

#define BOOTLOADER_DEVTYPE_GP (0x03U)

device type GP

## ◆ BOOTLOADER_CLIENT_ID

#define BOOTLOADER_CLIENT_ID (0x02)

hsmclient ID for bootloader

## ◆ BOOTLOADER_MAX_SBL_SIZE_IN_TCM_KB

#define BOOTLOADER_MAX_SBL_SIZE_IN_TCM_KB (640U)

The maximum size of the SBL in TCM memory : Derived from ROM Eclipse

## Function Documentation

## ◆ Bootloader_socCpuRequest()

int32_t Bootloader_socCpuRequest | ( | uint32_t | cpuId | ) |

Request for a particular CPU in the AM64x SOC.

This API internally makes Sciclient calls to request control of the CPU

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socCpuRelease()

int32_t Bootloader_socCpuRelease | ( | uint32_t | cpuId | ) |

Release a particular CPU in the AM64x SOC.

This API internally makes Sciclient calls to release control of the CPU

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socCpuSetClock()

int32_t Bootloader_socCpuSetClock | ( | uint32_t | cpuId,
|  | uint32_t | cpuHz
| ) |  |

Set the clock of a particular CPU in the AM64x SOC.

This API internally makes Sciclient calls to set CPU clock

Parameters

  cpuId | [in] The CSL ID of the core
  cpuHz | [in] Desired clock frequency of the CPU in Hertz

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socCpuGetClock()

uint64_t Bootloader_socCpuGetClock | ( | uint32_t | cpuId | ) |

Get the clock of a particular CPU in the AM64x SOC.

This API internally makes Sciclient calls to get the current clock frequency of CPU

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  Current clock speed of the CPU

## ◆ Bootloader_socCpuGetClkDefault()

uint32_t Bootloader_socCpuGetClkDefault | ( | uint32_t | cpuId | ) |

Get the default clock of a particular CPU in the AM64x SOC.

This API queries and internal lookup table to fetch the default clock speed at which a particular CPU should run.

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  Default clock speed of the CPU

## ◆ Bootloader_socCpuPowerOnReset()

int32_t Bootloader_socCpuPowerOnReset | ( | uint32_t | cpuId,
|  | void * | socCoreOpMode
| ) |  |

Do power-on-reset of a particular CPU in the AM64x SOC.

This API is called only when booting a non-self CPU.

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  SystemP_SUCCESS on success, else failure

Parameters

  socCoreOpMode | Lockstep/Dual core mode as per setting in syscfg.

## ◆ Bootloader_socCpuResetRelease()

int32_t Bootloader_socCpuResetRelease | ( | uint32_t | cpuId,
|  | uintptr_t | entryPoint
| ) |  |

Release a particular CPU in the AM64x SOC from reset.

This API is called only when booting a non-self CPU. There is a different API Bootloader_socCpuResetReleaseSelf in the case of a self CPU

Parameters

  cpuId | [in] The CSL ID of the core
  entryPoint | [in] The entryPoint of the CPU, from where it should start execution

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socCpuResetReleaseSelf()

int32_t Bootloader_socCpuResetReleaseSelf | ( | void |  | ) |

Release self CPU in the AM64x SOC from reset.

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socCpuSetEntryPoint()

int32_t Bootloader_socCpuSetEntryPoint | ( | uint32_t | cpuId,
|  | uintptr_t | entryPoint
| ) |  |

Set entry point for self CPU in the AM64x SOC from reset.

This API need not be called when booting a non-self CPU. The entry point can be specified in the Bootloader_socCpuResetRelease function itself

Parameters

  cpuId | [in] The CSL ID of the core
  entryPoint | [in] The entryPoint of the CPU, from where it should start execution

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socTranslateSectionAddr()

uint32_t Bootloader_socTranslateSectionAddr | ( | uint32_t | cslCoreId,
|  | uint32_t | addr
| ) |  |

Translate a CPU address to the SOC address wherever applicable.

This API need not be called when booting a non-self CPU. The entry point can be specified in the Bootloader_socCpuResetRelease function itself

Parameters

  cslCoreId | [in] The CSL ID of the core
  addr | [in] The CPU addr

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socRprcToCslCoreId()

uint32_t Bootloader_socRprcToCslCoreId | ( | uint32_t | rprcCoreId | ) |

Obtain the CSL core ID of a CPU from its RPRC core ID.

Parameters

  rprcCoreId | [in] The RPRC ID of the core

Returns
  CSL core ID of a CPU

## ◆ Bootloader_socGetSelfCpuList()

uint32_t* Bootloader_socGetSelfCpuList | ( | void |  | ) |

Get the list of self cpus in the SOC.

Returns
  List of self cpus ending with an invalid core id

## ◆ Bootloader_socGetCoreName()

char* Bootloader_socGetCoreName | ( | uint32_t | cpuId | ) |

Get the name of a core.

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  Name of the CPU

## ◆ Bootloader_socMemInitCpu()

int32_t Bootloader_socMemInitCpu | ( | uint32_t | cpuId | ) |

Initialize the core memories of a specific core.

Parameters

  cpuId | [in] The CSL ID of the core

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socSecHandover()

int32_t Bootloader_socSecHandover | ( | void |  | ) |

API to trigger the security handover from SYSFW.

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socInitL2MailBoxMemory()

void Bootloader_socInitL2MailBoxMemory | ( | void |  | ) |

API to configure Core and Per PLLS.

API to Init L2,L3 Banks and Mailbox Memory

## ◆ Bootloader_socAuthImage()

int32_t Bootloader_socAuthImage | ( | uint32_t | certLoadAddr | ) |

API to authenticate (and decrypt if needed) an appimage using SYSFW.

Parameters

  certLoadAddr | [in] The SOC address pointing to the certificate+appimage

Returns
  SystemP_SUCCESS on success, else failure

## ◆ Bootloader_socIsAuthRequired()

uint32_t Bootloader_socIsAuthRequired | ( | void |  | ) |

API to check if authentication is required for the device. Checks the SYS_STATUS register to see if device is GP, HS-FS, HS-SE etc.

Returns
  TRUE (1U) if authentication required, FALSE (0U) if not.

## ◆ Bootloader_socGetBootSeqOid()

void Bootloader_socGetBootSeqOid | ( | uint8_t * | boot_seq_oid | ) |

API to get boot sequence oid.

Parameters

  boot_seq_oid | [in] pointer to integer array for populating boot sequence oid

## ◆ Bootloader_socLoadHsmRtFw()

void Bootloader_socLoadHsmRtFw | ( | HsmClient_t * | gHSMClient,
|  | const uint8_t * | HsmRtFw,
|  | uint32_t | hsmRTSize
| ) |  |

API to load hsm runtime firmware.

## ◆ Bootloader_socLoadHsmRtFwNonBlocking()

void Bootloader_socLoadHsmRtFwNonBlocking | ( | HsmClient_t * | gHSMClient,
|  | const uint8_t * | HsmRtFw,
|  | uint32_t | hsmRTSize
| ) |  |

Non blocking API to load hsm runtime firmware.

## ◆ Bootloader_socSetAutoClock()

void Bootloader_socSetAutoClock | ( |  | ) |

API to set CPU clock to 200 MHz or 400 MHz on the basis of eFUSE bits configuration.

## ◆ Bootloader_socCpuSetAppEntryPoint()

int32_t Bootloader_socCpuSetAppEntryPoint | ( | uint32_t | cpuId,
|  | uintptr_t | entryPoint
| ) |  |

dummy api call

## ◆ Bootloader_authStart()

int32_t Bootloader_authStart | ( | uintptr_t | startAddr,
|  | uint32_t | size
| ) |  |

API to start streaming boot authentication.

## ◆ Bootloader_authUpdate()

int32_t Bootloader_authUpdate | ( | uintptr_t | startAddr,
|  | uint32_t | size,
|  | uint8_t | enc
| ) |  |

API to update the Secure Boot Stream with a new segment.

## ◆ Bootloader_authFinish()

int32_t Bootloader_authFinish | ( | void |  | ) |

API to finish streaming boot authentication.