Перейти к содержанию
    

Получение hex-файла загрузчиком на stm32f103

Пишу загрузчик на stm32f103. Получать прошивку должен по UART. На данный момент загрузчик успешно выполняет передачу управления основной программе и стирает память по адресу, соответствующему программе, при получении прошивки. Застрял на моменте отправки hex-файла загрузчику - плохо понимаю как это реализовать. Со стороны компьютера должно быть приложение, позволяющее передать файл прошивки, на это выделено 10 секунд. Пробовал использовать Tera Term, но ничего не выходит. Не знаю, не позволяет приложение или криво написан код. Сам код с получением файла прошивки не мой, планирую сначала проверить его, а затем уже написать свой. Новичок в этом деле, так что прошу не судить строго. 

main.c

Изменено пользователем haker_fox
Тему перенёс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть готовый неплохой загрузчик: OpenBLT. У него в репозитории 100500 примеров для трёх сред разработки (keil, iar, cubeide). Есть командная и gui-шная программы для прошивки. hex не понимают, но srec понимают. Этот формат похож. Потом по аналогии можно переделать под hex. Используемый протокол: XCP.

Тут куча статей с описанием того как работать с OpenBLT: https://www.feaser.com/en/blog/category/openblt/

Изменено пользователем uni

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Декодировать hex -> bin на ПК-шной программе программатора и отправлять бинарник на МК.

Либо воспользоваться утилитой hex2bin и не заморачиваться (немножко не удобно).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, Rete said:

плохо понимаю как это реализовать.

Вопрос непонятен. Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация. Но здесь я солидарен с коллегами: лучше отправлять bin-формат, в этом случае Вы получаете сразу данные, которые можно программировать в память. Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, haker_fox said:

Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена.

Есть 100500 способов решения этой простейшей проблемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, x893 said:

Есть 100500 способов решения этой простейшей проблемы.

Я это знаю. И знаю, что Вы точно знаете. Я это автору темы поясняю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

35 minutes ago, haker_fox said:

Я это знаю. И знаю, что Вы точно знаете. Я это автору темы поясняю.

Вы знаете, я знаю. Значит все знают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, Rete сказал:

Застрял на моменте отправки hex-файла загрузчику - плохо понимаю как это реализовать. Со стороны компьютера должно быть приложение, позволяющее передать файл прошивки, на это выделено 10 секунд. Пробовал использовать Tera Term, но ничего не выходит.

Если речь идёт о передаче файла посредством готовой терминалки (типа TeraTerm), то копайте в сторону XModem/YModem/ZModem -протоколов. Почитайте что это такое. TeraTerm их умеет.

В каком виде передавать файл (hex, bin, etc.) - дело десятое, как удобнее обрабатывать принимаемый файл в загрузчике.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, haker_fox сказал:

Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация.

.hex отправить как раз проще всего - из любого текстового терминала, не понадобится ничего писать. Как построчно принять в МК, есть, например, здесь. Но: построчная передача занимает порядочно времени. За 10 секунд прошить получится этак килобайт 8...16.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Harbinger сказал:

.hex отправить как раз проще всего - из любого текстового терминала, не понадобится ничего писать.

Ну да, "не понадобится"... А ничего, что процесс стирания/прошивки и процесс передачи может идти с разной скоростью? И передача может идти быстрее.

Необходимости синхронизации двух асинхронных процессов никто не отменял. И тогда: или ваять свой лисапед, или реализовать стандартный XModem/YModem/ZModem.

PS: И про наличие сигналов FlowControl ТС ничего не упоминал, значит их нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда все велосипеды выше переберёте, посмотрите как это и многое другое сделано в OpenBLT. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, haker_fox сказал:

Вопрос непонятен. Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация. Но здесь я солидарен с коллегами: лучше отправлять bin-формат, в этом случае Вы получаете сразу данные, которые можно программировать в память. Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена.

Хорошо, а если передавать бинарный файл, обязательно ли использовать XModem, или подобные интерфейсы? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

58 minutes ago, Rete said:

Хорошо, а если передавать бинарный файл, обязательно ли использовать XModem, или подобные интерфейсы? 

Уже два раза намекали на OpenBLT. Посмотрите и пользуйтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...