embassy/examples/boot/application/nrf
pennae 8a9136e4e4 enable inline-asm feature for cortex-m in examples
inline assembly is supported since rust 1.59, we're way past that.
enabling this makes the compiled code more compact, and on rp2040
even decreses memory usage by not needing thunks in sram.
2023-04-18 21:07:36 +02:00
..
.cargo Move bootloader main to examples 2022-06-24 19:56:15 +02:00
src/bin feat: compile bootloader examples for nRF91 2023-01-04 13:38:43 +01:00
build.rs Move bootloader main to examples 2022-06-24 19:56:15 +02:00
Cargo.toml enable inline-asm feature for cortex-m in examples 2023-04-18 21:07:36 +02: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.