Silicon Labs Gecko Bootloader#
Introduction#
The Silicon Labs Gecko Bootloader is a common bootloader for all newer Silicon Labs MCUs and wireless MCUs (WMCUs). Key features of the bootloader are:
Universal bootloader across MCU families (MCU and WMCU)
Supports image verification and encryption for
Integrity
Authenticity
Confidentiality
In-field upgradeable
Configurable
This document describes the requirements and the usage of the Gecko Bootloader.
Device Compatibility#
The Silicon Labs Gecko Bootloader is a customizable bootloader compatible with the following devices:
EFM32 and EFR32 Series 1 Devices
EFM32 and EFR32 Series 2 Devices
The Gecko bootloader has a two-stage design. The first stage enables upgrading the main bootloader, which enables in-field bootloader upgrades.
Requirements#
Flash Size#
See UG103.6 Bootloader Fundamentals, section '3. Memory Space For Bootloading' for bootloader flash size requirements.
Capabilities#
ECDSA signature verification of the application SHA-256 digest is supported for integrity and security reasons. As a result, the bootloader can only run on devices that support hardware acceleration of these operations. The bootloader is therefore only compatible with the EFM32 and EFR32 Series 1 devices and EFM32 and EFR32 Series 2 devices.
Application Interface#
The bootloader includes an application interface, which is exposed through a function table in the bootloader. The application interface provides APIs to store and retrieve upgrade images, verify the integrity of the images, and so on.
To use the application interface, include the api/btl_interface.h
header in your application and add the following files to the build:
api/btl_interface.c
api/btl_interface_storage.c
See the Application Interface documentation for more information.
Bootloader Components#
The bootloader itself consists of the following parts:
Core#
The bootloader core contains the main function of both bootloader stages. It also contains functionality to write to the internal main Flash, to perform a bootloader upgrade, and to reset into the application flagging applicable reset reasons. See the Core Documentation for more information.
Driver#
Different bootloading applications require different hardware drivers for use by the other components of the bootloader. See the Driver Documentation for more information.
Components#
All parts of the bootloader that are either optional or swappable for different implementations are implemented as components. Each component has a generic header file and one or more implementations. The current release contains components for functionality, such as UART and SPI communication protocols, SPI Flash storage, internal Flash storage, and different cryptographic operations. For more information about different components, see the Components Documentation.