Что такое бутлоадер в эбу
Объясните пожалуйста в версии 1.97.5 имеется такая функция вычитывать Bootloader Микас 10.3+ для чего она? Вернее сказать в каких случаях можно ставить и снимать ее ведь микасы капризные звери. Прошу сразу не бить реально незнаю.
aless писал(а): Объясните пожалуйста в версии 1.97.5 имеется такая функция вычитывать Bootloader Микас 10.3+ для чего она? Вернее сказать в каких случаях можно ставить и снимать ее ведь микасы капризные звери. Прошу сразу не бить реально незнаю.
Эта опция добавлена для того, чтобы сделать чтение прошивки ЭБУ более безопасным, и при этом увеличить скорость чтения прошивки.
Однако, считанную таким образом прошивку нужно записывать только через ChipLoader, в противном случае запись прошивки сторонним загрузчиком может вызвать выход ЭБУ из строя.
Бутлоадер в этом случае перезаписывается ?
Или бутлоадер вычитывается чтобы просто знать версию бутлоадера(старый,новый)?
Akim писал(а): Бутлоадер в этом случае перезаписывается ?
Или бутлоадер вычитывается чтобы просто знать версию бутлоадера(старый,новый)?
Бутлоадер ни в каком случае не переписывается. Вычитывается он, чтобы был. Он везде одинаковый встречался.
Я поясню природу своего вопроса .Имеется потребность делать
из М10.3+ ЭБУ М11 (что проще на уровне "железа",но сложней
программно(нужно переписывать новый бутлоадер,а нечем) .Или наоборот,
из М11 делать М10.3+(что сложновато на уровне железа,так как
не хватает трех микросхем и пары десятков резисторов и конденсаторов,но проще программно).
Короче,очень не хватает прожки для замены бутлоадера (старого
на новый,нового на старый).Потому как имеются проблемы ,связанные с бутлоадерами.К тому же Комбилоадер,в части перезаписи бутлоадеров М10.3+ и М11 не очень подходящий инструмент.Я надеялся,что с этим справится Чиплоадер,но не тут то было.
Если я пропустил такие программы по перезаписи последних ,свежих
бутлоадеров,то прошу указать на них.
Akim писал(а): Я поясню природу своего вопроса .Имеется потребность делать
из М10.3+ ЭБУ М11 (что проще на уровне "железа",но сложней
программно(нужно переписывать новый бутлоадер,а нечем) .Или наоборот,
из М11 делать М10.3+(что сложновато на уровне железа,так как
не хватает трех микросхем и пары десятков резисторов и конденсаторов,но проще программно).
Короче,очень не хватает прожки для замены бутлоадера (старого
на новый,нового на старый).Потому как имеются проблемы ,связанные с бутлоадерами.К тому же Комбилоадер,в части перезаписи бутлоадеров М10.3+ и М11 не очень подходящий инструмент.Я надеялся,что с этим справится Чиплоадер,но не тут то было.
Если я пропустил такие программы по перезаписи последних ,свежих
бутлоадеров,то прошу указать на них.
Перезапись бута не сделана только потому, что это критическая операция. Если в момент такой записи произойдет ошибка - блок можно пускать на запчасти. Ввиду того, что вместе с записью бута возможность укладывания блока возрастает на несколько порядков, а надобности в такой перезаписи практически нет (вы первый, кто таким интересуется) было решено отказаться от перезаписи бута.
Возможно ,что я первый кто этим интересуется на этом сайте.
Но я далеко не первый ,кто пытается делать из М10.3+ (Газель)
м11(Газель).И наоборот.На некоторых сайтах этот вопрос активно
обсуждается и делаются практические попытки.Закроем вопрос.
Кстати,процедура вполне выполнима,особенно если есть возможность
сделать и залить прошивку с уже исправленным бутом.
Robin писал(а): Чёт накрутил. Я ничего не понял, на кой ляд из 10.3+ делать 11?? Это от Газели М11 имеется ввиду??
Ну что поделаешь ? Не понял,так не понял. Значит тебе не надо.
А мне,например,иногда бывает надо.Разве плохо,поясню на примере,
иметь ,например,наиболее универсальный по своей конструкции
ЭБУ Я 5.1 (ВАЗ 2112)? Из которого,в случае необходимости,
можно сделать за пару минут практически любой вариант ЭБУ
для любой комплектации ВАЗ.
Ну ты сравнил. А какой тогда более универсальный блок? Микас 10.3+, который в Украине устанавливается только на Ланосах и Славутах, и особо проблем нет, если быть внимательным, или микас11, который встречается на газелях, и с которым нет вообще проблем?? Короче, никчемная тема поднята.
Окно программы содержит следующие вкладки:
Вкладка содержит окно просмотра буфера программы контроллера и кнопок управления:
Наличие галочки в поле Общее действ. позволяет производить выбранные операции одновременно с FLASH и EEPROM памятью контроллера за один сеанс связи.
Вкладка содержит окно просмотра буфера ЕЕПРОМ контроллера и кнопок управления:
Наличие галочки в поле Общее действ. позволяет производить выбранные операции одновременно с FLASH и EEPROM памятью контроллера за один сеанс связи.
Вкладка содержит окно выбора опций работы программы:
Завершение программирования – выполняет функцию принудительного завершения программирования. Необходимо в тех случаях, когда после записи повторное соединение завершилось с ошибкой.
Отключить защиту – позволяет отключить установленную защиту процессора для работы с ЭБУ посредством BSL-режима. Следует помнить, что подобная процедура может быть произведена всего 16 раз.
Окно программы содержит следующие вкладки:
Вкладка содержит окно просмотра буфера программы контроллера и кнопок управления:
Наличие галочки в поле Общее действ. позволяет производить выбранные операции одновременно с FLASH и EEPROM памятью контроллера за один сеанс связи.
Вкладка содержит окно просмотра буфера программы контроллера и кнопок управления:
Наличие галочки в поле Общее действ. позволяет производить выбранные операции одновременно с FLASH и EEPROM памятью контроллера за один сеанс связи.
На этой вкладке можно выбрать параметры соединения (скорость обмена с ЭБУ). В том случае, если связь с ЭБУ прерывается, попробуйте работать на более низкой скорости.
Модуль поддерживает работу с несколькими типами ЭБУ и автоматически определяет их. Программа каждого из этих типов ЭБУ состоит из бутлоадера (программа, управляющая запуском основной программы и ее обновлением), основной программы с калибровкам. Работа с разными типами ЭБУ имеет некоторые особенности:
Январь‑7.2+ (идентификатор ПО х2xxxxxx) (бутлоадер ИТЭЛМА)
При записи ЭБУ обновляется только основная часть программы и калибровки. Бутлоадер по умолчанию не обновляется.
В ЭБУ могут быть записаны только прошивки Январь‑7.2+.
М73 ИТЭЛМА, М74К ИТЭЛМА (идентификатор ПО х303xxxx, х327xxxx, х428xxxx, х429xxxx) (бутлоадер ИТЭЛМА)
При записи ЭБУ обновляется только основная часть программы и калибровки. Бутлоадер по умолчанию не обновляется.
В ЭБУ могут быть записаны как прошивки М73/М74К ИТЭЛМА, так и М73 АВТЭЛ. При записи следует учитывать аппаратные особенности ЭБУ разных серий.
М73 АВТЭЛ (идентификатор ПО х308xxxx, х317xxxx, х373xxxx, х3028xxxx) (бутлоадер АВТЭЛ или ИТЭЛМА)
При записи ЭБУ обновляется только основная часть программы и калибровки. Обновление бутлоадера отключено, т.к. в большинстве случаев процессор этих ЭБУ защищен.
В ЭБУ с бутлоадером АВТЭЛ может быть записано только ПО М73 АВТЭЛ.
Подключение ЭБУ на столе.
Январь 7.2+, М73
35, 80 Масса ЭБУ
12 Неотключаемое напряжение
13 Отключаемое напряжение
63 Питание после главного реле
71 К‑линия
43 Разрешение программирования (подача +12V) (в некоторых ЭБУ могут отсутствовать необходимые элементы).
Приветствую всех на нашем сайте, и сегодня мы после небольшого перерыва вернемся к теме микроконтроллеров. А если быть совсем точным, то начинаем обсуждать одну очень интересную и важную тему, а именно использование bootloader'а (загрузчика). Сегодня разберем теоретическую часть - зачем bootloader нужен, как он работает, и что это вообще такое. Следующая статья будет посвящена целиком и полностью практике. Забегая вперед, скажу, что мы реализуем свой bootloader для STM32 с нуля.
Итак, простыми словами, bootloader - это специальная программа, которая располагается в памяти контроллера и может самостоятельно перепрограммировать его. Давайте для лучшего понимания процесса посмотрим, как вообще выполняется программа, прошитая в контроллер, и где она физически располагается.
Как вы помните из статьи, посвященной Flash-памяти микроконтроллеров STM32, основная пользовательская программа начинается с первой страницы памяти, а точнее с адреса 0х08000000. То есть при подаче питания контроллер сразу же отправляется по этому адресу.
При использовании загрузчика все выглядит несколько иначе. Основная программа записывается уже по другим адресам и располагается начиная, например, с адреса 0х0800A000. А область памяти (0х08000000 - 0х0800А000) целиком и полностью отдается bootloader'у. В итоге в Flash-памяти контроллера находятся две полноценные программы. При включении устройства управление получает bootloader (поскольку он находится в области, начинающейся со "стартового" адреса 0х08000000), а при дальнейшей работе bootloader, выполнив все свои задачи, передает управление основной программе, которая располагается по адресу 0х0800А000 (этот адрес мы взяли для примера). Вот небольшая схема для иллюстрации работы загрузчика:
Вроде бы понятно как устроено, но возникает вопрос - зачем все это надо? Давайте разбираться.
Первостепенной задачей bootloader'а является перепрограммирование контроллера. Он не просто выполняет какие-то действия, а затем передает управление основной программе (переходит на адрес, который соответствует началу основной программы), он, в первую очередь, самостоятельно записывает эту основную программу в Flash-память по нужным адресам.
Разберем небольшой пример для лучшего понимания. Пусть мы создали bootloader (bootloader - точно такой же обычный проект, как и любая другая программа для микроконтроллера), который реализует взаимодействие с внешней картой памяти, ищет на карте файл прошивки и, если находит, записывает программу в нужную область памяти.
Небольшое отступление от основной темы. Поясню, что я тут имею ввиду под файлом прошивки. Когда мы создаем проект (Keil, IAR - без разницы), то на выходе получаем скомпилированный файл для прошивки в микроконтроллер. Чаще всего мы использовали формат .hex. Так вот именно этот файл нам и нужен в данном случае.
Но именно hex-файл не совсем подходит для наших целей, поскольку помимо кода программы он несет в себе дополнительную служебную информацию. Чтобы ее не обрабатывать и не вытаскивать из hex-файла нужные нам данные, который bootloader должен записать во Flash, мы в настройках IDE активируем генерацию bin-файла вместо hex.
Бинарник, в отличие от hex, содержит в себе только последовательный код программы и ничего больше. То есть bootloader'у остается только читать байты из bin-файла и записывать их во Flash-память. Таким образом, в нашем примере задачей загрузчика является чтение байт из файла на карте памяти и запись их по адресам, начиная с 0х0800A000. Вот псевдокод для наглядности:
Конечно, это сильно упрощенная версия загрузчика. Здесь мы в вечном цикле пытаемся открыть файл с программой, а как только это нам удается, bootloader программирует Flash-память и перескакивает на адрес записанной им же прошивки. После этого контроллер начинает выполнять пользовательскую программу. Еще раз повторюсь, это всего лишь псевдокод для примера, полноценный bootloader для STM32 мы обязательно реализуем в следующей статье.
Все это, конечно, очень интересно, но по-прежнему, непонятно, зачем нужны все эти сложности.
На самом деле с этим все просто. Вот, например, первая ситуация: есть некое количество устройств, на заводе работники прошили в каждый контроллер (например, при помощи ST-Link) на каждой плате bootloader, который при подключении к плате флешки (в заранее предусмотренный разъем) ищет на ней файл прошивки и выполняет программирование. Основную программу, конечно же, тоже можно прошить вместе с bootloader'ом через ST-Link. Но тонкость тут в том, что проект bootloader'а остается всегда неизменным, и перепрошивать его не надо, а вот версия основной программы может многократно обновляться в процессе тестирования устройств.
И тут уже гораздо проще один раз подключить ST-Link и прошить загрузчик, а впоследствии просто скидывать новую версию основной программы на флешку и втыкать ее в готовое устройство, где перепрошивкой займется bootloader, чем по сто раз бегать от одной платы к другой, втыкать программатор, при этом перенося с собой ПК и т. д. Как видите, польза загрузчика очевидна.
Вторая ситуация еще лучше это демонстрирует. Устройство уже выпущено и куча экземпляров распродана пользователям. Как бы хороша не была финальная версия программы, никто не застрахован от неожиданного появления ошибок в процессе эксплуатации. И тут уже человек, купивший устройство, точно не сможет разобрать его, чтобы выполнить перепрошивку через программатор. То есть программу обновить фактически нереально. Совсем другое дело, если изготовители предусмотрели встроенный bootloader. Пользователь может без проблем скинуть на карту памяти или на флешку скачанный бинарник и подключить эту карту/флешку к устройству. Изготовителю остается только выкладывать новые версии прошивок на своем сайте.
В этом на самом деле кроется куча возможностей - изготовитель устройств может спокойно выпустить девайс на рынок с базовой прошивкой, которая реализует все нужные функции, но не содержит всяких приятных графических вещей или возможности подключения к ПК или некого другого дополнительного функционала (зависит от того, что это за устройство). Производителю не нужно ломать голову над тем, чтобы выпустить с первого раза идеальную прошивку, в которой будет реализовано абсолютно все, что только можно, ведь он знает что встроенный bootloader без проблем поможет пользователю в будущем обновиться.
В общем, о пользе и применениях загрузчика можно говорить очень и очень долго. Помимо упомянутых возможностей обновления прошивки при помощи флешки или карты памяти, bootloader может использовать какой-нибудь из интерфейсов передачи данных, например, CAN или USART.
В общем-то, вроде разобрались с теоретической частью, посвященной использованию bootloader'а, но давайте еще один момент обсудим в этой статье - а именно встроенный загрузчик микроконтроллеров STM32.
В STM32 уже есть bootloader, который инженеры ST поместили в специально отведенную для этого область памяти контроллера (System Memory). Удалить его оттуда нельзя, да и незачем. Для того, чтобы ввести контроллер в режим загрузчика необходимо подать определенные сигналы на ножки BOOT0 и BOOT1. После этого микроконтроллер готов принимать по USART (один из вариантов) новую прошивку. Для этого необходимо подключить плату к ПК, скачать специальную утилиту от ST (Flash Loader Demonstrator) и загрузить в нее свой файл прошивки. Я, честно говоря, дефолтным загрузчиком предпочитаю не пользоваться по нескольким причинам.
Во-первых, прошивка никак не шифруется, что для коммерческих устройств зачастую недопустимо. Если я использую свой собственный bootloader, то я могу сделать с bin-файлом все, что угодно. Если такой файл попадет в руки конкурентов, то это ничего не даст, поскольку только мой bootloader знает механизм расшифровки. При использовании аппаратного botloader'а такое невозможно - Flash Loader Demonstrator принимает bin-файл в исходном виде.
Во-вторых, пользователю будет необходимо подключать свою плату к ПК и скачивать дополнительный софт для перепрошивки устройства, что не очень хорошо. Чем проще устройство в использовании, тем лучше 👍 Но есть и плюсы аппаратного bootloader'а - он не занимает Flash-память. При использовании своего загрузчика нужно иметь ввиду, что и загрузчик, и основная программа должны уместиться в ограниченный объем памяти. С системным bootloader'ом такой проблемы нет - он расположен в специальной области, использовать которую программист так и так не может.
Давайте на этом на сегодня и закончим, не пропустите статью, посвященную практической реализации загрузчика 🤝
Читайте также: