diff options
| author | Ulf Lilleengen <[email protected]> | 2022-02-09 12:46:46 +0100 |
|---|---|---|
| committer | Ulf Lilleengen <[email protected]> | 2022-02-09 12:46:46 +0100 |
| commit | e990021b9a9d3acc309c21bd4ddf3ff090bb7999 (patch) | |
| tree | 5e457a46c63f9565e82b9dd401701cbd7aba20b7 | |
| parent | ed2a87a262e0e8c091627c96ced981dd3a97a6a1 (diff) | |
Address review comments
| -rw-r--r-- | embassy-boot/nrf/src/lib.rs | 7 | ||||
| -rw-r--r-- | embassy-boot/nrf/src/main.rs | 5 |
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] |
| 13 | fn main() -> ! { | 13 | fn 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] |
| 41 | fn panic(_info: &core::panic::PanicInfo) -> ! { | 44 | fn 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 | } |
