diff --git a/src/dfu.rs b/src/dfu.rs index 0af4e38..9ac6727 100644 --- a/src/dfu.rs +++ b/src/dfu.rs @@ -2,10 +2,11 @@ use cortex_m_rt::{pre_init}; const DFU_TRIG_MSG: u32 = 0xDECAFBAD; +extern "C" { + static mut _dfu_msg: u32; +} + pub unsafe fn set_dfu_trigger() { - extern "C" { - static mut _dfu_msg: u32; - } _dfu_msg = DFU_TRIG_MSG; } @@ -14,10 +15,6 @@ pub unsafe fn set_dfu_trigger() { /// bootloader expects MCU to be in reset state when called. #[pre_init] unsafe fn __pre_init() { - extern "C" { - static mut _dfu_msg: u32; - } - if _dfu_msg == DFU_TRIG_MSG { _dfu_msg = 0x00000000; diff --git a/src/main.rs b/src/main.rs index 8cf4b6b..7f29472 100644 --- a/src/main.rs +++ b/src/main.rs @@ -431,7 +431,7 @@ fn main() -> ! { unsafe { dfu::set_dfu_trigger(); } - socket.close(); + SCB::sys_reset(); } }