aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2022-02-09 12:46:46 +0100
committerUlf Lilleengen <[email protected]>2022-02-09 12:46:46 +0100
commite990021b9a9d3acc309c21bd4ddf3ff090bb7999 (patch)
tree5e457a46c63f9565e82b9dd401701cbd7aba20b7
parented2a87a262e0e8c091627c96ced981dd3a97a6a1 (diff)
Address review comments
-rw-r--r--embassy-boot/nrf/src/lib.rs7
-rw-r--r--embassy-boot/nrf/src/main.rs5
2 files changed, 11 insertions, 1 deletions
diff --git a/embassy-boot/nrf/src/lib.rs b/embassy-boot/nrf/src/lib.rs
index af7ec7da2..32250b2db 100644
--- a/embassy-boot/nrf/src/lib.rs
+++ b/embassy-boot/nrf/src/lib.rs
@@ -100,6 +100,13 @@ impl BootLoader {
100 100
101 trace!("msp = {=u32:x}, rv = {=u32:x}", msp, rv); 101 trace!("msp = {=u32:x}, rv = {=u32:x}", msp, rv);
102 102
103 // These instructions perform the following operations:
104 //
105 // * Modify control register to use MSP as stack pointer (clear spsel bit)
106 // * Synchronize instruction barrier
107 // * Initialize stack pointer (0x1000)
108 // * Set link register to not return (0xFF)
109 // * Jump to softdevice reset vector
103 core::arch::asm!( 110 core::arch::asm!(
104 "mrs {tmp}, CONTROL", 111 "mrs {tmp}, CONTROL",
105 "bics {tmp}, {spsel}", 112 "bics {tmp}, {spsel}",
diff --git a/embassy-boot/nrf/src/main.rs b/embassy-boot/nrf/src/main.rs
index 08b854a7e..cd264d4c2 100644
--- a/embassy-boot/nrf/src/main.rs
+++ b/embassy-boot/nrf/src/main.rs
@@ -12,6 +12,9 @@ use embassy_nrf::nvmc::Nvmc;
12#[entry] 12#[entry]
13fn main() -> ! { 13fn main() -> ! {
14 let p = embassy_nrf::init(Default::default()); 14 let p = embassy_nrf::init(Default::default());
15
16 // Uncomment this if you are debugging the bootloader with debugger/RTT attached,
17 // as it prevents a hard fault when accessing flash 'too early' after boot.
15 /* 18 /*
16 for i in 0..10000000 { 19 for i in 0..10000000 {
17 cortex_m::asm::nop(); 20 cortex_m::asm::nop();
@@ -40,7 +43,7 @@ unsafe fn DefaultHandler(_: i16) -> ! {
40#[panic_handler] 43#[panic_handler]
41fn panic(_info: &core::panic::PanicInfo) -> ! { 44fn panic(_info: &core::panic::PanicInfo) -> ! {
42 unsafe { 45 unsafe {
43 core::arch::asm!("udf #0"); 46 cortex_m::asm::udf();
44 core::hint::unreachable_unchecked(); 47 core::hint::unreachable_unchecked();
45 } 48 }
46} 49}