Задать вопрос
@johanngorban
Embedded-разработчик

Почему прошивка для STM32F103 не запускается после перехода с Keil на Cmake?

Возникла проблема при переходе сборки с Keil на Cmake на STM32F103. Самописный бутлоадер принимает прошивку по xmodem и сохраняет ее по адресу 0x08040000, затем по команде update копирует данные в 0x08020000, ищет в прошивке строку вида "ver:x.y.z", выводит версию, настраивает msp, vtor и прыгает на reset_handler приложения по команде gop.

Если использовать бинарник, собранный в Keil, все работает супер - версия определяется корректно и приложение запускается. На Cmake (используется arm-none-eabi) elf и bin собираются без ошибок, таблица векторов действительно лежит по адресу 0x08020000, строка "ver:1.0.0" присутствует в бинарнике, но после загрузки через xmodem, выполнения update и gop бутлоадер выводит версию 0.0.0, а запуск приложения приводит к зависанию.

Я просмотрел реальное содержимое флеша по адресу 0x08020000. Первые слова не совпадают с теми, которые должны быть в elf. Например, адрес reset_handler в памяти получается 0x08020fd1, хотя в elf секция .text начинается с 0x080201e8. Похоже, что во флеш записываются не те данные, но сама передача xmodem проходит нормально.

Какие причины могут приводить к тому, что во флеш записывается другой набор данных, включая неправильный адрес reset_handler, несмотря на то, что elf/bin выглядят корректно?

Код бутлоадера: https://github.com/johanngorban/bootloader
  • Вопрос задан
  • 255 просмотров
Подписаться 1 Средний 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
АО НПП «АМЭ» Санкт-Петербург
До 250 000 ₽
Uniscan Research Новосибирск
от 140 000 до 200 000 ₽
Базис-Центр Коломна
от 70 000 до 500 000 ₽