diff options
Diffstat (limited to 'tmk_core/common/chibios/bootloader.c')
-rw-r--r-- | tmk_core/common/chibios/bootloader.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c index 8a533ab6f..fc17fca1b 100644 --- a/tmk_core/common/chibios/bootloader.c +++ b/tmk_core/common/chibios/bootloader.c | |||
@@ -16,6 +16,19 @@ void bootloader_jump(void) { | |||
16 | NVIC_SystemReset(); | 16 | NVIC_SystemReset(); |
17 | } | 17 | } |
18 | 18 | ||
19 | #elif defined(STM32F3XX) | ||
20 | /* This code should be checked whether it runs correctly on platforms. | ||
21 | * It was added for clueboard60 BUT HAS NOT BEEN TESTED. | ||
22 | * FIXME - Test this | ||
23 | */ | ||
24 | #define SYMVAL(sym) (uint32_t)(((uint8_t *)&(sym)) - ((uint8_t *)0)) | ||
25 | extern uint32_t __ram0_end__; | ||
26 | |||
27 | void bootloader_jump(void) { | ||
28 | *((unsigned long *)(SYMVAL(__ram0_end__) - 4)) = 0xDEADBEEF; // set magic flag => reset handler will jump into boot loader | ||
29 | NVIC_SystemReset(); | ||
30 | } | ||
31 | |||
19 | #else /* defined(STM32F0XX) */ | 32 | #else /* defined(STM32F0XX) */ |
20 | #error Check that the bootloader code works on your platform and add it to bootloader.c! | 33 | #error Check that the bootloader code works on your platform and add it to bootloader.c! |
21 | #endif /* defined(STM32F0XX) */ | 34 | #endif /* defined(STM32F0XX) */ |
@@ -35,8 +48,9 @@ void bootloader_jump(void) { | |||
35 | 48 | ||
36 | #else /* defined(KIIBOHD_BOOTLOADER) */ | 49 | #else /* defined(KIIBOHD_BOOTLOADER) */ |
37 | /* Default for Kinetis - expecting an ARM Teensy */ | 50 | /* Default for Kinetis - expecting an ARM Teensy */ |
51 | #include "wait.h" | ||
38 | void bootloader_jump(void) { | 52 | void bootloader_jump(void) { |
39 | chThdSleepMilliseconds(100); | 53 | wait_ms(100); |
40 | __BKPT(0); | 54 | __BKPT(0); |
41 | } | 55 | } |
42 | #endif /* defined(KIIBOHD_BOOTLOADER) */ | 56 | #endif /* defined(KIIBOHD_BOOTLOADER) */ |
@@ -44,4 +58,4 @@ void bootloader_jump(void) { | |||
44 | #else /* neither STM32 nor KINETIS */ | 58 | #else /* neither STM32 nor KINETIS */ |
45 | __attribute__((weak)) | 59 | __attribute__((weak)) |
46 | void bootloader_jump(void) {} | 60 | void bootloader_jump(void) {} |
47 | #endif \ No newline at end of file | 61 | #endif |