Приложение после загрузчика падает на первом же прерывании
Загрузчик занимает 0x08000000–0x08007FFF, приложение слинковано с адреса 0x08008000. Переход:
uint32_t *app = (uint32_t *)0x08008000;
__set_MSP(app[0]);
((void (*)(void))app[1])();
Приложение стартует, выполняет инициализацию, но при первом прерывании SysTick уходит в HardFault. Автономно прошитое с 0x08000000 оно работает. Что пропущено?
- Не перенесён VTOR на таблицу векторов приложения
- Не выставлен младший бит адреса перехода
- Стек приложения нужно взять из app[1]
- Приложение нужно линковать с адреса 0x08000000
