|
|
@ -22,8 +22,8 @@ |
|
|
|
// WARNING: These are only for CTRL bootloader release "v2.18Jun 22 2018 17:28:08" for bootloader_jump support |
|
|
|
extern uint32_t _eram; |
|
|
|
|
|
|
|
#define BOOTLOADER_MAGIC 0x3B9ACA00 |
|
|
|
#define MAGIC_ADDR (uint32_t *)((intptr_t)(&_eram) - 4) |
|
|
|
# define BOOTLOADER_MAGIC 0x3B9ACA00 |
|
|
|
# define MAGIC_ADDR (uint32_t *)((intptr_t)(&_eram) - 4) |
|
|
|
|
|
|
|
// CTRL keyboards released with bootloader version below must use RAM method. Otherwise use WDT method. |
|
|
|
void bootloader_jump(void) { |
|
|
@ -40,7 +40,8 @@ void bootloader_jump(void) { |
|
|
|
*MAGIC_ADDR = BOOTLOADER_MAGIC; // Set magic number into RAM |
|
|
|
NVIC_SystemReset(); // Perform system reset |
|
|
|
|
|
|
|
while (1); // Won't get here |
|
|
|
while (1) |
|
|
|
; // Won't get here |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -50,17 +51,22 @@ void bootloader_jump(void) { |
|
|
|
void bootloader_jump(void) { |
|
|
|
WDT->CTRLA.bit.ENABLE = 0; |
|
|
|
|
|
|
|
while (WDT->SYNCBUSY.bit.ENABLE); |
|
|
|
while (WDT->CTRLA.bit.ENABLE); |
|
|
|
while (WDT->SYNCBUSY.bit.ENABLE) |
|
|
|
; |
|
|
|
while (WDT->CTRLA.bit.ENABLE) |
|
|
|
; |
|
|
|
|
|
|
|
WDT->CONFIG.bit.WINDOW = 0; |
|
|
|
WDT->CONFIG.bit.PER = 0; |
|
|
|
WDT->EWCTRL.bit.EWOFFSET = 0; |
|
|
|
WDT->CTRLA.bit.ENABLE = 1; |
|
|
|
|
|
|
|
while (WDT->SYNCBUSY.bit.ENABLE); |
|
|
|
while (!WDT->CTRLA.bit.ENABLE); |
|
|
|
while (WDT->SYNCBUSY.bit.ENABLE) |
|
|
|
; |
|
|
|
while (!WDT->CTRLA.bit.ENABLE) |
|
|
|
; |
|
|
|
|
|
|
|
while (1); // Wait on timeout |
|
|
|
while (1) |
|
|
|
; // Wait on timeout |
|
|
|
} |
|
|
|
#endif |