TOG 0 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба Друзья, сделал простенький бутлоадер, заливаю его в STM32 по адресу 0x08000000. Потом заливаю основную программу по адресу 0x0800D000. Все работает, бутлоадер запускается, потом передает управление основной программе. Не могу сообразить как сделать, чтобы при заливке основной программы в чистый МК, туда автоматом бы заливался и бутлоадер ? (Пользуюсь Keil MDK ARM) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба Из двух бинарей делайте один единый. Я это делаю собственной консольной утилитой, пишется за 10 минут на Си. Из готовых, разве что, утилиту srec тут кто-то пользовал, вроде. Но надо смотреть, умеет она клеить или нет. А в Keil-е нужно будет для удобства настроить запуск этого скрипта после сборки проекта - там в опциях есть все для этого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба Делаете две конфигурации. Одна с бутом, вторая с прошивкой. Добавляете load бут... в Debug init script для прошивки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба On 9/19/2022 at 10:28 AM, Arlleex said: Я это делаю собственной консольной утилитой, пишется за 10 минут на Си. Понял, Arlleex. Спасибо. On 9/19/2022 at 10:30 AM, x893 said: Делаете две конфигурации. Одна с бутом, вторая с прошивкой. Добавляете load бут... в Debug init script для прошивки. Поподробнее бы чуть-чуть. Не пойму как эти конфигурации делать и где этот Debug init script ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба 18 minutes ago, TOG said: Не пойму как эти конфигурации делать и где этот Debug init script ? Как делать расписано на сайте Keil ну и конечно в google.com 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба On 9/19/2022 at 11:23 AM, x893 said: Как делать расписано на сайте Keil ну и конечно в google.com Гениально, x893 ! Всего одна строчка. Создаем файл bootloader.ini с одной командой "LOAD Bootloader.hex" Потом в основном проекте идем в Options->Utilities->Init File и прицепляем там этот init файл. Теперь при нажатии F8(download) автоматом прошивается bootloader.hex и основной проект. Красота ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба 1 hour ago, TOG said: Гениально, x893 ! Я тут не при чём. Это им говорите - Günter и Reinhard Keil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба 5 часов назад, Arlleex сказал: Я это делаю собственной консольной утилитой, пишется за 10 минут на Си. А я это делаю батником. Пишется за 10 секунд и содержит всего одну строчку: copy /b boot.hex + work.hex complex.hex Полученный complex.hex грузится в jflash.exe (из состава Segger-овских утилит) и шьётся. Jflash даже на наличие лишней строчки ":00000001FF" в конце boot.hex не ругается, проглатывает нормально. 3 часа назад, TOG сказал: Теперь при нажатии F8(download) автоматом прошивается bootloader.hex и основной проект. Красота ! Не очень понятен смысл всех этих телодвижений... Зачем например при отладке основной программы всё время перешивать бутлоадер??? Или при отладке бутлоадера всё время перешивать основную программу? Возможно, что реально флешь и не будет шиться (если Кейл делает перед прошивкой сравнение содержимого флешь с файлом), но лишнее время тратиться всё равно будет. PS: Попробовал сейчас загрузить complex.hex в "STM32 ST-LINK Utility.exe" - загрузилось без проблем. Причём выглядит даже красивее, чем в Jflash. Т.е. с ST-Link вроде тоже нормально работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба On 9/19/2022 at 3:55 PM, jcxz said: Не очень понятен смысл всех этих телодвижений... Зачем например при отладке основной программы всё время перешивать бутлоадер??? Это чтобы через полгода, когда понадобится запустить этот проект я не вспоминал нужен ли приложению бутлоадер и где его искать, а просто нажал F8 и все заработало Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Intel4004 1 19 сентября, 2022 Опубликовано 19 сентября, 2022 · Жалоба Делаете из скомпиленного бутлоадера сишный массив и подключаете его к проекту: const unsigned char Bootloader[0xD000] __attribute__((at(0x08000000))) = { ... }; Все. Ваша прошивка содержит в себе бутлоадер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба On 9/19/2022 at 6:57 PM, Intel4004 said: Делаете из скомпиленного бутлоадера сишный массив и подключаете его к проекту Тоже отличный вариант, Intel4004 ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба Разве получится дебажить из кейла основную программу если туда перескакиваем из бута? Если да расскажите как я не умею, если нет то неужели вы массово шьете девайсы из кейла? Я сейчас в кейл делаю два таргета с разными адресами старта. С 0x08000000 для отладки и с адресом после бута для релиза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TOG 0 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба On 9/21/2022 at 9:38 AM, uriy said: Разве получится дебажить из кейла основную программу если туда перескакиваем из бута? Да, отладка работает. Загрузчик отработал и передал управление основной программе и отладчик остановился на main. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 1 час назад, uriy сказал: Разве получится дебажить из кейла основную программу если туда перескакиваем из бута? А чем перескакивание из бута отличается от перескакивания из Reset_Handler() без бута? Можно, конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 21 сентября, 2022 Опубликовано 21 сентября, 2022 · Жалоба 8 часов назад, uriy сказал: Разве получится дебажить из кейла основную программу если туда перескакиваем из бута? А в чём проблема? Отладчик, после загрузки образа, сам передаёт управление на его стартовый адрес. Без бута. По-крайней мере в IAR под отладчиком можно запускать программу расположенную с произвольного адреса (в пределах разумного) даже вообще без бутлоадера. И если потом просто включить питание такого МК без отладчика, то программа конечно не запустится. Я так иногда делаю: чтобы не затирать текущую программу в начале флеши, переношу исполняемый регион в конец флеши (запас по размеру флеши есть большой). И прошиваю и отлаживаю IAR-ом программу в старших адресах флеши, не стирая программу в начале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться