AM273x MCU+ SDK  08.06.00
BOOTLOADER

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

Features Supported

  • QSPI Boot
  • UART Boot
  • API to parse multicore appimage
  • Separate APIs to boot self and non-self cores

R5 Dual Core Support

  • With the configuration used in MCU SDK to generate the app images, the RBL brings the R5 Lock Step Mode.
  • The SBL runs on R5 core in Lock Step Mode.
  • The SBL will switch to Dual core or continue in lock step mode depending on whether App Image loaded by SBL contains the R5 Core 1 image or not.
  • If the App Image to be loaded contains the R5 core 1 binary
    • The SBL will configure R5 to switch to Dual Core Mode.
    • At the end of SBL flow, The Application image of R5 will start running in the dual core mode.
  • If the App Image doesnot contain the R5 core 1 binary
    • The SBL will not configure R5 to switch to Dual core Mode
    • At the end of SBL flow, The Application image of R5 will start running in the lock step mode.
  • Refer the IPC example which configures the R5 in Dual Core mode. IPC Notify Echo

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_C66SS0]);
}
if(status == SystemP_SUCCESS)
{
status = Bootloader_bootCpu(gBootloaderHandle, &gBootImageInfo.cpuInfo[CSL_CORE_ID_R5FSS0_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

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:60
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.
CSL_CORE_ID_C66SS0
#define CSL_CORE_ID_C66SS0
Definition: cslr_soc_defines.h:62
SystemP_SUCCESS
#define SystemP_SUCCESS
Return status when the API execution was successful.
Definition: SystemP.h:56
CSL_CORE_ID_R5FSS0_1
#define CSL_CORE_ID_R5FSS0_1
Definition: cslr_soc_defines.h:61
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:177
bootloader.h
Bootloader Driver API/interface file.
Bootloader_open
Bootloader_Handle Bootloader_open(uint32_t instanceNum, Bootloader_Params *openParams)
Open bootloader driver.