Common Application Interface#
Generic application interface available on all versions of the bootloader, regardless of the available components.
Note
These Bootloader APIs are not reentrant and should be wrapped in critical section where needed.
Modules#
Enumerations#
Bootloader interface APIs are trust zone aware.
Functions#
Get information about the bootloader on this device.
Initialize components of the bootloader so the app can use the interface.
De-initialize components of the bootloader that were previously initialized.
Reboot into the bootloader to perform an install.
Verify the application image stored in the Flash memory starting at the address startAddress.
Check whether signature verification on the application image in internal flash is enforced before every boot.
Get base address of the bootloader upgrade image.
Count the total remaining number of application upgrades.
Get reset cause of the bootloader.
Check if a pointer is valid and if it points to the bootloader main stage.
Macros#
Bootloader version major version shift value.
Bootloader version minor version shift value.
Bootloader version major version mask.
Bootloader version minor version mask.
Bootloader enforces signed application upgrade images.
Bootloader enforces encrypted application upgrade images.
Bootloader enforces signature verification of the application image before every boot.
Bootloader has the capability of being upgraded.
Bootloader has the capability of parsing GBL files.
Bootloader has the capability of parsing signed GBL files.
Bootloader has the capability of parsing encrypted GBL files.
Bootloader enforces signature verification of the application image before every boot using certificate.
Bootloader has the capability of application rollback protection.
Bootloader has the capability to check the peripherals in use.
Bootloader has the capability of storing data in an internal or external storage medium.
Bootloader has the capability of communicating with host processors using a communication interface.
Magic word indicating first stage bootloader table.
Magic word indicating main bootloader table.
Pointer to main bootloader table.
Enumeration Documentation#
BootloaderType_t#
BootloaderType_t
Bootloader interface APIs are trust zone aware.
Type of bootloader
Enumerator | |
---|---|
NO_BOOTLOADER | No bootloader present. |
SL_BOOTLOADER | Bootloader is a Silicon Labs bootloader. |
107
of file platform/bootloader/api/btl_interface.h
Function Documentation#
bootloader_getInfo#
void bootloader_getInfo (BootloaderInformation_t * info)
Get information about the bootloader on this device.
[out] | info | Pointer to the bootloader information struct. |
The returned information is fetched from the main bootloader information table.
487
of file platform/bootloader/api/btl_interface.h
bootloader_init#
int32_t bootloader_init (void )
Initialize components of the bootloader so the app can use the interface.
N/A |
This typically includes initializing serial peripherals for communication with external SPI flashes, and so on.
Returns
Error code. BOOTLOADER_OK on success, else error code in BOOTLOADER_ERROR_INIT_BASE range.
497
of file platform/bootloader/api/btl_interface.h
bootloader_deinit#
int32_t bootloader_deinit (void )
De-initialize components of the bootloader that were previously initialized.
N/A |
This typically includes powering down external SPI flashes and de-initializing the serial peripheral used for communication with the external flash.
Returns
Error code. BOOTLOADER_OK on success, else error code in BOOTLOADER_ERROR_INIT_BASE range.
508
of file platform/bootloader/api/btl_interface.h
bootloader_rebootAndInstall#
void bootloader_rebootAndInstall (void )
Reboot into the bootloader to perform an install.
N/A |
If there is a storage component and a slot is marked for bootload, install the image in that slot after verifying it.
If a communication component is present, open the communication channel and receive an image to be installed.
519
of file platform/bootloader/api/btl_interface.h
bootloader_verifyApplication#
bool bootloader_verifyApplication (uint32_t startAddress)
Verify the application image stored in the Flash memory starting at the address startAddress.
[in] | startAddress | Starting address of the application. |
If the secure boot is enforced, the function will only return true if the cryptographic signature of the application is valid. Otherwise, the application is verified according to the signature type defined in the ApplicationProperties_t structure embedded in the application. Silicon Labs wireless stacks include a declaration of this structure. However, applications not using a full wireless stack may need to instantiate the structure.
Examples of results when the secure boot is not enforced:
App has no signature: Valid if initial stack pointer and program counter have reasonable values.
App has CRC checksum: Valid if checksum is valid.
App has ECDSA signature: Valid if ECDSA signature is valid.
When secure boot is enforced, only ECDSA signed applications with a valid signature are considered valid.
Returns
True if the application is valid, else false.
547
of file platform/bootloader/api/btl_interface.h
bootloader_secureBootEnforced#
bool bootloader_secureBootEnforced (void )
Check whether signature verification on the application image in internal flash is enforced before every boot.
N/A |
Returns
True if signature verification is enforced, else false.
555
of file platform/bootloader/api/btl_interface.h
bootloader_getUpgradeLocation#
bool bootloader_getUpgradeLocation (uint32_t * location)
Get base address of the bootloader upgrade image.
[out] | location | the base address of bootloader upgrade image. |
Returns
Returns true if the location was found.
564
of file platform/bootloader/api/btl_interface.h
bootloader_remainingApplicationUpgrades#
uint32_t bootloader_remainingApplicationUpgrades (void )
Count the total remaining number of application upgrades.
N/A |
Returns
remaining number of application upgrades.
629
of file platform/bootloader/api/btl_interface.h
bootloader_getResetReason#
BootloaderResetCause_t bootloader_getResetReason (void )
Get reset cause of the bootloader.
N/A |
Returns
Reset cause of the bootloader.
648
of file platform/bootloader/api/btl_interface.h
bootloader_pointerValid#
bool bootloader_pointerValid (const void * ptr)
Check if a pointer is valid and if it points to the bootloader main stage.
[in] | ptr | The pointer to check |
This function checks pointers to bootloader jump tables.
Returns
True if the pointer points into the bootloader main stage, false if not.
701
of file platform/bootloader/api/btl_interface.h
Macro Definition Documentation#
BOOTLOADER_VERSION_MAJOR_SHIFT#
#define BOOTLOADER_VERSION_MAJOR_SHIFTValue:
(24U)
Bootloader version major version shift value.
86
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_VERSION_MINOR_SHIFT#
#define BOOTLOADER_VERSION_MINOR_SHIFTValue:
(16U)
Bootloader version minor version shift value.
88
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_VERSION_MAJOR_MASK#
#define BOOTLOADER_VERSION_MAJOR_MASKValue:
(0xFF000000U)
Bootloader version major version mask.
90
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_VERSION_MINOR_MASK#
#define BOOTLOADER_VERSION_MINOR_MASKValue:
(0x00FF0000U)
Bootloader version minor version mask.
92
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_ENFORCE_UPGRADE_SIGNATURE#
#define BOOTLOADER_CAPABILITY_ENFORCE_UPGRADE_SIGNATUREValue:
(1 << 0)
Bootloader enforces signed application upgrade images.
225
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_ENFORCE_UPGRADE_ENCRYPTION#
#define BOOTLOADER_CAPABILITY_ENFORCE_UPGRADE_ENCRYPTIONValue:
(1 << 1)
Bootloader enforces encrypted application upgrade images.
227
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_ENFORCE_SECURE_BOOT#
#define BOOTLOADER_CAPABILITY_ENFORCE_SECURE_BOOTValue:
(1 << 2)
Bootloader enforces signature verification of the application image before every boot.
230
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_BOOTLOADER_UPGRADE#
#define BOOTLOADER_CAPABILITY_BOOTLOADER_UPGRADEValue:
(1 << 4)
Bootloader has the capability of being upgraded.
233
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_GBL#
#define BOOTLOADER_CAPABILITY_GBLValue:
(1 << 5)
Bootloader has the capability of parsing GBL files.
236
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_GBL_SIGNATURE#
#define BOOTLOADER_CAPABILITY_GBL_SIGNATUREValue:
(1 << 6)
Bootloader has the capability of parsing signed GBL files.
238
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_GBL_ENCRYPTION#
#define BOOTLOADER_CAPABILITY_GBL_ENCRYPTIONValue:
(1 << 7)
Bootloader has the capability of parsing encrypted GBL files.
240
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_ENFORCE_CERTIFICATE_SECURE_BOOT#
#define BOOTLOADER_CAPABILITY_ENFORCE_CERTIFICATE_SECURE_BOOTValue:
(1 << 8)
Bootloader enforces signature verification of the application image before every boot using certificate.
243
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_ROLLBACK_PROTECTION#
#define BOOTLOADER_CAPABILITY_ROLLBACK_PROTECTIONValue:
(1 << 9)
Bootloader has the capability of application rollback protection.
245
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_PERIPHERAL_LIST#
#define BOOTLOADER_CAPABILITY_PERIPHERAL_LISTValue:
(1 << 10)
Bootloader has the capability to check the peripherals in use.
247
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_STORAGE#
#define BOOTLOADER_CAPABILITY_STORAGEValue:
(1 << 16)
Bootloader has the capability of storing data in an internal or external storage medium.
251
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_CAPABILITY_COMMUNICATION#
#define BOOTLOADER_CAPABILITY_COMMUNICATIONValue:
(1 << 20)
Bootloader has the capability of communicating with host processors using a communication interface.
254
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_MAGIC_FIRST_STAGE#
#define BOOTLOADER_MAGIC_FIRST_STAGEValue:
(0xB00710ADUL)
Magic word indicating first stage bootloader table.
260
of file platform/bootloader/api/btl_interface.h
BOOTLOADER_MAGIC_MAIN#
#define BOOTLOADER_MAGIC_MAINValue:
(0x5ECDB007UL)
Magic word indicating main bootloader table.
262
of file platform/bootloader/api/btl_interface.h
mainBootloaderTable#
#define mainBootloaderTableValue:
Pointer to main bootloader table.
473
of file platform/bootloader/api/btl_interface.h