aboutsummaryrefslogtreecommitdiff
path: root/examples/boot/application/nrf/src/bin/a.rs
diff options
context:
space:
mode:
authorRasmus Melchior Jacobsen <[email protected]>2023-05-30 14:03:31 +0200
committerRasmus Melchior Jacobsen <[email protected]>2023-05-30 14:03:31 +0200
commit36e00caf4dc70905b735531c0d5634addd026954 (patch)
tree01d3bbb3b7f1ab522f9a1fc651f48197ce355927 /examples/boot/application/nrf/src/bin/a.rs
parentc2aca45b8d3785007da20ce007d6a6e352fac1a0 (diff)
Align examples
Diffstat (limited to 'examples/boot/application/nrf/src/bin/a.rs')
-rw-r--r--examples/boot/application/nrf/src/bin/a.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/examples/boot/application/nrf/src/bin/a.rs b/examples/boot/application/nrf/src/bin/a.rs
index 090a05b23..06c237781 100644
--- a/examples/boot/application/nrf/src/bin/a.rs
+++ b/examples/boot/application/nrf/src/bin/a.rs
@@ -3,12 +3,13 @@
3#![macro_use] 3#![macro_use]
4#![feature(type_alias_impl_trait)] 4#![feature(type_alias_impl_trait)]
5 5
6use embassy_boot_nrf::FirmwareUpdater; 6use embassy_boot_nrf::{FirmwareUpdater, FirmwareUpdaterConfig};
7use embassy_embedded_hal::adapter::BlockingAsync; 7use embassy_embedded_hal::adapter::BlockingAsync;
8use embassy_executor::Spawner; 8use embassy_executor::Spawner;
9use embassy_nrf::gpio::{Input, Level, Output, OutputDrive, Pull}; 9use embassy_nrf::gpio::{Input, Level, Output, OutputDrive, Pull};
10use embassy_nrf::nvmc::Nvmc; 10use embassy_nrf::nvmc::Nvmc;
11use embassy_nrf::wdt::{self, Watchdog}; 11use embassy_nrf::wdt::{self, Watchdog};
12use embassy_sync::mutex::Mutex;
12use panic_reset as _; 13use panic_reset as _;
13 14
14static APP_B: &[u8] = include_bytes!("../../b.bin"); 15static APP_B: &[u8] = include_bytes!("../../b.bin");
@@ -45,9 +46,10 @@ async fn main(_spawner: Spawner) {
45 }; 46 };
46 47
47 let nvmc = Nvmc::new(p.NVMC); 48 let nvmc = Nvmc::new(p.NVMC);
48 let mut nvmc = BlockingAsync::new(nvmc); 49 let nvmc = Mutex::new(BlockingAsync::new(nvmc));
49 50
50 let mut updater = FirmwareUpdater::default(); 51 let config = FirmwareUpdaterConfig::from_linkerfile(&nvmc);
52 let mut updater = FirmwareUpdater::new(config);
51 loop { 53 loop {
52 led.set_low(); 54 led.set_low();
53 button.wait_for_any_edge().await; 55 button.wait_for_any_edge().await;
@@ -56,11 +58,11 @@ async fn main(_spawner: Spawner) {
56 for chunk in APP_B.chunks(4096) { 58 for chunk in APP_B.chunks(4096) {
57 let mut buf: [u8; 4096] = [0; 4096]; 59 let mut buf: [u8; 4096] = [0; 4096];
58 buf[..chunk.len()].copy_from_slice(chunk); 60 buf[..chunk.len()].copy_from_slice(chunk);
59 updater.write_firmware(offset, &buf, &mut nvmc, 4096).await.unwrap(); 61 updater.write_firmware(offset, &buf).await.unwrap();
60 offset += chunk.len(); 62 offset += chunk.len();
61 } 63 }
62 let mut magic = [0; 4]; 64 let mut magic = [0; 4];
63 updater.mark_updated(&mut nvmc, &mut magic).await.unwrap(); 65 updater.mark_updated(&mut magic).await.unwrap();
64 led.set_high(); 66 led.set_high();
65 cortex_m::peripheral::SCB::sys_reset(); 67 cortex_m::peripheral::SCB::sys_reset();
66 } 68 }