Новичку однозначно нельзя начинать с SBSFU, уж очень они там намудрили с прошивкой. Там много всего помимо непосредственно шифрования, я бы даже сказал, что туда впихнули вообще все механизмы защиты, какие можно. Для своего проекта я из SBSFU взял питоновские скрипты, которые шифруют и подписывают прошивку, а также код, который проверяет и дешифрует. Теперь можно передавать клиенту бинарник, даже если в нем есть какие-то приватные ссылки или пароли. Клиент может обновить прошивку через веб-браузер
Смотрю Ваши видео. С одной стороны очень хочется перейти на СТМ, на более высокий уровень, с другой стороны... всё как-то запутанно... Мне не хватает информации "на пальцах".
Надо просто брать и пробовать. Вспомните себя когда вы начинали с других контроллеров? Наверно так же было сложно. Просто в тот момент не с чем было сравнивать. И сейчас потихоньку надо пробовать и когда что-то не будет получаться, то искать решения. Просто сейчас будет с чем сравнивать и в некоторых моментах будет гораздо легче, чем с самого ноля.
Все как всегда :) Интересно, познавательно. Не могу навязывать, но было бы чертовски интересно увидеть про ESP32. Почему? ИМХО системы на этом чипе более заточены под домашнее и полудомашнее использование, так как из коробки мощный чип, достаточное количество периферии и достаточно отлаженная поддержка беспроводных интерфейсов.
Вы вне всякого сомнения правы. ESP32 это круто. Но так уж получилось, что этот чип мне лично абсолютно не интересен. Я его не использую и соответственно видео сделать не могу. Мне просто нечего сказать про этот чип.
Все это интересно только когда вместе с шифрованной прошивкой разработчик поставляет собственную утилиту для прошивки. Открой терминал или скачай тулзу с сайта ST и прочитай тонну маулатуры как прошить усиройство уже моветон..Получается что помимо знаний в программировании микроконтроллеров , начинающий должен не плохо программировать и ПК.
Я слышал есть обновление прошивки посредством виртуальной файловой системы. Персоналка видит микроконтроллер как виртуальный диск, когда подключен по USB. Если на диск скопировать dfu файл, прошивка обновится этим файлом. Кажется Adafruit платы на STM32 так работают. Это реализовано через их специальный bootloader или через программные компоненты микроконтроллера более высокого уровня?
@@VladimirMedintsev Спасибо! Посмотрел видео про виртуальный диск и файловую систему. Сама по себе тема интересная и хорошо раскрыта. Я думал, что там всё намного сложнее. Про обновление прошивки через виртуальный диск (может уже есть готовые варианты) сделаете видео?
я два года назад сдел загрузчик, работает очень прилично. Выкладываешь на website .Hex file, откомпелированный в Keil , stm32F4 периодически заходит (раз в 10 минут), сверяет версии и дату, скачивает по http (wifi esp32) и записывает в 8М external Flash ->reboot, IAP bootloader in (0x8000000) переписывает основную прогу с адреса 0х8004000 и передаёт ей управление. Ну вот и всё...
А можно ли эти библиотеки адаптировать для обновления прошивки по USB протоколу, те без виртуальных компортов и прочих интерфейсов. Что-то не зацепился взгляд за этот момент в описании к библиотекам бутлодера
Здравствуйте. Владимир, как думаете что будет с ценами на микроконтроллеры? STM8S003F3 в прошлом году закупался по 15р сегодня смотрю уже 48р. STM32F030K6 брали года 3 назад по 35р теперь цены прыгают видел и по 320р что полнейший перебор. На фоне того что идет сокращение выпуска полупроводниковых приборов мирового масштаба не отразится ли это в конечном результате на дефиците микроконтроллеров?
Я не имею ни какого отношения ни к фирме STMicroelectronics ни к поставкам полупроводников в Россию. Лично мое мнение проблема стоимости микроконтроллеров слишком преувеличена. Тут нет никакой проблемы. И тему поднимают в своем большинстве радиолюбители.
Обновление прошивки в процессе работы основной программы МК как делать? Все эти обновлятели по зажатию кнопки, вставке сд карты очень неудобны для пользователя. Хорошо когда юзер использует устройство а обновление скачивается\заливается на МК в фоне и при перезагрузке МК будет переключение на новую прошивку. Время и удобство пользователя дороже чем 2х к использованию флеш памяти) Был бы оч рад если вы бы осветили даную тему!
Капец как все мудрено! Тут пришлось поменять контроллер на 3д принтере, так я и не понял, как его прошить, чтобы он и систему всю запустил, и с сд карты в последствии прошивался... 🤦♂️🤦♂️🤦♂️
Подскажите, допустим я захотел сделать некое устройство на STM32, я не хочу чтобы мой разработанный алгоритм работы можно было загрузить на скопированное устройство с таким же микроконтроллером. Но с другой стороны я планирую делать обновления ПО тем людям которые приобрели мое устройство, посредвом к примеру загрузкой Hex файла. Как быть? Писать свой бутлоадер?
@@VladimirMedintsev пошерстив интернет нашел такую историю как id чипа, который закладывается изготовителем на стадии производства в память якобы только для чтения. Возникла мысль отсылать прошивку пользователю опираясь исключительно на этот id. То есть для каждого выпущенного устройства формировать серийный номер и опютправлять полную прошивку привязанную к уникальному номеру чипа id. Я же правильно понимаю что этот id невозможно в принципе изменить, раз он для только для чтения?
Конкретная информация отсутствует, если приведен пример реализации загрузчика, что мешает кому то подобрать шифрование по описанному алгоритму и сделать клон устройства ? Автор будет высылать обновленную прошивку а пользователь будет заливать ее в клон устройства ... вот этот момент не понятен ... Адреса размещения программы описаны в документации ...
Общая идея подана нормально. Ссылки на примеры от производителя могут быть полезными. А шифрование может быть с авторской "изюминкой" в исходном коде бутлоадера который защищён от считывания флеша.
@@VladimirMedintsev Ну допустим я хочу переписать код чужого устройства под свои нужды. У меня не хилый запас электронных блоков управления на esp32 от чиллеров. По факту с неисправными реле и так далее. Выбросить жалко, а вот написать парочку программ управления под свои нужды не изготавливая плат и взяв под это готовые устройства выглядит очень заманчиво. Я как понимаю бутлоадер определяет конфигурации входов/выходов контролёра и подключения переферии. Поэтому и спрашиваю как бы узнать какой бутлоадер там установлен и уже работать с ним, как с самым подходящим.
Приветствую. Вопрос Вам как спецу верхнего уровня. Есть у меня драйвер серводвигатеся на стм32, и он после ровно минуты работы в любых режимах двигателя, и даже когда двигатель даже не крутится - все равно вылетает ошибка 06, и двигатель останавливается. После перезапуска все повторяется. Минуту все работает штатно, ОС поддерживает обороты при нагрузке, все ок... Но минута - и вылет. disk.yandex.ru/i/Rl6im4YT8T4OAQ Аппаратно все вроде цело, ничего не греется. На что это похоже, где на Ваш взгляд искать причину?
Я понятия не имею где и в чем искать причину. То, что в этом устройстве стоит микроконтроллер STM32 ничего не говорит о его работе и той логике управления которую в него заложил производитель. Обычно сообщения об ошибке описаны в инструкции по эксплуатации изделия, ну или их можно узнать у производителя. Если же это не возможно, то правильнее было бы позвать специалиста и посмотреть на месте глазами. Вот таким вот обзором чего-то в интернете ну это реально не ко мне.
@@VladimirMedintsev я к Вам скорее как к разработчику подобных штуковин. Может быть такое, что кто-то по ошибке на готовый товар поставил некую тестовую прошивку, или неразлоченную типа предподажной ... бывают ли такие варианты в вашей сфере?
@@VladimirMedintsev Это не у меня, а как раз у специалистов (правда дистанционно), поскольку со многими советовался за месяц, подробно оьъяснял поведение, и что где намерял и и насмотрел осциллографом. И все вроде там нормально. Про датчики конечно тоже предположения были, причем сначала. Либо логика где-то в заыке. Код ошибки - "перегрузка". До сих пор непонятки. Как отлавливать, когда не знаю, что и где искать... Схемы нет, работающего аналога - тоже.
Подскажите пожалуйста: я новичок в STM32, имеется F103C8T6 с али. Чип от ST, не CKS. Проблема в том что, CubeIDE, Keil, st-utility не хотят видеть микроконтроллер в состоянии когда две перемычки BOOT0 и BOOT1 стоят в положении 0. Но если переставить BOOT0 на 1, то все работает, контроллер шьется любыми утилитами. Только в этом режиме не работают подключенные к STM устройства и светодиод PC13. Отладка работает, есть доступ к build analyzer. Отладка в положении перемычек BOOT0 и BOOT1 на 0, не запускается. Отключил GDB сервер в настройках, и поставил частоту прошивки 100кгц. Хочу узнать почему так происходит.
Во первых то что на чипе с Али написано STM, совершенно не означает, что это STM. "Connect under reset" пробовали? Нужно удерживать reset В ST-Link utity Нажать "Connect" (режим "Connect under reset") Сразу же отпустить reset
@@iljsg3390 Возможно, в контроллере в options bytes отключен SWD. UDP: Да, кстати, options bytes читаются? Вот на этом же канале есть доработка китайского st-link - ruclips.net/video/iC2-0Md-6yg/видео.html
Зачем миллион команд? На одном конце страны нажимаешь кнопку "ОБНОВИТЬ" на другом конце страны в микропроцессор stm32 залетает очередная версия программы и никаких команд или командных строк.
тз понятно, а детали? какая функциональность нужна об bootloader'а? запись прошивки в мк, ок. а нужно чтобы BL выдавал версию прошивки? нужно чтобы была возможность сохранить прошивку (с мк)? нужно чтобы BL проверял прошивку на целостность (т.е. не повреждена ли она)? как BL будет получать прошивку? - если на другом конце страны, то для этого нужен канал передачи данных, значит мобильный интернет, wifi, чего-нибудь еще. а значит BL нужно как-то настроить - откуда и как тянуть прошивку, желательно не захардкодить, а сделать настраиваемым, потому что все может случиться (и симка изменится, и домен для загрузки переехать). командную строку можно исключить, если написать свою утилиту обновленя на пк, которая будет все делать сама. Владимир даже предлагал ранее сделать прошивальщик аппаратным - подключил мк к нему, он его обнаружил, сам прошил на последнюю версию и все, даже комп не нужен. но без протокола обмена данными (между мк и тем, кто его будет прошивать) тут никак.
Спасибо Владимир за отличные лекции по STM и микроконтроллерам! Почти весь канал пересмотрел, отличные модули с полезными знаниями!
Новичку однозначно нельзя начинать с SBSFU, уж очень они там намудрили с прошивкой. Там много всего помимо непосредственно шифрования, я бы даже сказал, что туда впихнули вообще все механизмы защиты, какие можно. Для своего проекта я из SBSFU взял питоновские скрипты, которые шифруют и подписывают прошивку, а также код, который проверяет и дешифрует. Теперь можно передавать клиенту бинарник, даже если в нем есть какие-то приватные ссылки или пароли. Клиент может обновить прошивку через веб-браузер
Владимир, как всегда, спасибо большое за такой интересный и доступный материал. Да, было всё сильно сжато, но ключевые моменты были озвучены.
Спасибо большое, Уважаемый Владимир!
"Ничего непонятно, но очень интересно"©
У команды wolfssl я еще брал SFTP клиент, который успешно портировал на STM32
Спасибо за обзор. Жаль что сразу после ввхода не успел посмотреть. Удави вам в делах!
Смотрю Ваши видео. С одной стороны очень хочется перейти на СТМ, на более высокий уровень, с другой стороны... всё как-то запутанно... Мне не хватает информации "на пальцах".
Надо просто брать и пробовать. Вспомните себя когда вы начинали с других контроллеров? Наверно так же было сложно. Просто в тот момент не с чем было сравнивать. И сейчас потихоньку надо пробовать и когда что-то не будет получаться, то искать решения. Просто сейчас будет с чем сравнивать и в некоторых моментах будет гораздо легче, чем с самого ноля.
Поддерживаю. Как то пугаюсь начинать соскакивать с arduino. Хотя начинал ведь давным давно с ассемблера 8051.
Не надо боятся .. все на много проще чем кажется.
если ардуино еще устраивает то понятно мотивации нет.
для любительских поделок самое то
Я нарвался на одного спеца, который текстовый редактор ваяет для программирования stm32... на ассемблере...
Система безпеки - це окреме мистецтво: з одного боку має бути достатньо складним щоб не дісталися діти, а з іншого: має бути користь археологам :)
Все как всегда :) Интересно, познавательно. Не могу навязывать, но было бы чертовски интересно увидеть про ESP32. Почему? ИМХО системы на этом чипе более заточены под домашнее и полудомашнее использование, так как из коробки мощный чип, достаточное количество периферии и достаточно отлаженная поддержка беспроводных интерфейсов.
Вы вне всякого сомнения правы. ESP32 это круто. Но так уж получилось, что этот чип мне лично абсолютно не интересен. Я его не использую и соответственно видео сделать не могу. Мне просто нечего сказать про этот чип.
не путайте порнографию с эротикой. Возьмите "reference manual" по обоим mcu, сравните, и озарение придёт
Excellent tutorial!!!
thank you for sharing.
круто
Все это интересно только когда вместе с шифрованной прошивкой разработчик поставляет собственную утилиту для прошивки. Открой терминал или скачай тулзу с сайта ST и прочитай тонну маулатуры как прошить усиройство уже моветон..Получается что помимо знаний в программировании микроконтроллеров , начинающий должен не плохо программировать и ПК.
@Evgeniy Svinovsky был заблокирован на данном канале за попытку разжигания ненависти и вражды.
Я слышал есть обновление прошивки посредством виртуальной файловой системы. Персоналка видит микроконтроллер как виртуальный диск, когда подключен по USB. Если на диск скопировать dfu файл, прошивка обновится этим файлом. Кажется Adafruit платы на STM32 так работают. Это реализовано через их специальный bootloader или через программные компоненты микроконтроллера более высокого уровня?
В предыдущем видео рассказано как это сделать.
@@VladimirMedintsev Спасибо! Посмотрел видео про виртуальный диск и файловую систему. Сама по себе тема интересная и хорошо раскрыта. Я думал, что там всё намного сложнее. Про обновление прошивки через виртуальный диск (может уже есть готовые варианты) сделаете видео?
Я же сказал в видео, что собственный загрузчик это экзамен на профессиональную зрелость. Разумеется готового решения я не дам.
я два года назад сдел загрузчик, работает очень прилично. Выкладываешь на website .Hex file, откомпелированный в Keil , stm32F4 периодически заходит (раз в 10 минут), сверяет версии и дату, скачивает по http (wifi esp32) и записывает в 8М external Flash ->reboot, IAP bootloader in (0x8000000) переписывает основную прогу с адреса 0х8004000 и передаёт ей управление. Ну вот и всё...
А можно ли эти библиотеки адаптировать для обновления прошивки по USB протоколу, те без виртуальных компортов и прочих интерфейсов. Что-то не зацепился взгляд за этот момент в описании к библиотекам бутлодера
Большая часть умеет USB из коробки... Это как раз не редкость.
а зачем? опс... Для етого есть ST-LINK $3-4
@@alexivanov4269 для пользователя, чтобы тот обновлять мог
Здравствуйте. Владимир, как думаете что будет с ценами на микроконтроллеры? STM8S003F3 в прошлом году закупался по 15р сегодня смотрю уже 48р. STM32F030K6 брали года 3 назад по 35р теперь цены прыгают видел и по 320р что полнейший перебор. На фоне того что идет сокращение выпуска полупроводниковых приборов мирового масштаба не отразится ли это в конечном результате на дефиците микроконтроллеров?
Я не имею ни какого отношения ни к фирме STMicroelectronics ни к поставкам полупроводников в Россию. Лично мое мнение проблема стоимости микроконтроллеров слишком преувеличена. Тут нет никакой проблемы. И тему поднимают в своем большинстве радиолюбители.
Обновление прошивки в процессе работы основной программы МК как делать?
Все эти обновлятели по зажатию кнопки, вставке сд карты очень неудобны для пользователя.
Хорошо когда юзер использует устройство а обновление скачивается\заливается на МК в фоне и при перезагрузке МК будет переключение на новую прошивку.
Время и удобство пользователя дороже чем 2х к использованию флеш памяти)
Был бы оч рад если вы бы осветили даную тему!
В процессе работы обновлять только переключением банков.
@@VladimirMedintsev спасибо за наводку) Надеюсь что настанет время когда нужно будет отдать изделие людям, вот тогда и придется копать тему подробно.
А вы не пробовали поработать с этой библиотекой ?
Непонятно, как при Эдвертайзинге сделать так, чтобы рекламировались имеющиеся сервисы ?
С этой, это с какой?
Капец как все мудрено! Тут пришлось поменять контроллер на 3д принтере, так я и не понял, как его прошить, чтобы он и систему всю запустил, и с сд карты в последствии прошивался... 🤦♂️🤦♂️🤦♂️
Подскажите, допустим я захотел сделать некое устройство на STM32, я не хочу чтобы мой разработанный алгоритм работы можно было загрузить на скопированное устройство с таким же микроконтроллером. Но с другой стороны я планирую делать обновления ПО тем людям которые приобрели мое устройство, посредвом к примеру загрузкой Hex файла. Как быть? Писать свой бутлоадер?
Да, только таким образом. Более того писать свой бутлоадер с шифрованием.
@@VladimirMedintsev хм, спасибо вам за ответ. А возможно слать только файл обновления hex, не полную прошивку? Ну как вариант..
Можно, но как правило так никто не делает.
@@VladimirMedintsev пошерстив интернет нашел такую историю как id чипа, который закладывается изготовителем на стадии производства в память якобы только для чтения. Возникла мысль отсылать прошивку пользователю опираясь исключительно на этот id. То есть для каждого выпущенного устройства формировать серийный номер и опютправлять полную прошивку привязанную к уникальному номеру чипа id. Я же правильно понимаю что этот id невозможно в принципе изменить, раз он для только для чтения?
Да идентификационный номер чипа уникален.
Конкретная информация отсутствует, если приведен пример реализации загрузчика, что мешает кому то подобрать шифрование по описанному алгоритму и сделать клон устройства ? Автор будет высылать обновленную прошивку а пользователь будет заливать ее в клон устройства ... вот этот момент не понятен ... Адреса размещения программы описаны в документации ...
Общая идея подана нормально. Ссылки на примеры от производителя могут быть полезными. А шифрование может быть с авторской "изюминкой" в исходном коде бутлоадера который защищён от считывания флеша.
Здравствуйте, А как узнать какой именно бутлоадер установлен в микроконтроллере?
Какой вы установите, тот и установлен. Это ведь библиотеки которые служат только основой.
@@VladimirMedintsev
Ну допустим я хочу переписать код чужого устройства под свои нужды.
У меня не хилый запас электронных блоков управления на esp32 от чиллеров. По факту с неисправными реле и так далее. Выбросить жалко, а вот написать парочку программ управления под свои нужды не изготавливая плат и взяв под это готовые устройства выглядит очень заманчиво. Я как понимаю бутлоадер определяет конфигурации входов/выходов контролёра и подключения переферии. Поэтому и спрашиваю как бы узнать какой бутлоадер там установлен и уже работать с ним, как с самым подходящим.
Бутлоадер отвечает только за загрузку программного обеспечения и его обновление. Никакого отношения к конфигурации он не имеет.
@@VladimirMedintsev спасибо большое)
Приветствую. Вопрос Вам как спецу верхнего уровня. Есть у меня драйвер серводвигатеся на стм32, и он после ровно минуты работы в любых режимах двигателя, и даже когда двигатель даже не крутится - все равно вылетает ошибка 06, и двигатель останавливается. После перезапуска все повторяется. Минуту все работает штатно, ОС поддерживает обороты при нагрузке, все ок... Но минута - и вылет. disk.yandex.ru/i/Rl6im4YT8T4OAQ Аппаратно все вроде цело, ничего не греется. На что это похоже, где на Ваш взгляд искать причину?
Я понятия не имею где и в чем искать причину. То, что в этом устройстве стоит микроконтроллер STM32 ничего не говорит о его работе и той логике управления которую в него заложил производитель. Обычно сообщения об ошибке описаны в инструкции по эксплуатации изделия, ну или их можно узнать у производителя. Если же это не возможно, то правильнее было бы позвать специалиста и посмотреть на месте глазами. Вот таким вот обзором чего-то в интернете ну это реально не ко мне.
@@VladimirMedintsev я к Вам скорее как к разработчику подобных штуковин. Может быть такое, что кто-то по ошибке на готовый товар поставил некую тестовую прошивку, или неразлоченную типа предподажной ... бывают ли такие варианты в вашей сфере?
Слишком невероятные предположения у вас про прошивку и прочее, скорее всего все гораздо проще. Датчик и все такое...
@@VladimirMedintsev Это не у меня, а как раз у специалистов (правда дистанционно), поскольку со многими советовался за месяц, подробно оьъяснял поведение, и что где намерял и и насмотрел осциллографом. И все вроде там нормально. Про датчики конечно тоже предположения были, причем сначала. Либо логика где-то в заыке. Код ошибки - "перегрузка". До сих пор непонятки. Как отлавливать, когда не знаю, что и где искать... Схемы нет, работающего аналога - тоже.
Подскажите пожалуйста: я новичок в STM32, имеется F103C8T6 с али. Чип от ST, не CKS.
Проблема в том что, CubeIDE, Keil, st-utility не хотят видеть микроконтроллер в состоянии когда две перемычки BOOT0 и BOOT1 стоят в положении 0. Но если переставить BOOT0 на 1, то все работает, контроллер шьется любыми утилитами. Только в этом режиме не работают подключенные к STM устройства и светодиод PC13. Отладка работает, есть доступ к build analyzer.
Отладка в положении перемычек BOOT0 и BOOT1 на 0, не запускается.
Отключил GDB сервер в настройках, и поставил частоту прошивки 100кгц.
Хочу узнать почему так происходит.
Ни слова не написано каким программатором/отладчиком Вы пользуетесь. St-link?
Во первых то что на чипе с Али написано STM, совершенно не означает, что это STM.
"Connect under reset" пробовали?
Нужно
удерживать reset
В ST-Link utity Нажать "Connect" (режим "Connect under reset")
Сразу же отпустить reset
@@maximepifantsev ST-Link, через SWD
Да бесполезно, левый микроконтроллер из Китая + левый программатор с алиэкспресс и все это в руках новичка.... Казалось бы что может пойти не так...
@@iljsg3390 Возможно, в контроллере в options bytes отключен SWD.
UDP: Да, кстати, options bytes читаются? Вот на этом же канале есть доработка китайского st-link - ruclips.net/video/iC2-0Md-6yg/видео.html
Я сам решу мое или не мое.
Смешно, ну ладно. Решайте.
Зачем миллион команд? На одном конце страны нажимаешь кнопку "ОБНОВИТЬ" на другом конце страны в микропроцессор stm32 залетает очередная версия программы и никаких команд или командных строк.
тз понятно, а детали?
какая функциональность нужна об bootloader'а? запись прошивки в мк, ок. а нужно чтобы BL выдавал версию прошивки? нужно чтобы была возможность сохранить прошивку (с мк)? нужно чтобы BL проверял прошивку на целостность (т.е. не повреждена ли она)? как BL будет получать прошивку? - если на другом конце страны, то для этого нужен канал передачи данных, значит мобильный интернет, wifi, чего-нибудь еще. а значит BL нужно как-то настроить - откуда и как тянуть прошивку, желательно не захардкодить, а сделать настраиваемым, потому что все может случиться (и симка изменится, и домен для загрузки переехать).
командную строку можно исключить, если написать свою утилиту обновленя на пк, которая будет все делать сама. Владимир даже предлагал ранее сделать прошивальщик аппаратным - подключил мк к нему, он его обнаружил, сам прошил на последнюю версию и все, даже комп не нужен. но без протокола обмена данными (между мк и тем, кто его будет прошивать) тут никак.
А как же MCUboot ?
github.com/mcu-tools/mcuboot