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

Объединение прошивки и бутлоадера


Рекомендуемые сообщения

Здравствуйте все!!

Заранее прошу прощения, если тема уже была - интернетом пользоваться умею, но конкретного ответа на вопрос не нашел. 

Как залить в МК одновременно прошивку и бутлоадер?

 Есть 2 .hex файла. Могу я просто соединить первое со вторым, тупо убрав последнюю строчку в первом файле, там, где конец фала указан?

МК ATmega32A

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

1 час назад, Дмитрий Андреевич сказал:

Как залить в МК одновременно прошивку и бутлоадер?

В этом нет смысла. Если можете зашить программу то зачем вам Бутлоадер? Ну и потом если зашиваете Бутлоадер именно он и должен залить програму в только ему известное место. В противном случае ничего не будет работать. Вам ведь нужно чтобы програма автоматически стартовала при соблюдении условий определеных бутлоадером.

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Смысл в том, что прошивать нужно несколько чипов за раз. Кроме того, это буду делать не я, а другой человек. Для ускорения процесса лучше бы, чтобы это все происходило сразу. Бут, по сути, используется только для обновления прошивки. Первая версия прошивки будет включена в бут.

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

8 минут назад, Дмитрий Андреевич сказал:

Бут, по сути, используется только для обновления прошивки

Только человек написавший загрузчик может дать верный ответ! Программа в чистом виде может быть совершенно бесполезной, и только загрузчик в процессе заливки  может делать ее работоспособной.

Сергей.

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

...

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

Вопрос:

Есть 2 файла .hex.

Как объединить их, чтобы секцию приложения объединить с секцией загрузчика в одном файле?

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

:wall:

Решение найдено, оно простое как двери:

1. Пишем бут

2. Пишем прошивку посредством бута

3. Опять цепляем ICP программатор и считываем ВСЮ область Flash-памяти.

Profit!

Всем спасибо.

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

1 час назад, Дмитрий Андреевич сказал:

Есть 2 файла .hex.

Как объединить их, чтобы секцию приложения объединить с секцией загрузчика в одном файле?

Вроде как в HEX-файле указываются конкретные адреса памяти, куда надо прошивать данные. Так что, по моему мнению, можно просто дописать файл основной прошивки данными из файла бутовой прошивки, и итоговый файл скормить программатору.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

  • 2 года спустя...

Тоже искал как это сделать, мне хотелось чтобы Makefile собирал прошивку уже с бутлоадером в один hex.

И вот такое решение я нашëл:

srec_cat -Output_Block_Size 16 main.hex -I bootloader/boot.hex -I -o main_b.hex -I

Опцией -Output_Block_Size можно указать максимальное количество байт в строке выходного hex файла.

Утилита srec_cat из пакета SRecord.

SRecord - это набор мощных инструментов для управления файлами загрузки EPROM.

Чтобы скачать сборку для Windows заходим на сайт:

http://srecord.sourceforge.net/

Download -> переходим к абзацу Pre-compiled Windows Executables

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

  • 5 месяцев спустя...
29.06.2018 в 13:46, Дмитрий Андреевич сказал:

Могу я просто соединить первое со вторым, тупо убрав последнюю строчку в первом файле, там, где конец фала указан?

Да, я так делал. Открыл hex-файл с основной прошивкой, убрал в нём последнюю строку ":00000001FF", скопировал полностью текст hex-файла прошивки бутлоадера и добавил в конец hex-файла основной прошивки. После этого сохранил файл под другим именем, чтоб случайно не затереть его при очередной сборке проекта.

Всё. Скармливаю полученный файл программатору и получаю во flash микроконтроллера основную прошивку и бутлоадер.

Сравнивал flash микроконтроллера, прошитого этим способом и стандартным способом, с прошивкой бутлоадера, а затем через него основной прошивки - flash идентичны

Изменено пользователем Falconist
Оверквотинг
Ссылка на комментарий
Поделиться на другие сайты

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Если не добавлять: при чтении регистра UDR сбрасывается флаг прерывания RXC. После приёма  "\r" и установки флага FLAG_END_RX обработчик больше не читает UDR. Но затем приходит "\n" от плеера, снова устанавливается флаг RXC, и программа зависает в бесконечном прерывании.
    • Сказал - сделал! Благодарю! И остальным, у кого Ц4353 может сломаться, данная табличка будет очень полезна!
    • Автору. Никаких тут 250...200 ватт у этой китайской бздюшки нет в помине. Тем паче на таком подобии радиатора Катушки даже на выходе нет-плохо  
    • Повторюсь - НЕТ, так как у вас там крутилки, что приведет к искажениям при работе в мостовой схеме. Если бы вы "могли" то вам нужно было разорвать выход с темброблока и вход усилителей и впаять (можно навесом) вот такую схему:
    • Все верно, вы почти все что нужно сделали.  Только не нужно было добавлять это b=UDR; Сразу после старта сбросить флаг flags = 0; А в основном цикле ждать установки флага FLAG_END_RX. И если он установлен, проверять на совпадение строки в буфере (rx_buf) с вашей строкой (AT+QM \ r \ n .....   .....  AT+MP \ r \ n) При совпадении вызывать выполнение нужного алгоритма.
    • У меня до саба ещё дело не дошло, только сейчас думаю купить амп на полкиловатта, но так можно, при условии, что на входе будет моно, и будет срез частот
    • Про флаг Т: если он не используется в основной программе, а у меня он постоянно в деле. для меня меня отложенная обработка прерывания обычное дело, нужно лишь правильно расставить приоритеты частей программы. И обычное дело: выставляешь частоту задающего генератора побольше, делишь его до получения частоты 1000 Гц каким либо таймером, загоняешь в прерывание с флагом. затем закольцовываешь основную программу с проверкой флага прерывания от таймера 1000Гц. загоняешь программу в Sleep. Получаешь кольцо обработки с образцовым интервалом в 1 мс. После любого прерывания проверяешь флаг от таймера, если он, то сбрасываешь флаг и начинаешь перебирать подпрограммы обработки индикаторов, клавиатуры, и тд. и тп, подпрограммы обработки флагов и др. После окончания обработки всех подпрограмм возвращаешься к Sleep. И так по кольцу. Если происходит прерывание не от таймера, программа выходит из Sleep, проверяется флаг от таймера, если не он (а это не он) обратно к Sleep. В большенстве программ использую этот алгоритм.   GPIOR1 и GPIOR2 в 88 условно можно использовать как флаги, но их адреса больше 0х1Е, на них не распространяются команды cbi, sbi, sbic, sbis, и их сначала нужно загрузить в общий регистр, промодифицировать, и заново сохранить. Эта последовательность длинная, и модифицирует SREG, что сводит на нет работу по сравнению с  классическим GPIOR.
×
×
  • Создать...