Тёмный

STM32 Автономный загрузчик для обновления прошивки. Проверка концепта. 

Vladimir Medintsev
Подписаться 37 тыс.
Просмотров 11 тыс.
50% 1

Не так давно на канале было видео - • STM32 Использование вс... посвященное возможности прошивки микроконтроллеров через интерфейс UART при помощи внутреннего загрузчика. Для разработки автономного программатора для партии изделий проверяем насколько сложно написать этот код и работает ли эта идея без сбоев.
Канал в телеграмм - t.me/vladimir_...
Канал Яндекс.Дзен - zen.yandex.ru/...
Канал на RuTube - rutube.ru/chan...
Канал на RU-vid - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------

Наука

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 126   
@Glebdolgov
@Glebdolgov 3 года назад
Очень полезная информация! Ждем продолжения этой темы.
@Shiover
@Shiover 3 года назад
Поздравляю с началом новой эпохи на ютубе. Спасибо за ваше большое дело. : )
@dustymiller1178
@dustymiller1178 3 года назад
Класс. 👍
@Budek1974
@Budek1974 3 года назад
Лет 5 назад пришлось поломать голову, но сделал таки автономный программатор по swd. Заливает тест-прошивку - тестирует - заливает рабочую прошивку (если все в порядке).
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Отлично. Очень полезная штука
@dvmavgoor
@dvmavgoor 3 года назад
В 2020 я бы наверное уже брал контроллеры с набортным USB, и ставил бы бутлоадер с DFU. Впрочем, я так и делаю.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Вау, это круто.
@ogurezzz
@ogurezzz 3 года назад
Так в STM32 есть встроенный загрузчик в каждом МК? Я думал только в тарших сериях.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Везде, во всех. Доплачивать не надо.
@evgenold4120
@evgenold4120 3 года назад
По идее, в коммерческом устройстве делать обновление прошивки с помощью вспомогательных устройств не кошерно сейчас. Предполагаю, что надо для этих целей ставить какой-то дешевый дополнительный МК, который уже будет подкинутую ему через USB, microSD или Ethernet прошивку лить по UART в основой МК
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Кто это сказал что не кошерно?
@evgenold4120
@evgenold4120 3 года назад
@@VladimirMedintsev Ну вы себя поставьте на место потребителя. Купил например какую-то новогоднюю гирлянду. И тут приходит письмо от производителя, что он в новой прошивке изменил (улучшил) функционал, но чтобы её залить, надо открыть корпус, подцепить преобразователь USB-UART, замкнуть пару перемычек, скачать и запустить такую то программу.. Думаю это не для рядовых потребителей.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Понятно. Спасибо.
@ReWorked
@ReWorked 3 года назад
а нельзя просто по юсб залить iso фаил? как это реализовано на том же паяльнике ts100, тем более юсб добавит солидности устройству
@user-ed9px3cz7g
@user-ed9px3cz7g 3 года назад
У f030 нет usb
@ReWorked
@ReWorked 3 года назад
@@user-ed9px3cz7g если делать для кого то и знать что потом будет геморрой с прошивкой, не лучше ли сразу подобрать микроконтроллер с поддержкой usb ничего страшного что на 50 рублей дороже получится
@ReWorked
@ReWorked 3 года назад
@@Nidvoraich это нужно городить еще одну коробочку отправлять заказчику, объяснять как куда подключать) и коробочка одна, а устройств сотни. а ноутбуки и телефоны с отг шнурами это более распространенная штука, и людей шибко умных не нужно, зато их можно снарядить много)
@lionlinux
@lionlinux 3 года назад
а почему не использовать USB к компьютеру любому и программк для прошивки?
@lionlinux
@lionlinux 3 года назад
ну или даже USB-UART микруху поставить?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Уже обсуждалось под другим видео. Это автономный программатор, который можно и заказчику дать и обновить сидя на мачте и все такое. Ну далеко не везде есть смысл это делать с ноутбука или сотового телефона. Есть несколько видео где этот вопрос поднимался и возвращаться простите не будем. Просто если у вас нет потребности в мобильности или автономности, то и мудрить ничего не надо, взять готовый программатор и использовать.
@Astinahsra
@Astinahsra 3 года назад
Почему в Кейл перешли? Вы же вроде в кубе работали?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Я не знаю почему вы так решили.
@Astinahsra
@Astinahsra 3 года назад
@@VladimirMedintsev А что вообще про куб думаете?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Есть видео где я его показываю. Мне он нравится. Хорошо о нем думаю.
@Astinahsra
@Astinahsra 3 года назад
@@VladimirMedintsev А по какой причине не используете?)
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Видеоролики которые вы видите на канале практически ничего не отражают из моей реальной работы. Ни разу и ни где я не показывал реальные исходники реальных проектов как в части схемотехники так и в части программирования. По этой причине вы не знаете что именно я использую. В видеороликах показывается и будет показываться Кейл, потому что он дефакто является популярнейшей средой в Ютубе. Специально посвященные CubeIDE ролики я показываю с кубом, ну это логично же. Меня в принципе не сильно интересует обзор IDE это просто инструмент. Может я Segger Studio использую. Кто его знает.
@thomasparker4109
@thomasparker4109 3 года назад
здравствуйте! У Вас как у профессионала , какая вилка зарплаты?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Если вопрос ко мне, то я получаю чуть меньше 10 тысяч рублей.
@thomasparker4109
@thomasparker4109 3 года назад
@@VladimirMedintsev Я думал, по Вашей специальности , особенно такой специалист как Вы, будет получать 300 к
@thomasparker4109
@thomasparker4109 3 года назад
@@VladimirMedintsev спасибо за ответ
@user-ed9px3cz7g
@user-ed9px3cz7g 3 года назад
Прикрути к программатору mass storage чтоб бинарники шифрованные отправлять, чтоб никто не слил бинарник.
@petrsidorov3489
@petrsidorov3489 3 года назад
Познавательно, логично и грамотно! Спасибо!
@SUPPORT_ARNI
@SUPPORT_ARNI Год назад
почему вы в настройках UART ставите 9 бит? ведь в документации указано configuration is: 8-bit, even parity and 1 Stop bit
@TheIvanDM
@TheIvanDM 3 года назад
Ждём продолжения =)
@SevenNightdreemVeryPavlovny
@SevenNightdreemVeryPavlovny 3 года назад
Автор, спасибо за видео! То же такая же проблема была - не хочу тащить ноут в поле. Взял USB OTG, воткнул в телефон с андройдом stlink китайский. Все, программатор готов. Так же на андроид есть программа для заливки через юарт, правда ее в деле не проверял.
@ibrag2012
@ibrag2012 3 года назад
Прикольна ідея.
@avi-crakhome2524
@avi-crakhome2524 3 года назад
Прошивка для контроля целостности контактных соединений на плате с мк, проверка работоспособности самого мк, проверка типовых задержек выхлопа конечной платы, контроль входных линий, и так далее... Всё это должно проходить на этапе сборки, в тёплом помещении, с сытым и довольным жизнью сотрудником. Дело в том что такая прошивка занимает много места, а так-же требует дополнительного диагностического оборудования - которого в чистом поле явно не будет. К тому-же сама прошивка без возможности вывода диагностической информации - совершенно бесполезна. И тут одного единственного светодиода явно мало, тут нужен терминал - где будет выводится уже готовый чётко сформулированный список поломок, с указанием места на ПП и способом устранения. Всё это много весит, не всегда помещается с первого раза. А вот для реальной работы достаточно светодиодика. Зелёный - всё нормально, красный - снимай модуль и неси в мастерскую. Даже если владелец умеет использовать программатор - это всегда обезьяна. Он не способен изменить логику прошивки, он только кнопки нажимать умеет (да и то не каждый). По этому для полевых условий основная задача - целостность и актуальность прошивки. Возможность автоматического отката в случае очень активной обезьяны. А это уже совсем другая тема, на пату выпусков хватит.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Щас этот сытый сотрудник прочитает и начнет требовать улучшения условий :-)))
@avi-crakhome2524
@avi-crakhome2524 3 года назад
@@VladimirMedintsev У многих получается раздвоиться и даже расстроиться. У Матвеева например, он-же доктор Дью, он-же где-то вокруг... Кажется это уже клиника. Гораздо приятнее когда это разные люди, так хотя-бы тараканы не бунтуют. Программатор с пиропатроном... Весело, но не надо.
@sozdatelEd
@sozdatelEd 3 года назад
@@VladimirMedintsev у Вас сотрудники "сытые"?!?!? а можно со своим обогревателем к Вам в штат?)))
@intelektum
@intelektum 3 года назад
Ревизию контроллера знать стоит, по ней можно узнать, поправили баги или нет , и если прошивка не умеет работать с багом, то уже на стадии программирования, можно отсекать не подходящие контроллеры.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Абсолютно так.
@user-jl7et8gx5u
@user-jl7et8gx5u 3 года назад
Спасибо. Полезная инф.
@chegleeff
@chegleeff 3 года назад
Интересно. Спасибо!
@f33net
@f33net 3 года назад
Втыкнуть фигушку 1000 раз - делов то... :))) Надеюсь, хотя бы возникла идея в инициализации кода проверять что там ходок залил и не выдернул ли раньше времени фигушку. :)
@darkeliphant1843
@darkeliphant1843 2 года назад
Существует автономный программатор который бы работал без загрузчика и загружал ПО например через SWD?
@VladimirMedintsev
@VladimirMedintsev 2 года назад
Мы когда-то с Эдуардом Неткачевым над этой темой рпботали. Готовое решение пока только под Атмегу есть.
@VladimirMedintsev
@VladimirMedintsev 2 года назад
Но если надо то за месяц- полтора могу сделать.
@Diger67
@Diger67 3 года назад
Есть не мало информации на просторах интернета по созданию загрузчика и записи прошивки с SD например. область загрузчика защищается от стирания. И если шаловливые ручки не полезут через штатные загрузчики, то все будет работать. При это достаточно скинуть заказчику файл firmware, а заказчику достаточно записать прошивку на SD и загрузить ее в устройство.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Загрузчик можно написать какой угодно, более того, обычно у любого разработчика их написанных лежит на все случаи жизни. Вопрос в другом, держатель sd это место и деньги. Теперь доже 0.5 доллара умножьте на 1000 и ставить желание отпадет моментально. К тому же бывают условия эксплуатации... Да предложите на буровой установке ребятам обновлять прошивку через SD карточку когда на улице -30. Вас просто медведям скормят.
@ViacheslavMezentsev
@ViacheslavMezentsev 3 года назад
Это немного другое. Во-первых, не все конечные устройства содержат картоприёмник. Во-вторых, создание загрузчика для работы с sd-картой - это нетривиальная задача. Можно найти примеры в сети, я видел подобные, но они занимали около 20 Кбайт кода arm, что вряд ли будет приемлемо. Я сам делаю подобный загрузчик для загрузки hex-файлов (именно intel extended, не bin). И это не просто, если хочешь уложиться в несколько килобайт. У меня есть подобный загрузчик для avr, который в зависимости от конфигурации имеет размер от 2 до 4 Кбайт. Я пытаюсь перенести его алгоритм на arm. Вообще, у некоторых производителей контроллеров, например TI, уже лет 10 загрузчики бывают очень навороченными и поддерживают до 10 вариантов загрузки по разным интерфейсам, в том числе, используя mmc/sd. Если доделаю свой вариант, то выложу на github.
@Diger67
@Diger67 3 года назад
@@VladimirMedintsev Ну по цене программатор по любому выйдет дороже SD, во вторых вставить в разъем SD не сложнее чем попасть в разъем программатором. И скорее вас скормят медведям с вашим программатором. Это про минусы, плюсы описаны выше.
@Diger67
@Diger67 3 года назад
@@ViacheslavMezentsev Ну так чего мозг выносить, ставим на андроид CubeMXProgramer и сливаем хоть по UART, хоть по USB, хоть по CAN, хоть по SPI, если такой загрузчик есть на борту. Ну и так, не на всех платах есть свободный доступ к нужным пинам контроллера. Ну а уж если вы сами разрабатываете устройство, кто вам мешает поставить SD разъем за три копейки а не городить огород за 1500 - 2000 тысячи.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
@@Diger67 Да вы правы, идея отстой, будем ставить SD.
@alekseikapustin8360
@alekseikapustin8360 3 года назад
Брр. Вспомнил как рожал бутлоадер под родимые PIC-и .
@АлександрНОНЕ-х2п
@АлександрНОНЕ-х2п 3 года назад
Хорошая идея, очень полезно будет. Исходники будете выкладывать?
@denwerxampp4035
@denwerxampp4035 3 года назад
хорошая идея, как-то не задумывался даже об этом
@СергейТимошенко-о3ю
По названию тема годная, лайк. Досмотрю вечером.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 года назад
Вопрос немного не по теме. Делаю устройство, которое впоследствии необходимо внести в Госреестр средств измерений. И там есть требование об идентификации ПО микроконтроллера по МИ 3286-2010. Ну, т.е., я должен посчитать контрольную сумму ПО и вывести её на индикатор, а также - вписать её в Описание типа средств измерений. Таким образом - об дальнейшем обновлении ПО законными методами можно забыть. Суть вопроса к Вам как к МАСТЕРУ. Можно ли каким-то образом разделить прошивку микроконтроллера, например, на мерологически значимую часть, и на всё остальное. Метролигически значимую часть впоследствии не трогать, для неё посчитана и внесена в Реестр контрольная сумма.А всё остальное - чтобы можно было перешивать любыми способами?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Я вам отвечу честно. Если попадается проект который необходимо внести в реестр средств измерения мы просто отказываемся от этого проекта. Причина простая я не знаю ни одного разработчика который бы попал в реестр средств измерения без использования незаконных приемов. Мы просто спрашиваем заказчика хочет ли он в последствии поверять изделие. Заказчик как правило совсем не хочет. Значит мы делаем индикатор. А индикатор поверять не надо и индикатор не вносится в реестр. Но индикатор может что-либо измерять весьма точно. Ну просто ещё ни одного раза усилия на внесение чего-либо в этот реестр не окупили себя.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 года назад
@@VladimirMedintsev Я извиняюсь, а по сути вопроса - прошивку, принципе, можно разделить на 2 части ?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Да, разумеется это возможно. Есть на канале ролик про передачу управления.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Вот тут ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-z2ZjsM63yEo.html рассказано как это делать. Там на примере загрузчика но и части точно так же.
@МихаилТиунов-с7д
@МихаилТиунов-с7д 3 года назад
@@VladimirMedintsev Спасибо !!!!! А по поводу внесения в Реестр. От кого отказываетесь - направляйте ко мне. Я как раз всю жизнь этим занимался.
@ОлексійКасьян-й3щ
@ОлексійКасьян-й3щ 3 года назад
Рекомендую проверить UART загрузчик при повышенной температуре. Столкнулся с ситуацией когда при температуре выше комнатной ЮАРТ загрузчик сильно сбоит. Приходилось включать кондиционер в помещениии для того чтобы обновить прошивку.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Дунул на него феном паяльным. Вроде работает. Потом в термокамере проверим.
@stari40k
@stari40k 3 года назад
Мучают меня смутные сомнения по поводу 9и бит. Всегда думал что это ОБЩЕЕ количество бит данных. Перечитал RM0360 page598. Написано следующее : START бит, 8 или 9 бит данных LSB, потом 1 или 2 STOP bits. На странице #600 есть картинка с описанием, там нарисованы биты с 0го по 8й. Т. Е. Это партии бит. У вас 9и битый режим с этим самым партии битом и к стартовому биту оно отношения не имеет.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Стартовые и стоповые биты не считаются. А вот паритет считается.
@avi-crakhome2524
@avi-crakhome2524 3 года назад
8 бит данных - это для текстового обмена, в этом случае остаётся достаточно пространства для управляющих символов. 1+8 бит данных - это для бинарного обмена, доступна передача от 0x00 до 0xFF, девятый бит - это управляющий маркер команда/данные, или адрес/данные.
@expertkis
@expertkis 3 года назад
Ну плохое видео, но как уже писали ниже , в современных реалиях интереснее DFU или даже реализацию OTA посмотреть
@denwerxampp4035
@denwerxampp4035 3 года назад
блин, я даже не слышал про это. Погуглил тут, как круто
@expertkis
@expertkis 3 года назад
@@denwerxampp4035 не то слово. На f4 DFU вроде просто настроить, но не на чем сейчас проверить, а на f103 смещение надо похоже настраивать в линкере. Надо разобраться вобщем
@romaVeber
@romaVeber 3 года назад
а можно про rtc записать видео? потому-что смотрю в кубике у одних плат есть пин vbat, у других нет и у всех есть rtc. Вот хочется как-то подробно, и сам rtc и его резервные биты и тд.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Вы откройте reference manual. Там про работу RTC очень хорошо написано без лишней воды.
@romaVeber
@romaVeber 3 года назад
@@VladimirMedintsev, если сделать опросник, окажется что довольно большая часть не знает английского, а другая часть не умеет читать документацию. О чём говорить если с пинка не получилось найти видео "как читать документацию на микросхемы". (Я частично умею читать доки, но с английским проблемка)
@intelektum
@intelektum 3 года назад
@@romaVeber Я например в разговорном английском ноль полный, но вот даташиты прекрасно читаются со временем, что то можно и через гугель переводчик подсмотреть, что то по аналогии с другим, и со временем уже все читается и понимается.
@retro55i
@retro55i 3 года назад
Я еще пол года назад написал для себя загрузчик, в котором не надо переключать контакт boot. Часть программы , которая называется загрузчиком и лежит во втором секторе не перепрошивается. Проверял этот программатор через обычный переходник USB-UART, загонял туда новую программу (прошивку) кроме второго сектора stm32f205 .
@VladimirMedintsev
@VladimirMedintsev 3 года назад
Поздравляю.
@retro55i
@retro55i 3 года назад
@@VladimirMedintsev Для проверки этого программатора пришлось написать и компьютерную часть на Builder C++.
@stari40k
@stari40k 3 года назад
А я лет пять назад писал свой бутлоалер и прошивал stm32f107 по ethernet. И что?
@retro55i
@retro55i 3 года назад
@@stari40k А контакт boot переключали? В этом вся фишка.
@stari40k
@stari40k 3 года назад
@@retro55i нет. Если кратко - записывал прошивку в свободную область памяти, и оттуда при перезагрузке мой бутлоадер переписывал её в указанную область. После чего запускалась уже новая версия с указанного адреса. Все анти-кирпичные проверки не описываю.
@ВалераБородулин-д2ъ
Ну если 1000 штук для заказчика, значит есть у него чуть денег купить планшет на виде и ходи шей каждое устройство, а если бы эти устройства сразу прошить по CAN или RS485 полезное дело.
@user-ed9px3cz7g
@user-ed9px3cz7g 3 года назад
Это сложно для заказчика. А если апдейты будут еженедельными?
@VladimirMedintsev
@VladimirMedintsev 3 года назад
А теперь просто представьте буровую установку, -30 градусов и вы с планшетом на ветру. Работа мечты. Не все устройства работают в уютных комнатах. Иногда и подключить разъем очень тяжело не говоря уже о том, чтобы на сотовом или планшет ее пальчиком попадать.
@user-ed9px3cz7g
@user-ed9px3cz7g 3 года назад
@@VladimirMedintsevИли устройство может быть камерой в вольере с тиграми.
@VladimirMedintsev
@VladimirMedintsev 3 года назад
@@user-ed9px3cz7g уверяю вас тигры по сравнению с нефтяниками гораздо менее опасны.
@user-ed9px3cz7g
@user-ed9px3cz7g 3 года назад
@@VladimirMedintsev Тигры водятся только в дикой природе, а нефтяники везде, если нефтяник попадает в воду, нефтяник не становится мокрой, вода становится нефтью. 😜
@adminroot1345
@adminroot1345 3 года назад
Попробуйте esp8266 esp32 + micropython там есть технология удаленной прошивки web repl
@ibrag2012
@ibrag2012 3 года назад
Вчора взявся за SWIM (знайшов дуже дешеві stm8 але вони без завантажувача): весь день потратив на вивчення протоколу, а в вечорі подумав: мають існувати якісь готові прилади, перевірив: таки існують)
Далее
Новый вид животных Supertype
00:59
Просмотров 176 тыс.
Bootloader для AVR
15:08
Просмотров 11 тыс.
Изучаю STM32!
20:26
Просмотров 193 тыс.
bulletproof❌ Nokia✅
0:17
Просмотров 29 млн
Наушники dyson
0:12
Просмотров 498 тыс.