I end up in _unhandled_exception for some reason:
Code: Select all
(gdb) break ResetHandler
Breakpoint 1 at 0x8001580: file ChibiOS/os/ports/GCC/ARMCMx/crt0.c, line 282.
(gdb) cont
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.
Breakpoint 1, ResetHandler () at ChibiOS/os/ports/GCC/ARMCMx/crt0.c:282
282 uint32_t *magic_word = (uint32_t *)(SYMVAL(__ram_end__) - 4); // look at the last word in ram
(gdb) step
283 if (*magic_word == 0xDEADBEEF) {
(gdb) step
373 }
(gdb) step
284 *magic_word = 0; // reset magic flag
(gdb) step
285 ((funcp_t) (*(uint32_t *)0x1FFF0004U))(); // jump into boot loader
(gdb) step
284 *magic_word = 0; // reset magic flag
(gdb) step
285 ((funcp_t) (*(uint32_t *)0x1FFF0004U))(); // jump into boot loader
(gdb) step
^C
Program received signal SIGINT, Interrupt.
_unhandled_exception () at ChibiOS/os/ports/GCC/ARMCMx/STM32F4xx/vectors.c:226
226 void _unhandled_exception(void) {
(gdb) bt
#0 _unhandled_exception ()
at ChibiOS/os/ports/GCC/ARMCMx/STM32F4xx/vectors.c:226
#1 <signal handler called>
#2 0x00000000 in ?? ()
#3 0x1fff3d2a in ?? ()
#4 0x1fff3d2a in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)