embassy/examples/boot/application/nrf
2024-01-02 18:13:25 +01:00
..
.cargo Update probe-rs-cli -> probe-rs 2023-06-29 02:39:28 +02:00
src/bin ci: use beta, add secondary nightly ci. 2023-12-21 15:03:57 +01:00
build.rs Move bootloader main to examples 2022-06-24 19:56:15 +02:00
Cargo.toml examples: configure executor task arena sizes. 2024-01-02 18:13:25 +01:00
memory-bl-nrf91.x feat: compile bootloader examples for nRF91 2023-01-04 13:38:43 +01:00
memory-bl.x Cleaned up some doc and memory layout 2023-01-04 10:27:16 +11:00
memory-nrf91.x feat: compile bootloader examples for nRF91 2023-01-04 13:38:43 +01:00
memory.x Cleaned up some doc and memory layout 2023-01-04 10:27:16 +11:00
README.md Support codesigning in the firmware updater 2023-01-12 13:30:58 +11:00

Examples using bootloader

Example for nRF demonstrating the bootloader. The example consists of application binaries, 'a' which allows you to press a button to start the DFU process, and 'b' which is the updated application.

Prerequisites

  • cargo-binutils
  • cargo-flash
  • embassy-boot-nrf

Usage

# Use bare metal linker script
cp memory-bl.x ../../bootloader/nrf/memory.x

# Flash bootloader
cargo flash --manifest-path ../../bootloader/nrf/Cargo.toml --features embassy-nrf/nrf52840 --target thumbv7em-none-eabi --release --chip nRF52840_xxAA
# Build 'b'
cargo build --release --bin b --features embassy-nrf/nrf52840
# Generate binary for 'b'
cargo objcopy --release --bin b --features embassy-nrf/nrf52840 --target thumbv7em-none-eabi -- -O binary b.bin

Flash a (which includes b.bin)

cargo flash --release --bin a --features embassy-nrf/nrf52840 --target thumbv7em-none-eabi --chip nRF52840_xxAA

You should then see a solid LED. Pressing button 1 will cause the DFU to be loaded by the bootloader. Upon successfully loading, you'll see the LED flash. After 5 seconds, because there is no petting of the watchdog, you'll see the LED go solid again. This indicates that the bootloader has reverted the update.