AM64x MCU+ SDK  08.02.00
BOOTLOADER

The Bootloader module provides APIs to write bootloader applications for various boot media like OSPI, UART, SOC memory etc.

Features Supported

  • OSPI Boot
  • MEM Boot (Boot media is SOC memory)
  • API to parse multicore appimage
  • Separate APIs to boot self and non-self cores

SysConfig Features

Note
It is strongly recommend to use SysConfig where it is available instead of using direct SW API calls. This will help simplify the SW application and also catch common mistakes early in the development cycle.
  • Bootloader instance name
  • Boot Media to be used
  • Boot Image offset

Features not Supported

  • MMCSD Boot

Example Usage

Include the below file to access the APIs

#include <stdio.h>

Instance Open Example

gBootloaderHandle = Bootloader_open(0, NULL);
DebugP_assert(gBootloaderHandle != NULL);

Booting Cores Example

int32_t status = SystemP_SUCCESS;
status = Bootloader_parseMultiCoreAppImage(gBootloaderHandle, &gBootImageInfo);
if(SystemP_SUCCESS == status && gBootloaderHandle != NULL)
{
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_M4FSS0_0]);
}
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_R5FSS1_0]);
}
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_R5FSS1_1]);
}
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_A53SS0_0]);
}
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_A53SS0_1]);
}
if(status == SystemP_SUCCESS)
{
/* Reset self cluster, both Core0 and Core 1. Init RAMs and run the app */
status = Bootloader_bootSelfCpu(gBootloaderHandle, &gBootImageInfo);
}
}

Instance Close Example

Bootloader_close(gBootloaderHandle);

API

APIs for BOOTLOADING CPUs

CSL_CORE_ID_A53SS0_0
#define CSL_CORE_ID_A53SS0_0
Definition: cslr_soc_defines.h:73
CSL_CORE_ID_R5FSS1_0
#define CSL_CORE_ID_R5FSS1_0
Definition: cslr_soc_defines.h:71
Bootloader_bootSelfCpu
int32_t Bootloader_bootSelfCpu(Bootloader_Handle handle, Bootloader_BootImageInfo *bootImageInfo)
API to boot self CPU.
CSL_CORE_ID_R5FSS0_0
#define CSL_CORE_ID_R5FSS0_0
Definition: cslr_soc_defines.h:69
CSL_CORE_ID_A53SS0_1
#define CSL_CORE_ID_A53SS0_1
Definition: cslr_soc_defines.h:74
Bootloader_parseMultiCoreAppImage
int32_t Bootloader_parseMultiCoreAppImage(Bootloader_Handle handle, Bootloader_BootImageInfo *bootImageInfo)
Parse Multicore Appimage.
Bootloader_close
void Bootloader_close(Bootloader_Handle handle)
Close bootloader driver.
Bootloader_bootCpu
int32_t Bootloader_bootCpu(Bootloader_Handle handle, Bootloader_CpuInfo *cpuInfo)
API to boot a non-self CPU.
SystemP_SUCCESS
#define SystemP_SUCCESS
Return status when the API execution was successful.
Definition: SystemP.h:56
CSL_CORE_ID_R5FSS1_1
#define CSL_CORE_ID_R5FSS1_1
Definition: cslr_soc_defines.h:72
CSL_CORE_ID_R5FSS0_1
#define CSL_CORE_ID_R5FSS0_1
Definition: cslr_soc_defines.h:70
Bootloader_socCpuGetClkDefault
uint32_t Bootloader_socCpuGetClkDefault(uint32_t cpuId)
Get the default clock of a particular CPU in the AM64x SOC.
DebugP_assert
#define DebugP_assert(expression)
Function to call for assert check.
Definition: DebugP.h:159
bootloader.h
Bootloader Driver API/interface file.
CSL_CORE_ID_M4FSS0_0
#define CSL_CORE_ID_M4FSS0_0
Definition: cslr_soc_defines.h:68
Bootloader_open
Bootloader_Handle Bootloader_open(uint32_t instanceNum, Bootloader_Params *openParams)
Open bootloader driver.