aboutsummaryrefslogtreecommitdiff
path: root/lib/stm32/f1
diff options
context:
space:
mode:
authorJeff Ciesielski2012-10-19 16:30:27 -0700
committerJeff Ciesielski2012-10-19 16:30:27 -0700
commit153e81bc96add8229e29e495e21adf9e8e9c8ddc (patch)
tree7de0c439f46d5eaa6de1a065b053eeaa44be5bb7 /lib/stm32/f1
parentbe4ee41ef98bfd40480634812fee6cccd5cd7360 (diff)
stm32/f1/vector: add ability to boot to DFU bootloader
note: Only works on CL devices also: this could probably use a helper function
Diffstat (limited to 'lib/stm32/f1')
-rw-r--r--lib/stm32/f1/vector.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/stm32/f1/vector.c b/lib/stm32/f1/vector.c
index f496ae4..d660774 100644
--- a/lib/stm32/f1/vector.c
+++ b/lib/stm32/f1/vector.c
@@ -191,10 +191,19 @@ void (*const vector_table[]) (void) = {
otg_fs_isr, /* Addr: 0x0000_014C */
};
+#include <stdint.h>
void reset_handler(void)
{
volatile unsigned *src, *dest;
+ uint32_t reset_str = *((uint32_t *)0x2000FFF0);
+ if (reset_str == 0xDEADBEEF) {
+ *((uint32_t *)0x2000FFF0) = 0x00;
+ asm("ldr r0, =0x1fffb000");
+ asm("ldr sp, [r0, #0]");
+ asm("ldr r0, [r0, #4]");
+ asm("bx r0");
+ }
__asm__("MSR msp, %0" : : "r"(&_stack));
for (src = &_data_loadaddr, dest = &_data; dest < &_edata; src++, dest++)