From 2afff617f652d0fdcfa9ffcfd49062e3d2c996a3 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Tue, 19 Apr 2022 14:42:38 +0200 Subject: Support multiple flash instances in embassy-boot * Add FlashProvider and FlashConfig traits to define flash characteristics * Use traits in bootloader to retrieve flash handles and for copying data between flash instances * Add convenience implementations for using a single flash instance. --- embassy-boot/nrf/src/lib.rs | 6 ++++-- embassy-boot/nrf/src/main.rs | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'embassy-boot/nrf/src') diff --git a/embassy-boot/nrf/src/lib.rs b/embassy-boot/nrf/src/lib.rs index 32250b2db..785cb67e8 100644 --- a/embassy-boot/nrf/src/lib.rs +++ b/embassy-boot/nrf/src/lib.rs @@ -4,7 +4,9 @@ mod fmt; -pub use embassy_boot::{FirmwareUpdater, Partition, State, BOOT_MAGIC}; +pub use embassy_boot::{ + FirmwareUpdater, FlashProvider, Partition, SingleFlashProvider, State, BOOT_MAGIC, +}; use embassy_nrf::{ nvmc::{Nvmc, PAGE_SIZE}, peripherals::WDT, @@ -62,7 +64,7 @@ impl BootLoader { } /// Boots the application without softdevice mechanisms - pub fn prepare(&mut self, flash: &mut F) -> usize { + pub fn prepare(&mut self, flash: &mut F) -> usize { match self.boot.prepare_boot(flash) { Ok(_) => self.boot.boot_address(), Err(_) => panic!("boot prepare error!"), diff --git a/embassy-boot/nrf/src/main.rs b/embassy-boot/nrf/src/main.rs index cd264d4c2..63de7c869 100644 --- a/embassy-boot/nrf/src/main.rs +++ b/embassy-boot/nrf/src/main.rs @@ -22,7 +22,11 @@ fn main() -> ! { */ let mut bl = BootLoader::default(); - let start = bl.prepare(&mut WatchdogFlash::start(Nvmc::new(p.NVMC), p.WDT, 5)); + let start = bl.prepare(&mut SingleFlashProvider::new(&mut WatchdogFlash::start( + Nvmc::new(p.NVMC), + p.WDT, + 5, + ))); unsafe { bl.load(start) } } -- cgit