она верная, но ютуб её сокращает и она не работает почему-то... Материал видео: github.com/nr-electronics/DiY/tree/master/Program%20STM32%20without%20a%20programmer%20via%20UART%20and%20DFU%20(USB)
Ага, сейчас он прочитает как вы его обозвали и обидется)))) Кстати, его видео, название, не соответствует его содержанию. Облажался конкретно. Я просто снял как правильно эти технологии работают.
@@NRelectronics спасибо Вам за поясняющий ответ, а то меня грызла совесть, что я его видос в перемотке отрывками смотрел, но успел наехать)) У Вас же как всегда правильный подход и чёткая структурированная подача материала, которая расширяет кругозор. Смотрю Ваш канал редко, т.к. знаю, что тут надо внимательно слушать/смотреть "от и до", чтоб ничего не пропустить
Добрый день, подскажите пожалуйста, можно ли STLinkом залить прошивку в STM32F103VET6 просто подпаявшись к соодтветствующим выводам ( 5V VDD(49),VSS(50 GND), CLK (76), DIO (72). Или обязательно её распаивать на плату с обвязкой?
Здравствуйте, на текущий момент если следовать вашей информации по BlackPill, то драйвер от ST-CubeProg не работает "код ошибки 28", а когда мы со свежей версии устанавливаем драйвер то он не работает в StCubeProg. Вы не могли бы выложить свой драйвер?
В любом Reference Manual. Например для контроллеров STM32G0x1 это RM0444 Reference Manual.pdf. На странице 60 подробно описано. По аналогии и в других даташитах на МК.
А как определить в каком режиме прошивается STM32F103C8T6, если контакты мини-USB подключены к PA11/PA12 и само устройство (KW600) как при штатной прошивке, так и при работе определяется в ПК всегда как Virtual COM. Значит прошивка идет через USART1_CTS/USART1_RTS? У Вас есть про это видео?
Для отладочных плат вопросов нет, а вот как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия, вот это вопрос. Мне только приходит на ум доп. МК типа STM32F0xx за ~35 руб. + microSD. STM32F0 читает прошивку с microSD по SPI, прижимает ногу BOOT0 основного МК и заливает прошивку по любому удобному протоколу. Кмк, способы из видео слишком сложны для конечного не подготовленного пользователя
FLASH контроллера разделяем на 2 части. Таким образом будет своя программа-загрузчик, которая начнёт работать при включении питания по адресу 0x08000000 и основная программа по адресу например 0x08002000. При включении начинает работать наш собственно написанный загрузчик, который проверяет наличие новой прошивки (например на подключенной SD-карте памяти). Если есть новая прошивка, то наш загрузчик затирает область памяти, отведённую для основной программы и записывает туда новую прошивку. После записи прошивки или если новой прошивки с момента включения не обнаружено мы прыгаем по адресу исполнения основной программы и переносим вектора прерываний. Всё. Даже если будет неисправна основная программа устройство не станет кирпичом. В таком случае после изготовления устройства необходимо записать наш загрузчик. Для клиента пишем свою инструкцию по обновлению ПО. "как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия" - я делил FLASH stm32f103c8t6 на 3 блока и в первом организовывал загрузчик, во втором блоке основная программа и третий блок был отведён для файловой системы. Загрузчик при включении определял подключено ли устройство к USB и если подключено, то оно обнаруживалось как обычная флешка. Клиент записывал на неё криптованную прошивку. Далее при включении устройства от основного питания загрузчик определял, что устройство не подключено к USB и есть новая прошивка, проверял её целостность и стирал часть FLASH отведённую для основной программы, декодировал прошивку и записывал её в нужную область, затирал файл прошивки. Далее запускалась основная программа. На все манипуляции по смене прошивки уходило менее 2 секунд при старте устройства. Удорожания конструкции минимальны - USB-разъём и обвязка по мелочи.
@@NRelectronics Схематично так: 1. 1-й МК управляет не только загрузкой но и питанием основного МК, например через мосфет (принцип как на материнках мультиконтроллер) 2. При старте проверка SD, если нет новой прошивки, то просто подает питание на основной МК (да, потеря в скорости загрузки, но и хрен с ней) 3. Если есть, то работаем с ножкой BOOT0 основного МК, подаем питание и работаем как бы буфером, читаем по SPI с карты и передаем по UART (в принципе, судя по даташит, UART можно заменить на SPI или I2C) Повторюсь, DFU классная тема, но ИМХО абсолютно не приемлема для конечного и неподготовленного КОНЕЧНОГО пользователя.
Уважаемый автор! Пытаюсь прошить предложенным Вами способом полетный контроллер Holibro Kakute F7 mini V3 на базе STM32 F722RET6 через СP2102, но ПК определяет только CP2102 а полетник никак не отсвечивает и на кнопку DFU не реагирует. Может подскажете куда копать?
@@NRelectronics Boot modes At startup, the boot memory space is selected by the BOOT pin and BOOT_ADDx option bytes, allowing to program any boot memory address from 0x0000 0000 to 0x3FFF FFFF which includes: • All Flash address space mapped on ITCM or AXIM interface • All RAM address space: ITCM, DTCM RAMs and SRAMs mapped on AXIM interface • The System memory bootloader The boot loader is located in system memory. It is used to reprogram the Flash memory through a serial interface. Я, если честно не настолько понимаю в програмировании поэтому и спрашиваю((
Когда из 103 делаешь Black Magic Probe, на него программа заливается по dfu и залилась нормом. Это загрузчик нельзя, а программу можно таким образом заливать
Здравствуйте, возможно у вас та же ситуация что и у меня. Моя BlackPill грузится в DFU только если зажать не только BOOT0, но и KEY. Возможно у вас так же. Я зажал KEY + BOOT0, и потом поставил дрова из директории где лежит CubeProgrammer. Пока работает исправно
Очень полезное видео. Спасибо! Но у меня что-то не работает. Windows 7 64 бит. Драйвер установил. Нажимаю Boot0, втыкаю штекер. В диспетчере устройств появляется "STM device in DFU mode". Но в CubeProgrammer - No DFU Detected. А в тестере при нажатии на GetStatus пишет: Success. Status=STATUS_errFIRMWARE PollTime=0 State=STATE_DFU_ERROR iString=0. Это лечится?
@@NRelectronics В общем борьба бобра с ослом продолжается: поставил 10ку поверх 7ки. В диспетчере устройств 10ка стала ругаться на неверный дескриптор устройства. Переустановка дров не помогла. Загрузился с другого диска с windows 7 32 бит, поставил дрова - в диспетчере устройств появился STM device in DFU mode. Програмка DfuSeDemo его видит и показывает сектора. Куб программер пишет no DFU detected.
Спасибо за видео. Вопрос возник, как лучьше организовать связь с ПК(Windows, Linux), для получения команд от ПК и для отправки данных на ПК (USART, UART, I2C?); Если я где-то пропустил ваш урок по этой теме, прошу пардону)))
Спасибо Обычно делают связь терминальной программой, их море, на вкус и цвет как говориться через преобразователь UART-USB. Тоже любой, в роликах они у меня были. Могу посоветовать самый дешёвый за 100₽ и вполне приличный...
@@NRelectronics Спасибо было бы неплохо если посоветуете хороший вариант преобразователя. Моя идея такая, для обмена данными использовать Cmsis или LL, со стороны ПК это будет QserialPort.
У меня при подключении к black pill пишет "неизвестное USB устройство" пичаль-бида прямо. Может быть кто-то что-то подскажет. Драйвер установил. Reset + boot, затем отпускаю reset и через 0.5 сек boot. Выскакивает сообщение "USB устройство не опознано". Уже не знаю что и делать.
Есть глюк винды. Установите драйвера из папки где я показывал в видео. Куда установилась программа DfuSE.exe. Через диспетчер как у вас бывает не работает, это норма для винды.
погуглите, попадалось, что у людей на плате блюпил от некоторых чинанайцев, как Вы говорите))), не работал юсб просто, дело кажется было в резисторе R10, и у меня он был на 10кОм и все было норм. Поищите на просторах, эту проблемку освещали...
@@NRelectronics лол, самое смешное, что плата начала иногда загружаться через УСБ. Причем загружается и Вашим способом и ресет + буут.))) Но "не только лишь всегда"...))) Снова возникла проблема с GDB сервером, но была решена кардинальным способом через настройки дебаггера. Поморгал светиком и покнопал баттоном на блекпилке. Пока дальше этого не заходил, но через пару дней появится много времени, постараюсь начать работу с микроконтроллерами именно с стм32, ну и Ардуинка тоже будет для освоения С и С++. Чистые Атмелы не понравились. Пы.Сы. Чинанайцы от слова Чина, но как-то так совпало прикольно.)))) Надеюсь приживётся)))) Пы. Пы. Сы. Резик проверю. Кстати на блекпилке кнопка притягивает ноль к ноге А0 через резик примерно 330 Ом, прикольно, что можно просто пальцем по ноге стучать и будет переключаться. Надо будет наделать преобразователей уровня с 5 на 3.3 В
Большое спасибо Вам за данный видеоматериал. Всё доступно объяснили.
Пожалуйста. Главное, что материал в строгом соответствии с документацией на микроконтроллер, а не как у других.
@@NRelectronics Что будет если подключить плату без нажатия BOOT0?
Спасибо, сделал так чтобы на мою F411 загружался код из Arduino IDE
Отлично, молодцы.
Спасибо, очень интересная тема для новичка, жду новых видео как праздник!!!)))
Ссылка не работает на гитхаб((
она верная, но ютуб её сокращает и она не работает почему-то...
Материал видео:
github.com/nr-electronics/DiY/tree/master/Program%20STM32%20without%20a%20programmer%20via%20UART%20and%20DFU%20(USB)
Спасибо за видео) Тема использования DFU на микроконтроллерах STM32 очень интересная
Пожалуйста Артем. Эта тема почему-то не освещается, по старинке все шьем по swd и uart, а там возможностей гораздо больше)
очень полезно
особенно про DFU
спасибо
пожалуйста.
По DFU нужен один джампер/кнопка/переключатель и рабочий usb плавно превращается в шорты))) ... в разъем для программирования...
Спасибо за видео! Делайте еще! Про дисплеи обещали, я жду _)
Будут конечно!
Отличное видео, Спасибо
Спасибо.
Спасибо большое!!! Очень пригодилось !!!
Пожалуйста) Смотрите дальше))
Недавно у одного дедушки выходило подобное видео, но там как то не очень, а на этом канале всегда попадается годная инфа, так что сейчас гляну)
Ага, сейчас он прочитает как вы его обозвали и обидется))))
Кстати, его видео, название, не соответствует его содержанию. Облажался конкретно.
Я просто снял как правильно эти технологии работают.
@@NRelectronics спасибо Вам за поясняющий ответ, а то меня грызла совесть, что я его видос в перемотке отрывками смотрел, но успел наехать))
У Вас же как всегда правильный подход и чёткая структурированная подача материала, которая расширяет кругозор. Смотрю Ваш канал редко, т.к. знаю, что тут надо внимательно слушать/смотреть "от и до", чтоб ничего не пропустить
@@NRelectronics я так понимаю имя этого дедушки начинается на букву "В"??)
желательно внимательно конечно смотреть. Так как все кроется в деталях...
@@Dmitriy_KIPiA есть такая буква. Вращайте барабан!
А почему 128кб памяти пишет если у нее 64 ? Если в опции таргет выбрать не 128 а 64 --- это повлияет на загрузку или выгрузку прошивки из или в мк ?
У меня плата значит с индексом CB
Добрый день, подскажите пожалуйста, можно ли STLinkом залить прошивку в STM32F103VET6 просто подпаявшись к соодтветствующим выводам ( 5V VDD(49),VSS(50 GND), CLK (76), DIO (72). Или обязательно её распаивать на плату с обвязкой?
Добрый день. О какой именно обвязке вы говорите? Там напрямую от стлинка подключаются к микроконтроллеру на выводы swd.
Здравствуйте, на текущий момент если следовать вашей информации по BlackPill, то драйвер от ST-CubeProg не работает "код ошибки 28", а когда мы со свежей версии устанавливаем драйвер то он не работает в StCubeProg. Вы не могли бы выложить свой драйвер?
Здравствуйте. Попробуйте платку поменять, возможно дело в ней.
Спасибо! А в каком документе указана конфигурация BOOT0/BOOT1 для перевода в DFU mode
В любом Reference Manual. Например для контроллеров STM32G0x1 это RM0444 Reference Manual.pdf. На странице 60 подробно описано. По аналогии и в других даташитах на МК.
@@NRelectronics да, нашел, спасибо!
Спасибо за видео! Функционал DFU встроен в загрузчик? В CubeMX при настройке пинов не нужно задавать этот режим? У меня black pill F401
Аппаратно встроен. Наличие только в даташите надо уточнять. В блэкпиле есть вроде.
А как определить в каком режиме прошивается STM32F103C8T6, если контакты мини-USB подключены к PA11/PA12 и само устройство (KW600) как при штатной прошивке, так и при работе определяется в ПК всегда как Virtual COM. Значит прошивка идет через USART1_CTS/USART1_RTS? У Вас есть про это видео?
У меня нет видео про конкретно ваше устройство, kw600. CTS и RTS не нужны выводы для прошивки, эти выводы другой функционал в порту RS-232 выполняют.
@@NRelectronics Вопрос был в том, как можно выгрузить прошивку из STM32F103C8T6 через PA11/PA12 через USB (Virtual COM). Какой программой?
таким образом никак. На просторах интернет такой способ даже не встречал.
Можно ли прошить сразу несколько мк стм32 одновременно, при том что id нужно присвоить каждому уникальный? Если да то как это реализовать на практике?
Наверное можно, такой непрерывной оригинальной серийкой не занимался.
Для отладочных плат вопросов нет, а вот как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия, вот это вопрос. Мне только приходит на ум доп. МК типа STM32F0xx за ~35 руб. + microSD. STM32F0 читает прошивку с microSD по SPI, прижимает ногу BOOT0 основного МК и заливает прошивку по любому удобному протоколу.
Кмк, способы из видео слишком сложны для конечного не подготовленного пользователя
FLASH контроллера разделяем на 2 части. Таким образом будет своя программа-загрузчик, которая начнёт работать при включении питания по адресу 0x08000000 и основная программа по адресу например 0x08002000. При включении начинает работать наш собственно написанный загрузчик, который проверяет наличие новой прошивки (например на подключенной SD-карте памяти). Если есть новая прошивка, то наш загрузчик затирает область памяти, отведённую для основной программы и записывает туда новую прошивку. После записи прошивки или если новой прошивки с момента включения не обнаружено мы прыгаем по адресу исполнения основной программы и переносим вектора прерываний. Всё. Даже если будет неисправна основная программа устройство не станет кирпичом.
В таком случае после изготовления устройства необходимо записать наш загрузчик. Для клиента пишем свою инструкцию по обновлению ПО.
"как организовать обновление прошивки в конечном изделии силами пользователя не поднимая сильно стоимость изделия" - я делил FLASH stm32f103c8t6 на 3 блока и в первом организовывал загрузчик, во втором блоке основная программа и третий блок был отведён для файловой системы. Загрузчик при включении определял подключено ли устройство к USB и если подключено, то оно обнаруживалось как обычная флешка. Клиент записывал на неё криптованную прошивку. Далее при включении устройства от основного питания загрузчик определял, что устройство не подключено к USB и есть новая прошивка, проверял её целостность и стирал часть FLASH отведённую для основной программы, декодировал прошивку и записывал её в нужную область, затирал файл прошивки. Далее запускалась основная программа. На все манипуляции по смене прошивки уходило менее 2 секунд при старте устройства. Удорожания конструкции минимальны - USB-разъём и обвязка по мелочи.
по UART конечно посложнее чем через DFU.
А эту простую прошивку или способ заливки Вы как предлагаете организовать по простому?
@@NRelectronics Схематично так:
1. 1-й МК управляет не только загрузкой но и питанием основного МК, например через мосфет (принцип как на материнках мультиконтроллер)
2. При старте проверка SD, если нет новой прошивки, то просто подает питание на основной МК (да, потеря в скорости загрузки, но и хрен с ней)
3. Если есть, то работаем с ножкой BOOT0 основного МК, подаем питание и работаем как бы буфером, читаем по SPI с карты и передаем по UART (в принципе, судя по даташит, UART можно заменить на SPI или I2C)
Повторюсь, DFU классная тема, но ИМХО абсолютно не приемлема для конечного и неподготовленного КОНЕЧНОГО пользователя.
ссылка "Материал видео:" уже не работает, к сожалению
Спасибо за фидбэк. Поправил, проверяйте.
Привет.А ты не пробовал подключать внешнюю NAND флеш к stm32 контроллеру ?
Привет. Ещё пока нет. Всё правда лежит...
Простите если вопрос глуп сидел на мегах прошивал ЛПТ порт используя с преобразователем уровней ...можно ли такой же финт ушами с 32 сделать
Не глупый вопрос. Параллельной шиной нельзя прошить STM32. Можно преобразователем COM-uart если что.
@@NRelectronics спасибо ...
Пожалуйста. Не стесняйтесь задавать вопросы.
Уважаемый автор! Пытаюсь прошить предложенным Вами способом полетный контроллер Holibro Kakute F7 mini V3 на базе STM32 F722RET6 через СP2102, но ПК определяет только CP2102 а полетник никак не отсвечивает и на кнопку DFU не реагирует. Может подскажете куда копать?
Проверьте в документации на ваш контроллер, он позволяет прошивать через uart способом DFU?
@@NRelectronics Boot modes
At startup, the boot memory space is selected by the BOOT pin and BOOT_ADDx option
bytes, allowing to program any boot memory address from 0x0000 0000 to 0x3FFF FFFF
which includes:
• All Flash address space mapped on ITCM or AXIM interface
• All RAM address space: ITCM, DTCM RAMs and SRAMs mapped on AXIM interface
• The System memory bootloader
The boot loader is located in system memory. It is used to reprogram the Flash memory
through a serial interface. Я, если честно не настолько понимаю в програмировании поэтому и спрашиваю((
Не то вы смотрите. Как сяду за комп, если не забуду, посмотрю.
@@NRelectronics Спасибо Вам большое что протягиваете руку помощи.
Ваш микроконтроллер можно прошивать через USART1 и USART3. Смотрите куда подключен ваш СР2102.
Стр. 193 документ AN2606.
Когда из 103 делаешь Black Magic Probe, на него программа заливается по dfu и залилась нормом. Это загрузчик нельзя, а программу можно таким образом заливать
разъясните пожалуйста по подробней что там по Black Magic Probe как там делается? интересно тоже.
NR.electronics я свой делал по этой рекомендации xelin.ru/content/1246. Лоадер прошивал через конвертер, а саму программу как ДФУ через юсб шил.
Ваша ссылка к сожалению не работает...
NR.electronics странно, на днях ещё работала, может с сервером у них сбой? Попробуйте вот эту, itnan.ru/post.php?c=2&p=292459
Спасибо! Почитал. Интересная тоже реализация. Расстраивает только что МК в нем меньше чем в J-Link`е. А так классно.
А как включить терминал USART в Cubeide
Изначально он включенный, нужно только перейти в соответствующее окно и выбрать номер com-порт и его открыть.
@@NRelectronics А в какое окно.Где настройка терминала находится в какой опции?
Посмотрите моё видео на канале: "STM32CubeIDE. Установка, настройка и отладка. Часть 1"
на метке 22:05
пять раз провернул эту последовательность и все равно в диспетчере устройств не находит плату, пишет "Неизвестное USB-устройство...."
Что за плата? Драйвера установили?
Здравствуйте, возможно у вас та же ситуация что и у меня. Моя BlackPill грузится в DFU только если зажать не только BOOT0, но и KEY. Возможно у вас так же. Я зажал KEY + BOOT0, и потом поставил дрова из директории где лежит CubeProgrammer. Пока работает исправно
Очень полезное видео. Спасибо! Но у меня что-то не работает. Windows 7 64 бит. Драйвер установил. Нажимаю Boot0, втыкаю штекер. В диспетчере устройств появляется "STM device in DFU mode". Но в CubeProgrammer - No DFU Detected. А в тестере при нажатии на GetStatus пишет: Success. Status=STATUS_errFIRMWARE PollTime=0 State=STATE_DFU_ERROR iString=0. Это лечится?
У меня черная таблетка STM32F411CEUb
С виндой 7-ой сейчас всё плохо. На десятке у меня работает. Проверить у меня вам даже не на чем...
@@NRelectronics Спасибо. Буду ставить 10ку. По результатам отпишусь.
Пожалуйста. Обязательно отпишитесь. Ещё обязательно проверерьте, именно ваш контроллер поддерживает DFU через USB.
@@NRelectronics В общем борьба бобра с ослом продолжается: поставил 10ку поверх 7ки. В диспетчере устройств 10ка стала ругаться на неверный дескриптор устройства. Переустановка дров не помогла. Загрузился с другого диска с windows 7 32 бит, поставил дрова - в диспетчере устройств появился STM device in DFU mode. Програмка DfuSeDemo его видит и показывает сектора. Куб программер пишет no DFU detected.
Спасибо за видео.
Вопрос возник, как лучьше организовать связь с ПК(Windows, Linux), для получения команд от ПК и для отправки данных на ПК (USART, UART, I2C?);
Если я где-то пропустил ваш урок по этой теме, прошу пардону)))
Спасибо
Обычно делают связь терминальной программой, их море, на вкус и цвет как говориться через преобразователь UART-USB. Тоже любой, в роликах они у меня были. Могу посоветовать самый дешёвый за 100₽ и вполне приличный...
@@NRelectronics Спасибо было бы неплохо если посоветуете хороший вариант преобразователя.
Моя идея такая, для обмена данными использовать Cmsis или LL, со стороны ПК это будет QserialPort.
116,20 руб. 22%СКИДКА | Преобразователь MICRO USB/UART TTL, 1 шт., 6Pin, для Arduino
a.aliexpress.com/_AFdCxK
@@NRelectronics Спасибо!
Пожалуйста, обращайтесь 😉✌
У меня при подключении к black pill пишет "неизвестное USB устройство" пичаль-бида прямо. Может быть кто-то что-то подскажет. Драйвер установил. Reset + boot, затем отпускаю reset и через 0.5 сек boot. Выскакивает сообщение "USB устройство не опознано". Уже не знаю что и делать.
Есть глюк винды. Установите драйвера из папки где я показывал в видео. Куда установилась программа DfuSE.exe. Через диспетчер как у вас бывает не работает, это норма для винды.
Кстати не так. Нажимайте Boot и только после подключаете штекер type-C. Когда установите из папки дрова и будет у вас праздник.
@@NRelectronics делал и так и по-Вашему, драйвер установлен - результат прежний, выспорил у чинанайца 200 рублей.
погуглите, попадалось, что у людей на плате блюпил от некоторых чинанайцев, как Вы говорите))), не работал юсб просто, дело кажется было в резисторе R10, и у меня он был на 10кОм и все было норм. Поищите на просторах, эту проблемку освещали...
@@NRelectronics лол, самое смешное, что плата начала иногда загружаться через УСБ. Причем загружается и Вашим способом и ресет + буут.))) Но "не только лишь всегда"...))) Снова возникла проблема с GDB сервером, но была решена кардинальным способом через настройки дебаггера. Поморгал светиком и покнопал баттоном на блекпилке. Пока дальше этого не заходил, но через пару дней появится много времени, постараюсь начать работу с микроконтроллерами именно с стм32, ну и Ардуинка тоже будет для освоения С и С++. Чистые Атмелы не понравились.
Пы.Сы. Чинанайцы от слова Чина, но как-то так совпало прикольно.)))) Надеюсь приживётся))))
Пы. Пы. Сы. Резик проверю. Кстати на блекпилке кнопка притягивает ноль к ноге А0 через резик примерно 330 Ом, прикольно, что можно просто пальцем по ноге стучать и будет переключаться. Надо будет наделать преобразователей уровня с 5 на 3.3 В
как заливать код в озу?
Boot 0 и Boot 1 установить в единицу.
@@NRelectronics а дальше? Залилось на флеш
а дальше все зависит от того как вы сами реализовали то.