STM32 Использование встроенного загрузчика. Автономный программатор. Обновление прошивки.

  Рет қаралды 17,614

Vladimir Medintsev

Vladimir Medintsev

Күн бұрын

В ролике рассказывается о том, как можно загрузить прошивку в микроконтроллер STM без использования программатора. На примере показана работа встроенного загрузчика. Описаны методы работы DFU.
Канал в телеграмм - t.me/vladimir_medintsev
Канал Яндекс.Дзен - zen.yandex.ru/vladimir_medintsev
Канал на RuTube - rutube.ru/channel/1797552/
Канал на KZfaq - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------
00:00 - Для чего следует использовать DFU
05:09 - Демонстрация работы и программирования
08:44 - Предупреждение
09:45 - Источники информации
16:20 - Строим схему

Пікірлер: 262
@Nidvoraich
@Nidvoraich 3 жыл бұрын
Очень хорошая манера подачи! Сначала обрисована проблема, а уже потом метод её решения. Так смотреть в сто раз интереснее. Спасибо!
@Avtovet
@Avtovet 3 жыл бұрын
На прошлой работе ребята делали такую штуку - на стм103 собрали автономный программатор : на нем была карта сд ( помещали новую прошивку) и юарт. Устройство ( которое требовало новую прошивку) имело разъем ( питание,юарт и бут) для подключения такого переносного программатора и по нажатии кнопки происходил процесс заливки . Это было очень удобно ,потому как устройством являлся турникетом . Этот рассказ для того чтобы дополнить как минимум одну идею на эту тему. Удачи в проектах !
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Спасибо.
@MrLedball
@MrLedball 3 жыл бұрын
Вроде тоже самое в видео, только без карты...
@vladimirlevchenko1470
@vladimirlevchenko1470 3 жыл бұрын
Надо переварить USB OTG
@pavelboboshkin3898
@pavelboboshkin3898 3 жыл бұрын
@@vladimirlevchenko1470 , недавно разобрался в USB OTG. Всё сдвинулось с мёртвой точки после того, как нашел информацию по ошибке в библиотеке Куба для stm32f105/107: community.st.com/s/question/0D50X0000B7YwPESQ0/-bug-found-new-firmware-version-18-introduced-a-sort-of-bug-in-usb-host-enumeration-tested-with-stm32f105 плюс пример kzfaq.info/get/bejne/etuorLaS39eXcY0.html
@user-jm1cp3bm3c
@user-jm1cp3bm3c 3 жыл бұрын
Добрый день, если я по этой статье www.count-zero.ru/2017/bluepill/ заливаю загрузчик по usb, а потом через андроид приложение с телефона Zflasher stm32 прошиваю через dfu загрузчик, вопрос стереться ли мои бутлоадер и будет ли потом работать?
@ruslangabitov5202
@ruslangabitov5202 3 жыл бұрын
Спасибо большое, Владимир. Прекрасный материал, представленный простым языком. Очень полезно.
@gaynoskov8736
@gaynoskov8736 3 жыл бұрын
Спасибо очень приятно слушать и учится от вас 👍
@danilv.l.2501
@danilv.l.2501 3 жыл бұрын
Спасибо, Владимир. Как всегда что то новенькое и интересненькое. Успехов в творчестве!
@user-oi1zl6de8i
@user-oi1zl6de8i 3 жыл бұрын
Спасибо, Владимир. Всегда интересно.
@Sergey_Evdokimenko
@Sergey_Evdokimenko 3 жыл бұрын
чудесно замечательно полезный ликбез спасибо
@vladimirp.68
@vladimirp.68 3 жыл бұрын
Спасибо, "отремонтировал" пульт управления квадрокоптера Taranis, ваш видео мне помогло в этом разобратся.) Спасибо!
@user-nr8nf2nn2s
@user-nr8nf2nn2s 3 жыл бұрын
Владимир спасибо за Ваши видео! Благодаря Вашим видео купил для сына девятиклассника stm, дисплей и Stlink. Хочу чтобы он сделал проект в школе по информатике. Пока просто вывели картинку на дисплей, в планах подключить датчик температуры. Самое главное что получилось самое начало.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
Как всегда отличный контент! Не коротко, не растянуто, - ровно как надо! Спасибо большое за ваш труд! Ваш канал в мире СТМ уже как канал Виктора Леонтьева в мире токарки и инструменталки.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Большое спасибо.
@vladimirlevchenko1470
@vladimirlevchenko1470 3 жыл бұрын
B B , ВЛ уважаемый человек , не зазорно упомянуть и ДМ
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
@@vladimirlevchenko1470 да много кого, ВЛ как именно учитель по теории, ДМ хороший практик. Некоторые тут пристегивают фрика негоду, (не к ночи будет помянут).
@vladimirlevchenko1470
@vladimirlevchenko1470 3 жыл бұрын
B B , ну коли так добавим igorkawa
@Energy1236
@Energy1236 3 жыл бұрын
Здравствуйте Владимир! Большое спасибо Вам за ваши видео, смотрю всегда с большим удовольствием :) На тему видео- встроенный загрузчик имеет свои минусы, больше всего смущает теребление BOOT0. Использование отладочного интерфейса думаю будет более удобным вариантом для программатора как такового, плюсы очевидны- можно делать с МК все что душе угодно, да и очень универсально выходит- решение для любых ARM, а не только для чипов от ST. Был у меня один интересный проект самодельного отладчика, где применялась связка МК+ПЛИС, в самой ПЛИС реализовывались интерфейсы JTAG и SWD (описание протоколов, регистров отладочного модуля- все есть в свободном доступе), а МК подключался к ПЛИС по SPI и реализовывал саму логику работы с МК (чтение/запись регистров, остановка/запуск ядра итд). Подводные камни имеются, но их не так много, и реализация работы с МК по отладочному интерфейсу не является какой либо проблемой. Принцип работы отладки довольно простой- в отладочном модуле есть несколько регистров, один из них отвечает за адрес, другой за данные (а MIPS например для доступа используются инжектированные инструкции, что не удобно). Итого- пишем в один регистр адрес регистра МК к которому хотим получить доступ (например регистры флешки), а через другой регистр читаем/пишем данные (настраиваем флешку, стираем, разрешаем запись, пишем данные). А если взять во внимание что адреса прописаны в CMSIS, можно брать готовые названия регистров, и ничего не писать вручную :) Ну или реализовать загрузку флешлодела в RAM, и последующей прошивкой через него, как это тот же ST-LINK делает. По сути- вот и готовый программатор уже. От ПЛИС можно избавиться, реализовав интерфейс программно (в моем случаи ПЛИС была использована потому что не люблю программную реализацию интерфейсов), добавляем СД карту, дисплейчик, и можно шить любой МК независимо от производителя без использования компьютера или телефона. В общем, есть просторы для творчества :)
@slavik5375
@slavik5375 3 жыл бұрын
Спасибо за видео. Прям просвещаюсь)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да всегда пожалуйста! Делайте репост в тематических группах, социальных сетях и на различных сайтах. Этим вы очень поможете каналу.
@slavik5375
@slavik5375 3 жыл бұрын
а готовое устройство будет?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да, готовое устройство будет.
@slavik5375
@slavik5375 3 жыл бұрын
@@VladimirMedintsev с нетерпением жду-с.
@slavik5375
@slavik5375 3 жыл бұрын
@@VladimirMedintsev извиняюсь за вопрос. А не скажите, что можно почитать, или посмотреть, чтобы разбираться в такой работе(из этого и других видел), как вы? База у меня есть, и очень даже не плохая(т.е ТОЭ, электронику, и программирования Си/С++ я знаю), но вот вопросы по разработки плат, и программирование МК у меня еще не освоены, должным образом
@AlexEXEvideo
@AlexEXEvideo 3 жыл бұрын
Спасибо за идею. Пару раз о портативном загрузчике думал, но из-за отсутствия острой необходимости не копал в этом направление. Теперь буду знать, от куда можно сразу начинать. Из своего опыта: Для прошивки в stm32 с компа использовал консольную STM32 ST-LINK Utility, для которой использовал свой простой графический интерфейс. Прошивал в мк основную прошивку, 1-2 загрузчика (приходилось изобретать что-то эдакое, из-за ограничений f0 серии) и два набора данных. Так же недавно открыл, что с некоторых моделей сотовых, с хорошей поддержкой USB Host можно прошивать stm, usb-uart терминал использовать и ещё много чего делать. Наверно сделаю у себя заметку на сайте ближайщее время по этому опыту.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
С удовольствием все почитаем.
@expertkis
@expertkis 3 жыл бұрын
Было бы интересно посмотреть как шить через USB
@MikhailGoncharov-tl4cr
@MikhailGoncharov-tl4cr Ай бұрын
я таких мыслей придерживаюсь аналогично. но что в голову приходит это написать свой драйвер под операционную ситему с API. а так я к тому что и я верю что USB напрямую возможно подключить к микроконтроллеру. другое дело что нужно написать свой АПИ и драйвер
@personamems
@personamems 3 жыл бұрын
Очень и очень полезно! А скрин вообще улетный! Я, даже пытался разглядеть сходство. Ну вот чтобы с нами было, если бы мы код не писали?))
@ALCohol-qu7ib
@ALCohol-qu7ib 3 жыл бұрын
Гениально!!! Извините что меньше пяти слов... А, нет, всё нормально)))
@SpyCorp1313
@SpyCorp1313 3 жыл бұрын
Пришел палец вверх нажал. Тееерь можно посмотреть.
@SpyCorp1313
@SpyCorp1313 3 жыл бұрын
В недалёком прошлом через uart и dfu ,только и приходилось прошиваться. St-link за копейки от китайцев ещё не было. Позже правда китайский j-link появился. Но первое знакомство с stm было именно с dfu. Спасибо за ваши видео.
@cab674
@cab674 3 жыл бұрын
Спасибо за интересные и полезные темы! Хоть и на хорошо знакомую лично мне тему иногда, всегда с интересом жду новые видео. Сигнал boot0 можно через транзистор повесить параллельно любой пользовательской кнопке, итого если ее нажимать перед подачей питания устройство перейдет в загрузку, если не нажать, то далее кнопка работает как обычно через свой gpio, так как то что далее происходит на boot0 после запуска процессору уже пофиг. Можно доработать таким способом даже готовые устройства добавив всего пару деталек "навесом" прямо на пины вместо перемычки для boot0 которую часто делают на платах. Проверенно не раз, все отлично работает много лет. Ниже в сообщении кусок схемы с таким способом.
@cab674
@cab674 3 жыл бұрын
pasteboard.co/Jrg8SrX.png это часть схемы от блока питания koyodza . com, идея с boot0 в свое время была моя, автору понравилось. Этот же способ входа в загрузчик можно встретить на многих дешевых китайских телефонах, там точно так же через транзисторы берется сигнал для boot с кнопок громкости которые нужно зажимать при включении.
@nangelo0
@nangelo0 3 жыл бұрын
Собрался я пилить прошивку через WebUSB. Очень удобно для консьюмерской электроники.
@GennPen
@GennPen 3 жыл бұрын
Спасибо огромное. Целый вечер провел в поисках удобного бутлоадера для загрузки прошивки в STM. А тут оказывается он в BOOT0 через UART может прошиваться. Жаль, что USB-DFU отсутствует в младших моделях типа F103. Если в прошивке его делать, то прилично и того небольшой памяти отжирает.
@vitgo
@vitgo 3 жыл бұрын
я до последнего времени не пользовался программатором :-) всегда dfu пользовал :-)
@Michael_Kaa
@Michael_Kaa 3 жыл бұрын
Есть возможность управления ножкой Boot от ножки RTS преобразователя USB-UART, очень удобно. Прошивка через UART часто спасала после куба с отключенным SWD.
@serjkp
@serjkp 3 жыл бұрын
Отлично. Я бы предложил подумать в сторону блутуса и проги на компе/телефоне. Тогда заказчику можно высылать обновленный шифрованный кекс прям электронкой.
@ThunderBark
@ThunderBark 3 жыл бұрын
То есть есть блютуз модуль китайский, который по uart все отсылает пакеты. Можно ли было бы, в теории, подключиться с компьютера к ком-порту блютуза и по той же программке от ст отправить все это?)
@serjkp
@serjkp 3 жыл бұрын
@@ThunderBark конечно, осталось только научить кого-то переключать сброс и бут сигналы
@serjkp
@serjkp 3 жыл бұрын
Подумал еще чуточку. Не, лучше вместо блутуса взять ЕСП8266 - у нее памяти дофига, сможет по веб-интерфейсу принять всю прошивку и спокойно перешить стмку. И рулить ресетом и бутом она также сможет самостоятельно. Дешевле вряд ли можно сделать.
@Michael_Kaa
@Michael_Kaa 3 жыл бұрын
@@serjkp Сброс командой по uart програмно, boot на ножку rts uart`а.
@serjkp
@serjkp 3 жыл бұрын
@@Michael_Kaa а как это реализовать? спаренный блутус прозрачен, поэтому придется ставить на слейве мелкий камень для управления, что рушит идею минимализации.
@olehdenysov8699
@olehdenysov8699 3 жыл бұрын
Спасибо за видео! Сам конечно использую ардуино в своих проектах (пока учусь программированию микроконтролера в целом). В общем по поводу ардуино даже идея одна появилась. На ардуино, бутлоадер установлен, можно ведь испозовать ESP в качестве програматора для микроконтролера используя линии TX, RX? Правда сразу соглашуюсь что громоздкость платы увеличивается но за счет ESP получается передать данные через интернет. Таким образом имеем возможность прошивать микроконтролер где он не доступен. Или это только в теории?
@DmitroVialkov
@DmitroVialkov 3 жыл бұрын
Тоже делал подобный вариант и stm32f103 в качестве программатора. Однако из-за специфики работы от него отказался. А сейчас использую raspbery pi в качестве программатора. Причина в том, что разные проекты реализованы на абсолютно разных контроллерах (avr, pic, stm, esp и прочее) И гораздо удобней использовать малинку с 3" дисплеем и 3 кнопками. Программу прошивки постарался максимально оптимизировать для того, чтобы меньше клацать кнопками.... На SD кидаю zip архив, с некоторым файлом манифеста, описывающим плату в которую шью... А дальше запускаются распознавание устройства, которое подтверждает наличие на линиях устройства подходящего к манифесту.... Ну и если все ок, тогда шьем. Сама структура чуть сложнее... Но монтажникам живется много легче за счет однообразия процесс вне зависимости от контроллера к которому их отправили.
@vladimirlevchenko1470
@vladimirlevchenko1470 3 жыл бұрын
Очень интересно , если проект открытый, ждём Link 👍
@angerminsk
@angerminsk 7 ай бұрын
Здравствуйте! Проект открыт?
@Thesnowiswhite
@Thesnowiswhite 9 ай бұрын
👍
@antonvasyura3791
@antonvasyura3791 8 ай бұрын
Спасибо за видео. А в чем преимущество рассмотренного метода по сравнению с DFU через USB? Судя по Datasheets и отладочной плате он там точно поддерживается.
@alexeykapustin5827
@alexeykapustin5827 3 жыл бұрын
Все перехожу на STM
@valeriyvalentyn8933
@valeriyvalentyn8933 3 жыл бұрын
Здравствуйте Владимир. Попались ваши видео и сразу же подписался, смотрю с удовольствием. У меня есть вопрос, но не по отладочным платам и программированию. Есть реальный контроллер зарядки АКБ 36В, но вышедший из строя. Насколько я понимаю и разбираюсь нашел неисправности, но из зи отсутствия информации так и не был востановлен. Клиенту был предложен простой контроллер с балансировкой. Вопрос как бы решен, но плата осталась у меня и выполнена она как раз на STM32. Доступ к МК нашёл только к РА9, РА10, как их подключать к USB переходнику?. ВООТ сидит на земле(решаемо). Но самое трудное в востановлении оказалось найти ИС токового измерителя, нигде не могу найти ничего похожего. Чип 2.8х3.2мм 8 ног 4 из которых сидят на измеряемой шине остальные стоят в управлении заряд/разряд, шина не разрезана, видимо ХАЛЛ сенсор. Может что то похожее попадалось. Буду рад любому ответу. Заранее спасибо
@paveldukov
@paveldukov 3 жыл бұрын
Владимир, спасибо. Каким софтом пользуетесь для отрисовки схем электрических принципиальных (на моменте 19:20)?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
DipTrace
@user-ow5vt9gp7r
@user-ow5vt9gp7r 3 жыл бұрын
Интересная тема, пойду читать про CANFD, как шить через него... Недавно возникла задача оперативно прошить примерно 80 изделий, в каждом по 2 микроконтроллера F4 серии. Решил проблему, использовав интерфейс командной строки st-link utilities - собрал .bat файл, вывел эхо и исполнитель только тыкал enter и перетыкал шнурок на разъемы SWD. Это к слову, вдруг кому пригодится :)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да, про это даже видео на канале было. Про пакетную заливку.
@7Hz_
@7Hz_ 3 жыл бұрын
Полезное видео. Спс. Еще интересует такая тема, как бы скомпилировать код для stm в не ПК. А в часности на АНДРОИДЕ или онлайн. А может быть на Respberry pi с Ubuntu? Ставил Ubuntu на Андроид, но так как версия для андроида походу урезана, и при попытке установить trueStudio, пишет что система не поддерживает установку этого ПО. И вот так как что на андроид что на respberry pi используется linux для ARM, будет ли работь trueStudio на respberry pi. Ну вот такая мысль.
@SaihoS1
@SaihoS1 3 жыл бұрын
Тема конечно хорошая. Спасибо. Но пожалуй нет смысла в использовании микроконтроллера с большим флэшем. Если прошивка не зашифрована, то ее все равно легко снять при пересылке по USART, а если зашифрована, то проще и дешевле хранить ее в какой-нибудь serial EEPROM вроде 25Q64. Поэтому надо смотреть есть ли у штатного бутлоадера возможность дешифрования прошивки и если нет, то писать свой. Но что-то мне подсказывает что эта тропинка уже не раз хожена. Ну и еще одно замечание по поводу безопасности прошивки - существуют специализированные установки для снятия защиты с микроконтроллеров. В отношении STM32 они пока не справляются с STM32F3 и старше. Все что младше поддается достаточно легко. Это так... к сведению. На всякий случай.
@sovchem1275
@sovchem1275 3 жыл бұрын
"нет смысла в использовании микроконтроллера с большим флэшем" В примерах а H7 куба есть пример загрузчика по qspi для SD, MMC, NAND итп. Копеечный H750 за 250руб, со всей космической H7 периферией,1гб RAM,480мгц,L1,L2 кэш, НО 128кб flash отлично работает с 16гб SD карты. Да и сколько можно использовать uart... Вот хороший пример USB DFU PC-клиент с исходниками vс++, нужен только usb кабель. (Только сначала нужно сконвертить alf/hex в *.dfu там 2 exeшника.) Знакомый делал на его базе PC инет-прогер для загрузки шифрованых прошивок из инета по USB. my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html "пока не справляются с STM32F3 и старше" Камни включая F4(правда не все) уже все вскрывают, L и H серии пока нет. Знакомый много этих шараг китайских знает, контроллеры авто сигналок, иммобилайзеров вскрывает на предмет мануфактурных кодов, для использовании в кодграберах, заводилках итп ;)) Где то в ссылках есть прайсы, лень искать... , но цены там конечно ~5000 -20000$ за прошивку, хотя смотря для какого устройства прошивка. А такв большинстве случаев дешевле самому написать
@alexandrijchuck817
@alexandrijchuck817 3 жыл бұрын
Да ладно. В атмеловских ARM-ах тоже есть встроенный бутлодырь, и софтинка аналогичная ST-шной. И тоже называется DFU ! О чудо !!! Зы: Давно уже не игрался с атмелами. Крайний был еще ATSAM7S256/128, и там это было. Да-да... :) И это еще не кортексы были.
@kardanium
@kardanium 3 жыл бұрын
ST Link util умеет шить без нажатия на кнопки. Там есть такой режим, когда прошивка начинает заливаться сразу после подключения программатора к прошиваемому МК. По окончанию прошивки, отключаем программатор от прошиваемой платы и втыкаем следующую. Прошивка автоматически заливается.
@ruslan.zhumabai
@ruslan.zhumabai 3 жыл бұрын
Любуюсь вашим знанием, понимать структуру мк стм очень сложно. Вопрос такой, можете разобраться каким образом мк стм подключается к ПО Codesys v2? Назначение данного ПО программировать промышленных контроллеров. Например, для программирования ПЛК ОВЕН использует эту программу и в нем процессором ПЛК является мк стм. Нигде нету обзоров на эту тему. Спасибо!
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
ПЛК может содержать в себе микроконтроллер STM32, в качестве микроконтроллера. Однако программа codesis не занимается непосредственно программированием микроконтроллера, она лишь дает ему некоторую лоническую карту по которой уже программное зашитое в микроконтроллер выполняет функции возложенные на ПЛК. Так что вам это знание ничего не даст. Программировать микроконтроллер на codesis не получится.
@vernnms78
@vernnms78 3 жыл бұрын
Спасибо за информацию. Я подумал... если STM такой мощный инструмент, то с таким же успехом его можно использовать для прошивки Atmel. Что мешает вывести ноги rx,tx контроллера, забабахать конвертер уровней и лить всё, что угодно с той же флэшки? Хошь -- загрузчик, хошь -- сам бинарник...
@user-di8ib3rk9s
@user-di8ib3rk9s 3 жыл бұрын
А если шить с помощью stm32flash в Линуксе , то стирать не надо? видимо при записи стирается автоматически? спасибо!
@smyslovov
@smyslovov 3 жыл бұрын
В видео показано применение USART загрузчика. DFU в контексте stm32 это про USB device firmware update - DFU загрузчик по usb. Позволяет прошить мк, в которых есть этот загрузчик. Stm32f103 например так прошить нельзя, хотя USB модуль есть. Размер прошивки может и превышать 1МБ (который и так не одним куском), как вариант взять мк по-проще и добавить к нему sd-карточку, экран и кнопки. и получим uprog для stm32 )
@alexeysharandin7364
@alexeysharandin7364 3 жыл бұрын
Можно еще дальше пойти... Взять какого то простого китайца под линукс, например F1C100s за 100 рублей на алиэкспесс, и прошивать подключаясь через SSH или на прямую через монитор и мышь.
@user_user_320
@user_user_320 3 жыл бұрын
Интересные видео)) Прошу не считать меня занудой, но чтобы не вводить новичков в заблуждение, немного Вас поправлю. Не протоколы CAN/UART/I2C, а интерфейсы. Протокол это чуть другое. Не буду кидаться терминами, знающие согласятся, а не знающие погуглят)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Когда вы говорите о физическом устройстве UART это интерфейс. Когда вы говорите о определенной деятельности (ну к примеру отправка AT команд и подобное) то это протокол. Если как вы рекомендовали погуглить по словам "uart protocol" хоть по русскому аналогу вы найдете тому массу подтверждений. Более того допустимо сказать "протокол обмена uart" даже в учебной литературе. Разница в "действие" и "устройство".
@user_user_320
@user_user_320 3 жыл бұрын
@@VladimirMedintsev, совершенно верно, стандартизированая прием/передача данных по какому-либо интерфейсу и является протоколом) P.S. А по поводу Хабра: вы же опытный разработчик, не совсем понимаю зачем ссылаться на какую-то статью, если и сами знаете определение интерфейса и протокола?! P.P.S. Это ведь на самом деле, разные вещи;)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Статья это первый пример который попался. Думал неужели я ошибся.
@allaksusallaksus2402
@allaksusallaksus2402 3 жыл бұрын
Неудобство uart заключается в том что в stm32 сделали загрузку от многих uart а не от одного, приходиться физически отключать другие uart зависимые интерфейсы иначе загрузчик то и дело настраивается на них.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
-скальпель и паяльник- DIP переключатели вам в помощь. (спасибо за заметку, учту})
@allaksusallaksus2402
@allaksusallaksus2402 3 жыл бұрын
@@BB-ti9bf DIP переключатели слишком много места занимают кроме первого есть другие способы - писать свой загрузчик - использовать в схеме логическую схему для отключения лишних rx сигналов
@sovchem1275
@sovchem1275 3 жыл бұрын
А USB чем не нравиться? Вот PC-клиент с с++ исходниками my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html "то и дело настраивается на них" RND что ли?! Разве не по очереди с USART1,2,3, итд ?
@allaksusallaksus2402
@allaksusallaksus2402 3 жыл бұрын
USB не подходит потому-что - необходима гальваническая развязка, у USB она сложнее - необходимо чтобы не было проблем с установкой драйвера устройства, права пользователя могут быть ограничены здесь -- при вынужденной замене нп микроконтроллер другого производителя usb не кажется столь надежным вариантом по сравнению с uart - через этот порт необходимо настраивать изделие, USB по сравнению с uart создает дополнительные сложности
@allaksusallaksus2402
@allaksusallaksus2402 3 жыл бұрын
На счет очередности. Наверное работает следующим образом, с какого uart порта вперед придет стартовый бит на том и останавливается, а другие больше не слушает. На практике порт загрузки не работает если на другом порту левая активность
@chipsoft1
@chipsoft1 3 жыл бұрын
По-моему проще и дешевле изначально сделать свой бутлоадер, чтобы заказчик мог обновить все по ЮСБ, который есть везде. Всегда найдется "домохозяйка", которая что-то не туда вставит и подключит и спалит либо сам программатор, либо устройство :) А виноватым конечно же будет разработчик, потому как не учел защиту "от дурака".
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
А вы думаете с бутлоадером мало проблем кто-то куда-то не так вставит и выдернет? У всего есть свое назначение. У меня только бутлоадеров написанных больше десятка на все случаи жизни. Но к примеру контроллер ворот, котла отопления или прочего. С платой в 100 рублей себестоимости. Ну туда сидеть адаптировать бутлоадер???
@chipsoft1
@chipsoft1 3 жыл бұрын
@@VladimirMedintsev Как можно вставить не так в ЮСБ? Правильно написанный бутлоадер не окирпичит устройство, если прервать запись во время обновления. Если бутлоадеры уже написаны на все случаи жизни. то добавление их в новые устройства особо в себестоимости не повлияют. Для того же котла или ворот можно поставить разъем под SD-карту и обновляться с нее. Я просто не представляю случая, как "домохозяйке" рассказать, что она должна разобрать девайс и проводками куда-то что-то подключить :)
@sozdatelEd
@sozdatelEd 3 жыл бұрын
​@@chipsoft1 данный программатор разрабатывается не для домохозяек, а для автоматизации проверки устройств на стенде и дальнейшей заливки дампа с бутлоадером и первой ревизией прошивки. Таким образом проверочный стенд с подпружиненными иглами будет иметь у себя на борту программатор, который заливает тестовую прошивку и далее проверяет контрольные сигналы с платы поступившей со сборочного цеха. Если всё норм, то заливается бутлоадер и первая ревизия прошивки устройства. Чип блокируется этим же автономным программатором или при первом включении устройства... При партии от 50 плат и более диагностика качества сборки и заливка софта отнимает много времени, а если будет подобный "программатор - проверочный стенд", то за проверку можно посадить студента, который будет ставить платы на стенд и нажав кнопку "Тест платы" ждать сигнала "исправно" или "брак".
@chipsoft1
@chipsoft1 3 жыл бұрын
@@sozdatelEd В видео об этом небыло сказано ничего. С технологией производства электронных девайсов, и описанной вами схемой я знаком, и все правильно вы пишите. Т.е. по сути автор хочет сделать альтернативу Segger Flasher/PE Micro Cyclone, о чем тоже небыло сказано. Если есть подобные проекты, интересно было бы посмотреть/пощупать.
@sozdatelEd
@sozdatelEd 3 жыл бұрын
@@chipsoft1 ну так мы же программисты. Есть документация, согласно которой описано как программировать микроконтроллер. Например для микроконтроллеров ATmega в каждом datasheet описан SPI Serial Programming Algorithm. Берём читаем и пишем свой автономный программатор. При необходимости пишем алгоритм проверки сигналов с контрольных точек и вывод результата проверки на дисплей, или звук, или светодиод. У меня для avr-микроконтроллеров есть автономные программаторы, а вот для stm я замахнулся на интерфейс SWD, но пока что не разобрался с ним полностью. Вариант "программирование через DFU" я почему-то не рассматривал. А сейчас наверно займусь в свободное время.
@adminroot1345
@adminroot1345 3 жыл бұрын
usb, uart, rs232, rs485 можно пробрасывать через ethernet.)
@DenSvet
@DenSvet 3 жыл бұрын
Для коммерческого применения следующие ограничения вижу: 1 - не видно версию/верификацию прошивки (или данных) подключенного устройства (обновляемого контроллера). 2 - придется отдавать клиенту открытый hex или bin, что рано или поздно приведет к появлению клонов. ИМХО самый надежный и дешевый вариант, как вы упомянули вначале ролика, SD карта или софт. программатор на ПК и самописный шифрованный boot в микроконтроллере с интерфейсом USB FS и защитой этой области от чтения. Так можно в открыты доступ выкладывать обновления, прикрытые AES шифрованием. Готовых решений от ST с обновлением и защитой от клонирования я не знаю. Для открытых проектов идея автономного программатора хорошая!
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
По секрету скажу, у ST давно есть такое решение с защитой от клонирования. Тут даже в комментариях одна дама его упомянула, а я кинулся ей рот закрывать с упреками что хлеб отнимает.. Вы только никому не рассказывайте. Это TrustPackageCreator. Он у них уже очень давно. И по пункту 1. Нет прошивка может расшифровать сама себя. И ее не обязательно отдавать в виде hex или bin но все будет.
@DenSvet
@DenSvet 3 жыл бұрын
@@VladimirMedintsev Хорошо, спасибо, никому не скажу. Ознакомлюсь с pdf по TrustPackageCreator. Для меня привлекательна идея сделать подобную коробочку с фиксированным количеством копий "заливаемной" прошивки и защитой протокола программирования от клонирования. После чего отправить ее в замечательный город Шэньчжэнь для производства. Менеджер microchip, если не соврал, про новый PikKit3 рассказывал, что готовая фича тая у них есть.
@f33net
@f33net 3 жыл бұрын
Матушки..., а я было подписался на канал, но тут сплошная чушь бестолковая... Обновление прошивки на месте через встроенный бутлоадер - вот это мастер, ни доли сомнения. :)))
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Блин, ну зачем меня так расстраивать, я то думал будет еще один подписчик... Подпишись назад плизз. Я тебя чему умному научу. Ну пожалуйста.
@konstantingolinskiy4944
@konstantingolinskiy4944 3 жыл бұрын
А у вас нету случайно примера как делать обновление через СД карту? =) Например написали программу моргает светодиод допустим 1 раз в секунду залили в плату через ст-линк ( к плате припаян картридер ). Плату потом отдали например человеку который далёкий от всего этого. Потом написали новую прошивку например мигает уже один раз в две секунды, компилируем программу в бинарник и допустим скидываем человеку у которого устройство, он просто скидает этот бинарник на карту памяти вставляет в устройство перегружается, идет проверка на то что программа версия новая и само перепрашивается, если версия текущая или старая то нечего не происходит устройство просто запускается. Было бы интересно
@sovchem1275
@sovchem1275 3 жыл бұрын
В H7 кубе есть пример для загрузки и работы с SD, MMС итп. Те если в устройстве есть SD то на ней можно хранить всю прошивку контроллера с которой он и будет загружаться. Это особенно выгодно если использовать мощный контроллер с маленькой флеш, например 128кб как в H750 с 480мгц и 1мб ram за 250руб
@kiryamify
@kiryamify 3 жыл бұрын
В бутлоадер можно попасть не только с кнопкой boot0, но и из своей программы. Я использую кнопочку на устройстве при его старте для того, чтобы установить MAGIC_BYTE в память и перезагружаю контроллер. При загрузке (перед инициализацией переферии, я проверяю MAGIC_BYTE и прыгаю по адресу бутлоадера.)
@kiryamify
@kiryamify 3 жыл бұрын
Пример для STM32l432 void CheckDFUJump(void){ if(*((unsigned long *)(SYMVAL(__ram0_end__) - 4)) == MAGIC_BOOTLOADER_NUMBER) { /* magic flag set */ *((unsigned long *)(SYMVAL(__ram0_end__) - 4)) = 0; /* erase the magic */ SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0;/** * Step: Disable all interrupts */ //__disable_irq();/* ARM Cortex-M Programming Guide to Memory Barrier Instructions.*/ __DSB(); SYSCFG->MEMRMP &= ~(SYSCFG_MEMRMP_MEM_MODE); SYSCFG->MEMRMP |= SYSCFG_MEMRMP_MEM_MODE_0; __DSB(); __ISB(); asm("ldr R0, =0x1FFF0000"); asm("ldr r1, [R0, #0]"); asm("mov SP, r1"); asm("ldr R0, [r0, #4]"); asm("bx r0"); } return; } void try_jump_to_bootloader() { *((unsigned long *)(SYMVAL(__ram0_end__) - 4)) = MAGIC_BOOTLOADER_NUMBER; // set magic flag => reset handler will jump into boot loader NVIC_SystemReset(); }
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Спасибо :)
@leharuso
@leharuso 3 жыл бұрын
@@kiryamify , а это поведение (и адрес) гарантируется производителем для будущих ревизий того же микроконтроллера?
@trymbachyaroslav3828
@trymbachyaroslav3828 3 жыл бұрын
А если вы по ошибке зальете прошивку в которой не будет этого куска кода? Ведь тогда все-равно придется лезть к boot0.
@kiryamify
@kiryamify 3 жыл бұрын
Trymbach Yaroslav да, на этот случай есть пятачек
@dima020275
@dima020275 3 жыл бұрын
А есть что-нибудь подобное, чтобы прошивать с SD-карты? На платах управления 3Д принтерами от Big tree tech на основе STM32 это как-то сделано, но как оно внутри устроено непонятно.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да как не понятно, там все предельно просто. Они написали свой загрузчик расположенный в младших адресах памяти и он грузит прошивку. Ну как бы сложного нет, все разработчики рано или поздно пишут свой загрузчик для своих проектов. Тем более с SD карты ну это вообще не проблема.
@ArtemKAD1
@ArtemKAD1 3 жыл бұрын
В AVR программатор как железка тоже не нужен вообще. В классике надо только программа на компе и преобразователь UART компа в SPI внутрисхемного интерфейса программирования микросхемы.
@ivanivan3815
@ivanivan3815 3 жыл бұрын
Интересной альтернативой является апгрейд прошивки посредством NFC, вот небольшая демка от STM kzfaq.info/get/bejne/md5jqJuSldvNhX0.html Мне понравилось, что за счет поддержки режима антиколлизий можно одновременно по беспроводному каналу прошивать несколько плат (на видео 3 шт). Приобрел девкит, попробовал, все работает, сама ST25DV04 стоит копейки (порядка 40 руб). Кстати, вместо специализированного ридера для заливки прошивки можно использовать любой смартфон с поддержкой NFC, о чем у STM тоже есть видео и никаких тебе проводов, дополнительных разъемов, программаторов.. удобно ;) Не воспринимайте как рекламу, просто решил подосвоить новую для себя технологию и поделиться с коллегами такой возможностью. ЗЫ. Сейчас в работе прошивка для считывания данных посредством NFC с IoT логгера.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Весьма интересно, посмотрю с удовольствием.
@ivanivan3815
@ivanivan3815 3 жыл бұрын
@@VladimirMedintsev Если интересно, здесь kzfaq.info/get/bejne/jd9-mNxll9WteHk.html льют со смартфона 110 КБ прошивки за 46 сек, смотреть с 2 мин 15 сек
@sergatmel8242
@sergatmel8242 3 жыл бұрын
Всё круто ! 👍 Но, 3 кБ для блинкера ... 🤔
@ArtemKAD1
@ArtemKAD1 3 жыл бұрын
:)
@user-wx4dd4gu6l
@user-wx4dd4gu6l 3 жыл бұрын
За HAL надо чем-то платить. А что такое 3 кБ для STM32F103RG - так, мелочь)))
@ArtemKAD1
@ArtemKAD1 3 жыл бұрын
@@user-wx4dd4gu6l Лет 20 назад(в начале нулевых) в 2кБ AVR у меня влезал весь код автосигнализации вместе с полноценной обработкой криптографии радиоканала. Если 3кБ это для STM32 "так мелочь", то не удивлюсь, когда аналогичный код в STM32 займет килобайт 20, а то, что влазит в 256кБ AVR в 1МБ STM32 просто не войдет.
@Beatleman91
@Beatleman91 3 жыл бұрын
Эммм... Я правильно понял, что вы верхний кусок от платы Nucleo описали, который программирует второй кусок?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Нет, не правильно. Верхний кусок нуклео, программирует нижний кусок по интерфейсу SWD. SWD это отладочный интерфейс, а здесь DFU - загрузчик.
@Beatleman91
@Beatleman91 3 жыл бұрын
@@VladimirMedintsev верхний кусок платы Nucleo можно отпилить и получить платку с разъемом, которой у вас на 18:53, ну не считая вывода Dev_BOOT
@vitgo
@vitgo 3 жыл бұрын
кстати, а вы не использовали st link для отладки ? там есть утилита для командной строки, но я так и не понял как ее пользовать... команды из командной строки выполняются, а вот как по шагам по программе идти просматривая изменения в регистрах\памяти ? консольная программа выполняет команды и выходит опять в ос... а можно ли по шагам смотреть исполнения, выбирая след шаг сделать или просмотр памяти\регистров ?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я не только использую ST-Link для отладки, но и на моем канале есть ровно несколько видеороликов, в которых я показываю создание собственных клонов данного программатора. Даже с гальванической развязкой клон есть.
@vitgo
@vitgo 3 жыл бұрын
@@VladimirMedintsev да программатор есть, китайский st link v2... интересует именно управление программатором из командной строки. нужно для программного управления из другой программы... пороюсь в видео..
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Вот в этом видео - kzfaq.info/get/bejne/mciirdaI19y4kps.html я рассказывал в каком файле документации есть описание команд командной строки и как этим пользоваться. На канале давно все есть.
@alexandrakovshova3748
@alexandrakovshova3748 3 жыл бұрын
для того, чтобы из командной строки выполнять отладку и идти по шагам, смотреть регистры и т.д. нужно использовать дебаггер - gdb
@Leech00001
@Leech00001 3 жыл бұрын
Владимир обратите внимание вот на это программное обеспечение play.google.com/store/apps/details?id=com.martinloren.stm32utils а также вот ссылка на проект stm32utils.martinloren.com/ Мне кажется это в тему данного видео.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
милый проект. автор себе тихонько так продукт выдал.
@oleggora5362
@oleggora5362 Жыл бұрын
Можете подсказать, если есть плата рации с пустым контроллером, и есть файл прошивки, который прошивается если рация рабочая. Можно этот файл прошить через st-link?
@VladimirMedintsev
@VladimirMedintsev Жыл бұрын
Может можно, а может нельзя, мне отсюда не видно.
@user-ec2jr6pv1s
@user-ec2jr6pv1s 3 жыл бұрын
Если не юзал ардуину и атмегу, стоит сразу с стм32 начинать?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Конечно
@cb_q
@cb_q 3 жыл бұрын
а как быть с защитой от клонов? ведь штатный загрузчик не проверяет валидность прошивки, что позволяет: 1. прошивать прошивкой от разработчика любое кол-во устройств (в том числе и клонов - копия платы исходного устройства), 2. прошивать кастомной прошивкой изначальной устройство - в этом случае хотелось бы обезопасить разработчика от головной боли в виде багов/глюков и их последствий. В идеале это должно решаться путем шифрования прошивки, наличием кастомного bootloader'а в самом МК, который умеет эту прошивку валидировать, расшифровывать и записывать в МК. Но есть ли такая возможность? - из беглого поиска я нашел что есть возможноть залочить весь МК от чтения/записи. Это не подойдет, т.к. custom bootloader тоже будет затерт. а без защиты - любой сможет получить прошивку (в том числе кастомный bootloader). в случае использования асиметричного шифрования это не позволит заливать кастомную прошивку в МК, но позволит наделать дубликатов устройств с заводской прошивкой. у AVR это решается выделение отдельной секции flash под bootloader, запрет чтения этой секции из основной программы и возможность перезаписывать основную часть flash из кода bootloader'а. - таким образом прочитать bootloader программатором или кастомной прошивкой нельзя и делать дубли устройств тоже нельзя, т.к. официальная прошивка зашифрована а на будлях нет bootloader'а, который может её расшифровать. как с этим обстоят дела у STM32?
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
Вы там шо такое космическое и защищенное делаете? Если уж на то пошло, то вроде как за 5-10 килобаксов можно сделать разрушающий анализ и физически на кристалле напрямую снять защитные фьюзы и почитать чего где залито
@cb_q
@cb_q 3 жыл бұрын
@@BB-ti9bf как что? skynet на IoT). ну а по делу - просто не хочу чтобы кто-то наделал дублей моего устройства и ковырял его прошивку. и как-то это все-таки можно сделать, потому что есть пример - DSO138.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Вы как-то далеко от темы данного ролика, но в друх словах все вами описанное не проблема. Все это решается. Я не буду 100500 слов писать, но это не проблема.
@sergovan79
@sergovan79 3 жыл бұрын
День добрый! Затык на ровном месте. На девборде с STM32f103c8t6 все прекрасно получилось с первого раза. Изготовил уже свою плату и flash loader eе не видит. Процы покупал с ЧиД. Перепаивал процы, все питания и земли ОК. boot0, boot1, reset OK. CTS для uart1 подтянул к земле. На дорожках rx, tx ничего не висит, да и запаянных деталей на плате минимум, только для прошивки. Паршиво, что самоуверенно даже на вывел SWD для альтернативной прошивки. Судя по даташитам DFU в этих процах должен быть по любому. Возможно ли, чтобы в данных процах не был прошит DFU?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Нет, это не возможно
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
По сути есть условие запуска для каждого микроконтроллера. Оно должно быть выполнено. Для вашего чипа. Питание подано на все ноги и цифровое и аналоговое. земля на все ноги. Вывод reset подтянут резистором к +, выводы rx,tx по назначению, cts не баловаться, boot согласно документации. Если все это выполнено то будет работать, если не работает, то значит вы что-то из описанного выше не сделали.
@sergovan79
@sergovan79 3 жыл бұрын
Да, все понимаю. Тем более рядом есть рабочая плата. Вот и пытаюсь найти отличия. Но работа с МК это бег по минному полю, никогда не знаешь где бахнет:)
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да ну вы загнули. С современными микроконтроллера и сложностей нет вообще. Работают хоть гвоздем их паяй.
@tutrututu4028
@tutrututu4028 3 жыл бұрын
здраствуйте может сможите помоч? обясните пожалуйста чо такое дфу и как поступить с граф планшетом huion он не выходит из дфу и определяется пк как "GD32 in dfu mode" это уже кирпич или можно оживить? (если возможно соет дайте куда мотреть и где ковырять ибо в нашем з***ке "мастера" смотрят на ету штуковину как на новые ворота)
@dr.emmettbrown8466
@dr.emmettbrown8466 3 жыл бұрын
Если говорить про конечное изделие в котором предусмотрен апгдейд прошивки пользователем, то может в само изделие поставить микроСД слот + самый дешевый МК, который будет читать бинарник с SD карты через SPI и перезаливать его основной МК по UART, предварительно самостоятельно дернув нужные ноги основного МК. Удорожание проекта ИМХО совсем небольшое, зато очень удобно.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
К примеру малюсенькая плата контроллера ворот. Надо только изменить в новой прошивке тайминги работы реле. Ну к чему там слот для микроСД, он же просто сгниет в этих воротах. Ведь не все изделия большие, как правило большинство это малая автоматизация.
@dr.emmettbrown8466
@dr.emmettbrown8466 3 жыл бұрын
@@VladimirMedintsev Ну естественно если это целесообразно.
@mmikrik
@mmikrik 3 жыл бұрын
@@VladimirMedintsev и вообще, надо уже научится писать так чтоб не обновлять в будущем. А если что то полетело то пусть покупают новое устройство.. или плату.
@-Darkweider
@-Darkweider 3 жыл бұрын
Наверно только у меня валяется где-то в столе PicKit2 который еще в прошлом веке исполнял эти чудеса. Правда там всего 2х24512, но тогда и код компактный умели...
@alexeykapustin5827
@alexeykapustin5827 3 жыл бұрын
Не только. У меня еще и PicKit3 есть
@titr7933
@titr7933 3 жыл бұрын
Я тоже ещё использую😀
@janeg7110
@janeg7110 5 ай бұрын
Привет АВТОР ! Прибор ,, Chip Soft MID ,, ( на контроллере STM32F105RCT6 ) , думаю что слител bootloader (загрузчик) . Подскажи , как мне восстановить его ?
@VladimirMedintsev
@VladimirMedintsev 5 ай бұрын
Воспользоваться программатором и записать загрузчик в память микроконтроллера.
@janeg7110
@janeg7110 5 ай бұрын
ST-LINK V2 и программа от ST Programer ??? @@VladimirMedintsev
@VladimirMedintsev
@VladimirMedintsev 5 ай бұрын
@@janeg7110 да, но вам еще и потребуется сам бутлоадер (загрузчик) вашего устройства. Если вы думаете что он слетел то его нужно будет записать.
@janeg7110
@janeg7110 5 ай бұрын
@@VladimirMedintsev А вот это как раз интересно !!! Где его надыбать то ?
@VladimirMedintsev
@VladimirMedintsev 5 ай бұрын
@@janeg7110 У производителя устройства.
@user-zh9yr8pp3e
@user-zh9yr8pp3e 2 жыл бұрын
Хотелось бы, построить на отладочных платах серии STM32.... программатор для НАНД флешь . Чтобы читал БУТЫ, и тд итп Возможно ли это сделать?
@VladimirMedintsev
@VladimirMedintsev 2 жыл бұрын
Да, конечно возможно.
@user-zh9yr8pp3e
@user-zh9yr8pp3e 2 жыл бұрын
@@VladimirMedintsev Да ,я знаю Но где бы посмотреть последовательность . В электронике я более менее , а в программных делах я вообще, нулевенький
@VladimirMedintsev
@VladimirMedintsev 2 жыл бұрын
Ну тут я вам помочь не смогу, такое в открытый доступ не выкладывают.
@user-je8oz6lh6w
@user-je8oz6lh6w 3 жыл бұрын
Вот у меня как раз именно сегодня появилась задача смены прошивки через UART. Правда мне это надо сделать удалённо через модем и ножку BOOT0 к питанию подключать будет некому. Посоветуйте что нибудь?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Без подключения BOOT0 к логической 1 магия не работает. Не колдуется.
@user-je8oz6lh6w
@user-je8oz6lh6w 3 жыл бұрын
@@VladimirMedintsev Понятно. Придется копать по бутлоадер
@sovchem1275
@sovchem1275 3 жыл бұрын
А по USB не подойдет? my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html USB DFU PC-клиент с vс++ исходниками, нужен только usb кабель. Только сначала нужно сконвертить alf/hex в *.dfu там 2 exeшника. Знакомый делал из нее PC инет-прогер для загрузки шифрованых прошивок из инета по USB. "BOOT0 к питанию подключать будет некому" Ну а изделие твое, уже готовое, мк уже на плате и только UART выведен? Обычно в устройства кнопку "обновление" добавляют(они и замыкает boot0), например в новых материнках копа, инет приставках к ТВ итп
@valkoder_ex305
@valkoder_ex305 3 жыл бұрын
как вариант аппаратно-програмный метод.Можно, например rc цепочку использовать, расчитать только время небходимое. Ножку БУТ0 и любой свободный пин соединяем вместе к rc цепочке. Когда нужно перевести контроллер в режим загрузки, подаем питание на совмещенный пин - заряжаем конденсатор и делаем систем резет. Сам конечно так не делал, но теоретически должно времени хватить. Правда все это как-то не резонно. Уж проще свой загрузчик написать и либо сд карту прикрутить или spi флешку и туда писать, а потом во внутреннюю флеш контроллера, ну или если совсем хардкор то сразу в память самого мк.
@MrLedball
@MrLedball 3 жыл бұрын
Вот бы еще прошивку через ethernet рассмотреть.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
Ну там через W5500
@MrLedball
@MrLedball 3 жыл бұрын
B B у меня используется lan8720, но это не столь важно
@t966rt
@t966rt 3 жыл бұрын
@@MrLedball самописный бутлоадер, tftp, ftp(s), http(s) или "велосипед" + если надо шифрование, вроде у ST есть апнот
@user-lf6wm5xb8d
@user-lf6wm5xb8d 3 жыл бұрын
Защищенные прошивки и в защищенный контроллер так не прошить, верно?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
не верно.
@MrLedball
@MrLedball 3 жыл бұрын
Прошивка по usb кажется более универсальной... или я не прав? Хотя бы можно отправить прошивку по электронной почте. Правда, желательно, в защищенном виде...
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Прошивка по USB предполагает что вы и компьютер должны придти к устройству, а автоматичный программатор можно положить в карман и компьютер не нужен.
@MrLedball
@MrLedball 3 жыл бұрын
Vladimir Medintsev автоматический можно с USB сделать. Сложнее, но можно же? Ну и передача прошивки заказчику - тоже важный момент.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Автоматический можно и USB сделать, а смысл. Мне заказчик заплатил за новую версию прошивки, я ее написал. Мне зачем себе голову ломать. Это его деньги, его изделие. Мне надо прошить максимально дешево. Я даю ему в руки программатор 400 рублей стоимости и пусть прошивает. Ну что ценного к примеру в прошивке автоматических ворот или печи для кирпичей. 99,99% прошивок не стоят того чтобы их взламывать. Они банальные автоматы.
@MrLedball
@MrLedball 3 жыл бұрын
@@VladimirMedintsev получается, под каждую смену прошивки ему нужно передать(выслать) программатор? тогда уж проще китайский st-link ему вручить и высылать прошивки, если что... а с ноутом можно и подойти к устройству все-таки... или этот программатор должен быть ну прям очень удобен и с возможностью залить в него новую прошивку на компе...
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@MrLedball Вообще-то на последних минутах этого видео в концепте схемотехники сказано что программатор подключается к компьютеру по USB, туда помещается файл обновляемой прошивки и дальше заказчик с ним работает уже без участия компьютера. Соответственно мне не надо ему передавать каждый раз программатор. Достаточно дать саму прошивку. Кроме того, использование STLink и компьютера подразумевает что он должен к каждому устройству идти с этим компьютером и там делать какие-то мало понятные для него операции. А тут пришел, подключил, кнопку нажал... Более того тут и прошивок может быть много и он сможет сам их менять какая ему нужна.
@sovchem1275
@sovchem1275 3 жыл бұрын
*Привет, так а чего UART... есть же готовый, PC-USB загрузчик.* Вот родной ST-шный пример USB DFU загрузчика с vc++ ИСХОДНИКАМИ, как PC-клиента, так и загрузчика (в МК) Можешь пользоваться готовым, а можно добавить в какую то свою PC - консоль устройства инет обновление прошивки, можно добавить и крипт/декрипт ф-ции в PC клиента и в mcu-загрузчик my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html Там 1 exeшник конвертит *.hex/*.alf в *.dfu, а другая эти *.dfu заливает, нужен только USB кабель. У меня приятель на базе этого примера сделал консоль для шифрованного инет-обновления прошивки в кодграбберах (для угонщиков) :))) А т.к. в прошивках дорогие, "мануфактурные ключи" для ходовых автосигналок, то из открытого hex их сразу выдерут конкуренты. И что бы кто то попросту не начал производство, ПС-клиент проверяет серийник м.контроллеров проданных устройств и наличие старой прошивки.
@sovchem1275
@sovchem1275 3 жыл бұрын
Можно и автономный USB прогер сделать на это примере. Правда не представляю устройств, куда РАДИ ОБНОВЛЕНИЯ не подобраться с нетбуком/андройдом....
@cb_q
@cb_q 3 жыл бұрын
@@sovchem1275 тут вопрос удобства обновления, а не отсутствия возможности подключиться нетбуком. сравните: 1. нетбук, usb кабель, программа, которая за один раз прошивает одно устройство и требует нажать 5 раз на кнопку далее. 2. устройство со шлейфом, которым подключается к готовому устройству и перепрошивает его автоматически. если перепрошиваемое устройство портативное перепрошивальщик имеет внешнее питание и запитывает его от себя, если устройство стационарное - перепрошивальщик есть портативное устройство и питаться может по шлейву от перепрошиваемого устройства. процесс обновления проходит по сценарию - подключить шлейф, дождаться индикации зеленого светодиода, если вместо зеленого, например, красный что-то пошло не так, на этот случай, допустим добавить функцию отката на предыдущую прошивку (которую прошивальщик может автоматом считать и запомнить перед перепрошивкой) в виде отдельной кнопки. во втором случае действий намного меньше, и если устройств по цеху, например, сотни, то это серьезно сэкономит время. можно заморочиться и автоматизировать прошивку на ПК (т.е. прошивальщик запущен все время и ждет подключения новых устройств и прошивает их без подтверждения), но будет ли кто-то это делать?
@Insideus2786
@Insideus2786 3 жыл бұрын
Спасибо за видео! Возник резонный вопрос. А зачем делать автономный программатор для заказчика вместе с самописным софтом, если на этом же МК можно сделать полноценный ST-Link на той же плате и прошивать через уже написанную программу? По денежным затратам я никакой выгоды не увидел, а по факту легче подключить USB кабель напрямую к устройству и прошить без всяких внешних программаторов.
@vladmodq
@vladmodq 3 жыл бұрын
Ну не удобно к устройству с ноутом лезть, а подключить донгл и нажать кнопку куда удобнее
@xintreavideo
@xintreavideo 2 жыл бұрын
Какая разница, покупать программатор, или плату UART. И того и того у пользователя обычно нет в наличии. В STM32 BluePill вообще дичь: есть разьем USB, но по нему можно только подключить питание. И чтобы воткнуть в компьютер, нельзя просто так взять и соединить проводом USB. Надо либо SWD разъем через программатор в USB порт втыкать, либо через UART преобразователь растыкать пины и в USB порт втыкать. Разработчики Ардуино с этим не стали мириться, и каждая плата идет с FTDI микрухой, которая позваляет взять кабель и соеденить с компьютером. И захапали огромный кусок рынка домашних самодельщиков, сделав элементарную вещь. А в STM32 все никак догадаться не могут хотя бы выпускать платы с готовым DFU загрузчиком во флеше, чтобы хоть так позволить пользователю работать через USB без покупки дополнительного железа.
@MrLedball
@MrLedball 3 жыл бұрын
А как быть с защитой прошивки? Получается, можно будет прошить чип, потом с него считать прошивку обратно. Ну, если загрузчик штатный использовать...
@cb_q
@cb_q 3 жыл бұрын
у STM32 есть защита на чтение/запись - чтобы прочитать или записать новые данные эту защиту нужно снять, но при этом стирается прошивка МК.
@MrLedball
@MrLedball 3 жыл бұрын
Павло Балтаєв при прошивке через uart - ее можно поставить? Хотя, никто не мешает сканировать процесс обмена по uart...
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Защиту прошивки можно поставить при ее загрузке по уарт, более того, сама прошивка ее так же может поставить при первом запуске.
@BB-ti9bf
@BB-ti9bf 3 жыл бұрын
@@VladimirMedintsev а как насчет подключения логического анализатора к пинам UART и слива в момент прошивки? Тут любая криптография летит к черту
@MrLedball
@MrLedball 3 жыл бұрын
Vladimir Medintsev однако, отдавая программатор «на руки» вы фактически передаете прошивку. не привязанную к конкретному железу. Верно?
@olegctef7999
@olegctef7999 3 жыл бұрын
Спасибо, Владимир! Зачем так сложно?Не проще ли написать свой загрузчик для каждого устройства ? Используя ваш отдельный программатор требуются дополнительные затраты средств и времени. С собственным загрузчиком вы защищены от копирования. В вашем случае, если конкурент захочет копировать ваши устройства ему будет достаточно получить доступ к вашему программатору, так как запись в МК идет уже в чистом виде и скопировав ваш код можно писать в чистый МК. С собственным загрузчиком данные передаются закрытые и если в устройстве нет вашего загрузчика то железо копировать бесполезно
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Если вы внимательно смотрели видео, то могли заметить, что это ответ на вопрос подписчика. Более того Эдуард в своих комментариях под этим видео описал какую ценность это имеет. Загрузчик это очень хорошо, но есть масса примеров когда данный способ использовать рациональнее.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Второе, тут под видео каждый второй комментарий просто параноя по поводу "украдут мою прошивку". Блин да кому это надо? Ну что такого ценного в вашей прошивке. Ее вместе с платой воровать муторно и дорого. Каждый раз когда приходит заказчик и говорит давай украдем, проще разработать заново чем копировать чужие ошибки.
@olegctef7999
@olegctef7999 3 жыл бұрын
@@VladimirMedintsev Да я понимаю, мне нравятся ваши видео и подача материала, просто хотелось что бы вы обозначали не только плюсы, но и минусы) Не в коем случае не хотел вас обидеть) Описанное вами решение на мой взгляд оправданно только в случае, если МК не имеет внешних интерфейсов, но если они у него есть более рациональным будет использование собственного загрузчика и процедура обновления не будет требовать от обслуживающего персонала дополнительных движений в виде замыкания boot0.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
@@olegctef7999 Да при чем тут обиды. Я нигде не говорил о том, что персоналу необходимо замыкать boot0 это будет делать сам программатор. Не везде есть возможность и не везде целесообразно делать свой загрузчик. Есть разные технологии и они нужны каждая в своем случае. Ну это все равно, что я сказал бы, зачем видео про i2c если есть spi. Тут та же картина. Есть масса применений где данный вариант гораздо лучше чем самописный бутлоадер. И в качестве примера я привел вам сообщения Эдуарда. А вы тут сразу про обиды. Блин хоть не отвечай вообще на комментарии.
@olegctef7999
@olegctef7999 3 жыл бұрын
​@@VladimirMedintsev Иногда проще скопировать чужие ошибки чем набить свой) Параноя имеет место быть, но и иногда это горький опыт(
@ibrag2012
@ibrag2012 3 жыл бұрын
Я б заюзав самий дешевий чип CH340E разом з андроїд-смартфоном (але я думаю як програміст та не у всіх є ведроїд), ідея сподобалася, дякую!
@wirtdonners4212
@wirtdonners4212 3 жыл бұрын
Да брось ты этот обезьяний язык. Говори на русском. Он понятнее и удобнее.
@mega_mak
@mega_mak 3 жыл бұрын
Можно шить через самодельный UART программатор с WIFI (esp) который подключается к удаленному серверу через смартфон раздающий сеть или через ноут по локальной сети. Интересный будет проект ))0). Топим за это ребят.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Каких ребят будем за это топить?
@mega_mak
@mega_mak 3 жыл бұрын
@@VladimirMedintsev отбитых наглухо радиолюбительской контузией.
@lionlinux
@lionlinux 3 жыл бұрын
если stm лучше чем avr, где народный Транзистор Тестер на STM?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
А это ваше народное оно сколько в сотых процента от профессионального потребления микроконтроллеров? Надеюсь понимаете что это так себе критерий. Лучше хуже ну реально как в песочнице.
@lionlinux
@lionlinux 3 жыл бұрын
мне представляется что USB Otg ГАРАЗДО ИНТЕРЕСНЕЕ... без преобразователя UART-USB получается?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Конечно получается, но это уже DFU
@Foomichoff
@Foomichoff 3 жыл бұрын
Это защита от дурака, потому что подцепившись простым логическим анализатором за 300р с алиэкспресс, на RХ и ТХ можно получить прошивку без каких либо проблем
@leharuso
@leharuso 3 жыл бұрын
А кто-нибудь поставляет заказчикам файлы DFU, созданные в DFU File Manager?
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Я использую только 2 способа. Или это полностью самописный загрузчик с шифрованием и блек джеком или это смена прошивки программатором.
@adminroot1345
@adminroot1345 3 жыл бұрын
Как вариант это проблема решается микропитоном из коробки.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Вот только этого ужа нам не хватало.
@dmitriicharuiskii
@dmitriicharuiskii 10 ай бұрын
Вот смотрю не первое видео и думаю в чем тут автономность. Ведь автономность (из википедии) - независимость какой-либо одной из управляемых величин от изменений остальных управляемых величин. Допустим я одной управляемой величиной приму сам процесс прошивки, автономность я тут вижу - просто открыл программу и залил (как минимум), а как максимум запустил что-то на компе или запустилось что-то на серваке и оборудование прошито. А тут как минимум зависимость от установления BOOT0 в "1", а в Вашем варианте ещё и ресетнуть надо. Т.е. процесс прошивки зависит от дополнительных двух управляемых величин. Чем это отличается от привычного процесса прошивки, лично для меня, непонятно... Но в любом случае спасибо, много полезного.
@VladimirMedintsev
@VladimirMedintsev 10 ай бұрын
Понять не могу зачем вы старательно натягиваете сову на глобус. Ей же больно. Вы взяли определение из систем регулирования и попытались дальше вокруг этого строить какие-то рассуждения. А если взять обычный словарь, то выяснится, сто слово автономность это способность функционировать самостоятельно без какого либо дополнительного оборудования и прочего. Можно сделать программатор который будет работать без компьютера? Да, можно, значит он будет автономен.
@dmitriicharuiskii
@dmitriicharuiskii 10 ай бұрын
@@VladimirMedintsev Извините, но всё же... Сове больно, да и от того у неё такие большие глаза, что в попытках найти ответы на свои вопросы, зацепившись за слово автономность, пытается её там разглядеть. Автономный программатор и обычный программатор, в чем разница? Звучит как плюс к цене или просмотрам =) Это ни сколько не претензии, сам разобраться хочу.
@EEinside
@EEinside 3 жыл бұрын
Так и не увидели рабочий пример в конце. Микроконтроллер выбран дорогим. А так спасибо.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Какой пример? Вы о чем? Подписчик задал вопрос, мне было интересно ему ответить, теперь он (Эдуард, вопрос которого был показан в видео) будет делать устройство. А если сочтет возможным показать, то будет видео. Я просто подсказал как сделать.
@EEinside
@EEinside 3 жыл бұрын
@@VladimirMedintsev да подсказали, но обалдеть сколько манипуляций заказчику сделать, чтобы получить например прошивку дистанционно и ее залить без программатора, но зато с ттл преобразователем, проводками, дерганием ног... Делать так можно, безусловно, но не фига для не программистов не удобно, а это важно для дистанционки...
@user-tm5fp3xw9j
@user-tm5fp3xw9j 3 жыл бұрын
@@EEinside тут вопрос удобства для пользователя. А он далеко не программист
@EEinside
@EEinside 3 жыл бұрын
@@user-tm5fp3xw9j заказчик может быть пользователем, это повезло, а может быть и нет. На не опытного стоит рассчитывать, а тут уже проблемы пойдут.
@user-tm5fp3xw9j
@user-tm5fp3xw9j 3 жыл бұрын
@@EEinside так я тебе оь этом и говорил. Конечному пользователю чем проще, тем лучше. С точки зрения программиста - это выглядит извращение.
@smart_electrics_il
@smart_electrics_il 3 жыл бұрын
"описаны методы работы с DFU" Но об этом ни слово...
@sovchem1275
@sovchem1275 3 жыл бұрын
my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stsw-stm32080.html USB-DFU PC-клиент с vс++ исходниками, нужен только usb кабель. Только сначала нужно сконвертить alf/hex в *.dfu там 2 exeшника
@smart_electrics_il
@smart_electrics_il 3 жыл бұрын
@@sovchem1275 Спасибо конечно, но смысл моего сообщения в том, что в описании и в заставке к видео, фигурирует DFU, но в самом видео об этом ни слово.
@gawadinc
@gawadinc 3 жыл бұрын
на 10:30 звучит DFU, и показан параграф в доке
@smart_electrics_il
@smart_electrics_il 3 жыл бұрын
@@gawadinc да вы что !? Реально ?? Да вы просто сама внимательность. А я то дурак, думал что ВСЯ(!) тема будет про DFU, а там секундное упоминание и в графу пальцем ткнули. Вы мне глаза открыли, гений
@retro55i
@retro55i 3 жыл бұрын
А что такое DFU и с чем его едят?
@trinitroDimedrol
@trinitroDimedrol 3 жыл бұрын
В конце Вы упомянули про криптографию для защиты прошивки. Ничего не выйдет. Бинарные данные по UART передаются в "сыром" незащищённом виде, зашитый в МК бут никак не защищает свою прошивку.
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Это не верное утверждение. Может быть закодирована наиболее ответственная часть прошивки, просто закодирована. По уарт эта часть будет так же передана в зашифрованном виде. Ее расшифровка произойдет уже в памяти самого микроконтроллера при первом запуске. Соответственно расшифрованая часть будет записана в те же или другие страницы flash. А можно вообще не писать во flash а открывать и выполнять в RAM. Кроме того, я вот который год понять не могу, да кого же все так боятся? Что блин там такого в ваших прошивках? Такое впечатление что там у каждого нобелевская премия в алгоритмах, а по факту в 90% случаев лично мне даже лениво будет вашу плату воровать, мне быстрее свое сделать.
@trinitroDimedrol
@trinitroDimedrol 3 жыл бұрын
Значит всё-таки придётся писать код загрузчика, который будет следить за количеством запуска, расшифровывать данные и перезаписывать флэш... Про защиту Вы сами в видео оговорились) Я ни в одном из серийных изделий криптографию не применял, согласен что незачем. Банальная блокировка чтения в OptBytes как защита "от любопытного" (которая к слову в STM ломается за минуту), не более.
@user-ey2pf8zu1p
@user-ey2pf8zu1p 3 жыл бұрын
Но ведь во время передачи неизвестно, что это за данные. В процессор может быть загружен любой мусорный бинарник. Является ли это исполняемым кодом станет известно только при его запуске. Так, что смело это могут быть шифрованные данные. Если они соответствуют заложенному алгоритму, то запуск успешно произойдёт. Но мне всё это не нравится. У меня не один потребитель с сотней устройств, а сто потребителей с одним устройством. Никакого дополнительного оборудования требовать для смены прошивки я от них не в праве. Давно использую бутлоадеры, делающие USB съёмный диск. Тут никакого усложнения схемотехники, только разъем и любые алгоритмы шифрования. Причем аргумент, что всё равно к устройству надо нести компьютер на сегодняшний день не актуален. Ну не компьютер, так нетбук, планшет, телефон, любое устройство, способное работать с внешней флешкой.
@user-ey2pf8zu1p
@user-ey2pf8zu1p 3 жыл бұрын
Это так для случая "быстрой шабашки" в виде упоминавшихся открывающихся ворот. Но ведь бывают и проекты в которые вложены десятки тысяч $. Может на самом STM на такие деньги и сложно придумать, но вот например, процессор грузит FPGA, а над её программой работали несколько человек месяцами. А уж людей "эмиттерных повторителей", с квалификацией, достаточной, чтобы утащить с поверхности, но недостаточной для самостоятельных идей приходилось встречать.
@sozdatelEd
@sozdatelEd 3 жыл бұрын
@@trinitroDimedrol что вы имеете ввиду говоря "блокировка чтения в OptBytes ломается за минуту"?
@yusupmagomedovify
@yusupmagomedovify 3 жыл бұрын
здравствуйте вы делаете проект на заказ? я хочу сделать контроллер для инкубатора очень продвинутый со всеми функциями которых я видел в других контроллерах и со многими другими которых я придумал нужных и не нужных и с большим запасом на будущее. на пример на STM32H7 моя почта yusup.g.m@ya.ru
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Да, я разрабатываю электронику на заказ, но не единичные, а серийные изделия от 10 штук. Вы можете прислать ТЗ на vmedintsev@yandex.ru и мы обсудим цену и состав данного устройства.
@denisdenisov9028
@denisdenisov9028 2 жыл бұрын
В начале говорит бутлоадер неудобно через флешку внешнюю, а потом городит целый программатор. Ты что там куришь автор? Загрузчик можно написать почти в любой МК, а в STM тем более.
@staratelrusregion4652
@staratelrusregion4652 3 жыл бұрын
У вас это... Фотоны в кадре летают
@VladimirMedintsev
@VladimirMedintsev 3 жыл бұрын
Респект, это лучшая шутка сегодняшнего вечера...
@incxxxx
@incxxxx 15 күн бұрын
Instead of a long talk that is of little use, you should write and show a specific program that could run DFU and that would be great.
ROCK PAPER SCISSOR! (55 MLN SUBS!) feat @PANDAGIRLOFFICIAL #shorts
00:31
NERF WAR HEAVY: Drone Battle!
00:30
MacDannyGun
Рет қаралды 40 МЛН
Вечный ДВИГАТЕЛЬ!⚙️ #shorts
00:27
Гараж 54
Рет қаралды 13 МЛН
10 МИФОВ и ЗАБЛУЖДЕНИЙ в области Электроники.
35:30
Собери ПК и Получи 10,000₽
1:00
build monsters
Рет қаралды 2,1 МЛН
iPhone 16 с инновационным аккумулятором
0:45
ÉЖИ АКСЁНОВ
Рет қаралды 1,9 МЛН
Blue Mobile 📲 Best For Long Audio Call 📞 💙
0:41
Tech Official
Рет қаралды 1 МЛН
ПОКУПКА ТЕЛЕФОНА С АВИТО?🤭
1:00
Корнеич
Рет қаралды 3,5 МЛН