Bootload#
Methods to verify and bootload application images.
Functions#
Get base address of the bootloader upgrade image.
Get the version of the bootloader.
Get the version of the application.
Check application properties magic.
Check application properties struct version.
Verify the application image stored in the Flash memory starting at the address startAddress.
Bootloader upgrade callback implementation.
Image data callback implementation.
Perform a bootloader upgrade using the upgrade image present at upgradeAddress with length size.
Verify the application version for rollback protection.
Store the application version.
Count the total remaining number of application upgrades.
Store application version reset magic.
Clean the application versions seen.
Get the application version storage capacity.
Get the address of the application version storage buffer.
Check whether the application contains a certificate.
Verify a certificate with a bootloader certificate.
Verify the application certificate.
Function Documentation#
bootload_getUpgradeLocation#
uint32_t bootload_getUpgradeLocation (void )
Get base address of the bootloader upgrade image.
N/A |
Returns
Returns the base address of bootloader upgrade image.
40
of file platform/bootloader/core/btl_bootload.h
bootload_getBootloaderVersion#
uint32_t bootload_getBootloaderVersion (void )
Get the version of the bootloader.
N/A |
Returns
Returns the version of the bootloader.
47
of file platform/bootloader/core/btl_bootload.h
bootload_getApplicationVersion#
bool bootload_getApplicationVersion (uint32_t * version)
Get the version of the application.
[out] | version | The retrieved application version |
Returns
Returns true if the version was retrieved successfully
56
of file platform/bootloader/core/btl_bootload.h
bootload_checkApplicationPropertiesMagic#
bool bootload_checkApplicationPropertiesMagic (void * appProperties)
Check application properties magic.
N/A | appProperties | Pointer to ApplicationProperties_t |
Returns
True if the application properties magic is valid.
76
of file platform/bootloader/core/btl_bootload.h
bootload_checkApplicationPropertiesVersion#
bool bootload_checkApplicationPropertiesVersion (void * appProperties)
Check application properties struct version.
N/A | appProperties | Pointer to ApplicationProperties_t |
Returns
True if the application properties struct version is compatible with the bootloader.
86
of file platform/bootloader/core/btl_bootload.h
bootload_verifyApplication#
bool bootload_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 secure boot is enforced, the function will only return true if the cryptographic signature of the application is valid. Else, the application is verified according to the signature type defined in the ApplicationProperties_t structure embedded in the application. Silicon Labs wireless stacks declare this structure. Applications, which are not using a full wireless stack may need to instantiate the structure.
Examples of results when 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 image is deemed valid
112
of file platform/bootloader/core/btl_bootload.h
bootload_bootloaderCallback#
void bootload_bootloaderCallback (uint32_t offset, uint8_t data, size_t length, void * context)
Bootloader upgrade callback implementation.
N/A | offset | Offset of bootloader data (byte counter incrementing from 0) |
N/A | data | Raw bootloader data |
N/A | length | Size in bytes of raw bootloader data. |
N/A | context | A context variable defined by the implementation that is implementing this callback. |
124
of file platform/bootloader/core/btl_bootload.h
bootload_applicationCallback#
void bootload_applicationCallback (uint32_t address, uint8_t data, size_t length, void * context)
Image data callback implementation.
N/A | address | Address (inside the raw image) the data starts at |
N/A | data | Raw image data |
N/A | length | Size in bytes of raw image data. Always constrained to a multiple of four. |
N/A | context | A context variable defined by the implementation that is implementing this callback. |
139
of file platform/bootloader/core/btl_bootload.h
bootload_commitBootloaderUpgrade#
bool bootload_commitBootloaderUpgrade (uint32_t upgradeAddress, uint32_t size)
Perform a bootloader upgrade using the upgrade image present at upgradeAddress with length size.
[in] | upgradeAddress | The starting address of the upgrade image |
[in] | size | The length of the upgrade image in bytes |
If the bootloader upgrade process starts successfully, this function does not return and execution will resume from the reset handler of the upgraded bootloader.
Returns
False if the bootloader upgrade process didn't start
157
of file platform/bootloader/core/btl_bootload.h
bootload_verifyApplicationVersion#
bool bootload_verifyApplicationVersion (uint32_t appVersion, bool checkRemainingAppUpgrades)
Verify the application version for rollback protection.
[in] | appVersion | Application version to be checked. |
[in] | checkRemainingAppUpgrades | Check remaining application upgrades. |
Returns
True if the application version is higher or equal than the application versions seen. False if the application version is lower than the application versions seen. False if no remaining application upgrades are left when
checkRemainingAppUpgrades
is true.
172
of file platform/bootloader/core/btl_bootload.h
bootload_storeApplicationVersion#
bool bootload_storeApplicationVersion (uint32_t startAddress)
Store the application version.
N/A | startAddress | Start address of application. |
Note
Only the version of the verified application should be stored.
Returns
True if application version is successfully stored.
185
of file platform/bootloader/core/btl_bootload.h
bootload_remainingApplicationUpgrades#
uint32_t bootload_remainingApplicationUpgrades (void )
Count the total remaining number of application upgrades.
N/A |
Returns
remaining number of application upgrades.
192
of file platform/bootloader/core/btl_bootload.h
bootload_storeApplicationVersionResetMagic#
void bootload_storeApplicationVersionResetMagic (void )
Store application version reset magic.
N/A |
Note
Store application version reset magic to ensure that application versions are cleaned after a bootloader upgrade.
200
of file platform/bootloader/core/btl_bootload.h
bootload_removeStoredApplicationVersions#
void bootload_removeStoredApplicationVersions (void )
Clean the application versions seen.
N/A |
Note
The application versions are cleaned only if this is requested with a magic and the application version storage is not already empty.
208
of file platform/bootloader/core/btl_bootload.h
bootload_getApplicationVersionStorageCapacity#
uint32_t bootload_getApplicationVersionStorageCapacity (void )
Get the application version storage capacity.
N/A |
Returns
Application version storage capacity.
215
of file platform/bootloader/core/btl_bootload.h
bootload_getApplicationVersionStoragePtr#
uint32_t * bootload_getApplicationVersionStoragePtr (uint32_t index)
Get the address of the application version storage buffer.
N/A | index | Index of the application version storage buffer. |
Returns
Address of the application version storage buffer with the given index.
225
of file platform/bootloader/core/btl_bootload.h
bootload_gotCertificate#
bool bootload_gotCertificate (void * appProp)
Check whether the application contains a certificate.
N/A | appProp | Pointer to ApplicationProperties_t of application. |
Returns
True if application contains a certificate.
234
of file platform/bootloader/core/btl_bootload.h
bootload_verifyCertificate#
bool bootload_verifyCertificate (void * cert)
Verify a certificate with a bootloader certificate.
N/A | cert | Pointer to ApplicationCertificate_t. |
Returns
True if certificate is verified.
243
of file platform/bootloader/core/btl_bootload.h
bootload_verifyApplicationCertificate#
bool bootload_verifyApplicationCertificate (void * appProp, void * gotCert)
Verify the application certificate.
N/A | appProp | Pointer to ApplicationProperties_t of application. |
N/A | gotCert | Boolean to store application certificate presence. |
Note
This function will always return true if certificate support is not enabled. Also true if
appProp
does not contain any certificate and direct signed applications can be accepted.
Returns
True if application certificate is verified.
258
of file platform/bootloader/core/btl_bootload.h