Rete 0 19 июня, 2023 Опубликовано 19 июня, 2023 (изменено) · Жалоба Пишу загрузчик на stm32f103. Получать прошивку должен по UART. На данный момент загрузчик успешно выполняет передачу управления основной программе и стирает память по адресу, соответствующему программе, при получении прошивки. Застрял на моменте отправки hex-файла загрузчику - плохо понимаю как это реализовать. Со стороны компьютера должно быть приложение, позволяющее передать файл прошивки, на это выделено 10 секунд. Пробовал использовать Tera Term, но ничего не выходит. Не знаю, не позволяет приложение или криво написан код. Сам код с получением файла прошивки не мой, планирую сначала проверить его, а затем уже написать свой. Новичок в этом деле, так что прошу не судить строго. main.c Изменено 20 июня, 2023 пользователем haker_fox Тему перенёс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба Используйте binary формат и не мучайтесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndyBig 8 19 июня, 2023 Опубликовано 19 июня, 2023 · Жалоба 4 minutes ago, x893 said: Используйте binary формат и не мучайтесь. Поддерживаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 20 июня, 2023 Опубликовано 20 июня, 2023 (изменено) · Жалоба Есть готовый неплохой загрузчик: OpenBLT. У него в репозитории 100500 примеров для трёх сред разработки (keil, iar, cubeide). Есть командная и gui-шная программы для прошивки. hex не понимают, но srec понимают. Этот формат похож. Потом по аналогии можно переделать под hex. Используемый протокол: XCP. Тут куча статей с описанием того как работать с OpenBLT: https://www.feaser.com/en/blog/category/openblt/ Изменено 20 июня, 2023 пользователем uni Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 183 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба Декодировать hex -> bin на ПК-шной программе программатора и отправлять бинарник на МК. Либо воспользоваться утилитой hex2bin и не заморачиваться (немножко не удобно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 10 hours ago, Rete said: плохо понимаю как это реализовать. Вопрос непонятен. Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация. Но здесь я солидарен с коллегами: лучше отправлять bin-формат, в этом случае Вы получаете сразу данные, которые можно программировать в память. Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 8 minutes ago, haker_fox said: Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена. Есть 100500 способов решения этой простейшей проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 6 minutes ago, x893 said: Есть 100500 способов решения этой простейшей проблемы. Я это знаю. И знаю, что Вы точно знаете. Я это автору темы поясняю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 35 minutes ago, haker_fox said: Я это знаю. И знаю, что Вы точно знаете. Я это автору темы поясняю. Вы знаете, я знаю. Значит все знают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 12 часов назад, Rete сказал: Застрял на моменте отправки hex-файла загрузчику - плохо понимаю как это реализовать. Со стороны компьютера должно быть приложение, позволяющее передать файл прошивки, на это выделено 10 секунд. Пробовал использовать Tera Term, но ничего не выходит. Если речь идёт о передаче файла посредством готовой терминалки (типа TeraTerm), то копайте в сторону XModem/YModem/ZModem -протоколов. Почитайте что это такое. TeraTerm их умеет. В каком виде передавать файл (hex, bin, etc.) - дело десятое, как удобнее обрабатывать принимаемый файл в загрузчике. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 3 часа назад, haker_fox сказал: Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация. .hex отправить как раз проще всего - из любого текстового терминала, не понадобится ничего писать. Как построчно принять в МК, есть, например, здесь. Но: построчная передача занимает порядочно времени. За 10 секунд прошить получится этак килобайт 8...16. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 1 час назад, Harbinger сказал: .hex отправить как раз проще всего - из любого текстового терминала, не понадобится ничего писать. Ну да, "не понадобится"... А ничего, что процесс стирания/прошивки и процесс передачи может идти с разной скоростью? И передача может идти быстрее. Необходимости синхронизации двух асинхронных процессов никто не отменял. И тогда: или ваять свой лисапед, или реализовать стандартный XModem/YModem/ZModem. PS: И про наличие сигналов FlowControl ТС ничего не упоминал, значит их нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uni 6 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба Когда все велосипеды выше переберёте, посмотрите как это и многое другое сделано в OpenBLT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rete 0 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 9 часов назад, haker_fox сказал: Вопрос непонятен. Если Вы не знаете, как отправить файл на микроконтроллер, вернее содержимое файла, то не сможете отправить любой формат. Даже bin. Другое дело, если Вы не знаете, как декодировать формат hex. На этот случай в интернете есть документация. Но здесь я солидарен с коллегами: лучше отправлять bin-формат, в этом случае Вы получаете сразу данные, которые можно программировать в память. Но иногда передавать формат bin недопустимо, т.к. в этом случае прошивка может быть похищена. Хорошо, а если передавать бинарный файл, обязательно ли использовать XModem, или подобные интерфейсы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 60 20 июня, 2023 Опубликовано 20 июня, 2023 · Жалоба 58 minutes ago, Rete said: Хорошо, а если передавать бинарный файл, обязательно ли использовать XModem, или подобные интерфейсы? Уже два раза намекали на OpenBLT. Посмотрите и пользуйтесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться