Crates.io | embassy-boot-nrf |
lib.rs | embassy-boot-nrf |
version | 0.8.0 |
created_at | 2022-02-09 19:57:37.528724+00 |
updated_at | 2025-08-27 17:08:20.734536+00 |
description | Bootloader lib for nRF chips |
homepage | |
repository | https://github.com/embassy-rs/embassy |
max_upload_size | |
id | 529867 |
size | 35,353 |
An Embassy project.
An adaptation of embassy-boot
for nRF.
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:
MBR_BOOTLOADER_ADDR
location in flash memory (defined in nrf_mbr.h
), orUICR.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.