Le lancement du programme doit être explicitement inclus :
#define SCB_BASE 0xE000ED00
#define SCB_OFFSET(o) (*(volatile uint32_t *)(SCB_BASE+o))
#define SCB_VTOR SCB_OFFSET(0x08)
...
void (* const vectors[])(void) =
{
&_stack_top, // 0 - Initial Stack Pointer Value
// Cortex-M0+ handlers
irq_handler_reset, // 1 - Reset
irq_handler_nmi, // 2 - NMI
irq_handler_hard_fault, // 3 - Hard Fault
...
};
void irq_handler_reset(void)
{
unsigned int *src, *dst;
src = &_etext;
dst = &_data;
while (dst < &_edata)
*dst++ = *src++;
dst = &_bss;
while (dst < &_ebss)
*dst++ = 0;
SCB_VTOR = (uint32_t)vectors;
main();
while (1);
}
...