Вступить в клуб →
средняявопросПрошивка: память, загрузчик и надёжность

Приложение после загрузчика падает на первом же прерывании

Загрузчик занимает 0x08000000–0x08007FFF, приложение слинковано с адреса 0x08008000. Переход:

uint32_t *app = (uint32_t *)0x08008000;
__set_MSP(app[0]);
((void (*)(void))app[1])();

Приложение стартует, выполняет инициализацию, но при первом прерывании SysTick уходит в HardFault. Автономно прошитое с 0x08000000 оно работает. Что пропущено?

  • Не перенесён VTOR на таблицу векторов приложения
  • Не выставлен младший бит адреса перехода
  • Стек приложения нужно взять из app[1]
  • Приложение нужно линковать с адреса 0x08000000

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела