Expand description
§embassy-boot-nrf
An Embassy project.
An adaptation of embassy-boot
for nRF.
§Features
- Load applications with or without the softdevice.
- Configure bootloader partitions based on linker script.
- Using watchdog timer to detect application failure.
§Working with a SoftDevice
When a SoftDevice is present, it handles starting the bootloader and the application as needed.
The SoftDevice architecture supports the bootloader via a configurable base address, referred to as BOOTLOADERADDR
, in the application flash region. This address can be specified either:
- At the
MBR_BOOTLOADER_ADDR
location in flash memory (defined innrf_mbr.h
), or - In the
UICR.NRFFW[0]
register.
The UICR.NRFFW[0]
register is used only if MBR_BOOTLOADER_ADDR
has its default value of 0xFFFFFFFF
. This bootloader relies on the latter approach.
In the memory.x
linker script, there is a section .uicr_bootloader_start_address
(origin 0x10001014
, length 0x4
) that stores the BOOTLOADERADDR
value.
Ensure that __bootloader_start
is set to the origin address of the bootloader partition.
When a bootloader is present, the SoftDevice forwards interrupts to it and executes the bootloader reset handler, defined in the bootloader’s vector table at BOOTLOADERADDR
.
Once the bootloader loads the application, the SoftDevice initiates the Application Reset Handler, defined in the application’s vector table at APP_CODE_BASE hardcoded in the SoftDevice.
The active partition’s origin must match the APP_CODE_BASE
value hardcoded within the SoftDevice. This value can be found in the release notes for each SoftDevice version.
Structs§
- Buffer aligned to 32 byte boundary, largest known alignment requirement for embassy-boot.
- Manages the state partition of the firmware update.
- Blocking FirmwareUpdater is an application API for interacting with the BootLoader without the ability to ‘mess up’ the internal bootloader state
- A bootloader for nRF devices.
- Bootloader flash configuration holding the three flashes used by the bootloader
- Manages the state partition of the firmware update.
- FirmwareUpdater is an application API for interacting with the BootLoader without the ability to ‘mess up’ the internal bootloader state
- Firmware updater flash configuration holding the two flashes used by the updater
- A flash implementation that wraps any flash and will pet a watchdog when touching flash.
Enums§
- Errors returned by bootloader