embassy/examples/boot/application/nrf
huntc 8497f98de2 Provides a means of obtaining the current WDT config
Obtaining the current WDT config is important so that we do not have to duplication configuration around the place. A constructor method has been introduced that returns WDT config in accordance with how the register is presently configured. The bootloader example has also been updated to show the watchdog can be obtained and used.
2023-01-04 12:13:44 +11:00
..
.cargo Move bootloader main to examples 2022-06-24 19:56:15 +02:00
src/bin Provides a means of obtaining the current WDT config 2023-01-04 12:13:44 +11:00
build.rs Move bootloader main to examples 2022-06-24 19:56:15 +02:00
Cargo.toml Bump defmt-rtt to 0.4 2022-11-29 21:15:24 +01:00
memory-bl.x Cleaned up some doc and memory layout 2023-01-04 10:27:16 +11:00
memory.x Cleaned up some doc and memory layout 2023-01-04 10:27:16 +11:00
README.md Cleaned up some doc and memory layout 2023-01-04 10:27:16 +11:00

Examples using bootloader

Example for nRF52 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 --release --chip nRF52840_xxAA
# Build 'b'
cargo build --release --bin b
# Generate binary for 'b'
cargo objcopy --release --bin b -- -O binary b.bin

Flash a (which includes b.bin)

cargo flash --release --bin a --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.