Меню Рубрики

Stm32 flash loader demonstrator linux

Прошивка stm32 через UART

Любой микроконтроллер stm32 можно прошивать через USART_1 и другие интерфейсы, подробно смотрите в AN2606. Для этого в МК есть специальный системный загрузчик, который зашивается в System memory (спец. область памяти) на этапе производства, его нельзя удалить или изменить. Это загрузчик инициализируется путём «подтягивания» пина BOOT_0 к «плюсу», после чего он ожидает поступления прошивки.

Через USART можно загружать любые .bin или .hex файлы.

Описание сделано на примере платы Blue Pill, однако всё сказанное справедливо для любого stm32.

Фирменные платы типа Discovery и Nucleo тоже можно прошивать через USART.

Для работы потребуется USB to UART конвертер…

Если такой штуковины нет, то есть два варианта превращения ардуины в конвертер…

1. Замкнуть RESET на GND (может не прокатить).
2. Загрузить в неё вот такой незамысловатый скетч:

Чтобы проверить работает ли ардуина в качестве конвертера, замкните RX и TX, откройте и отправьте какие-нибудь символы. Если они вернулись, значит всё работает.

Перед прошивкой необходимо подтянуть пин BOOT0 к «плюсу», это переведёт МК в режим «системного бутлоадера». На описываемой плате это осуществляется перестановкой джампера…

На фирменных платах (Discovery, Nucleo) тоже нужно подтянуть пин BOOT0 к плюсу, но просто так это сделать не получится. Возьмите схему вашей платы и найдите там соответствующие перемычки…

Искать надо что-то вроде этого:

Не помню от какой платы эта схема, но суть такая: в данном случае пин BOOT_0 подтянут к «минусу» через резистор R16 и перемычку SB16. Если убрать перемычку SB16, то пин подтянется к «плюсу» через резистор R17 и можно прошивать. После прошивки надо вернуть всё на место.

Перемычка может выглядеть как резистор.

Bootloader (загрузчик) – это обычная программа, которая в момент старта МК решает, что должно происходить дальше.

Обычный режим, BOOT_0 подтянут к минусу. Как только подаётся питание на плату, сразу же стартует прошитая программа (если она есть конечно).

Режим «системного bootloader’а», BOOT_0 подтянут к плюсу. Системный bootloader ожидает прошивку — можно загружать в МК всё что угодно через USART_1 или через SWD (ST-Link). В более продвинутых камнях можно прошивать и через другие интерфейсы. См. мануал на свой микроконтроллер.

Системный bootloader зашивается в System memory на этапе производства, его нельзя удалить или изменить.

В этом режиме, с помощью программатора, можно заливать прошивку в оперативную память. Это продлевает жизнь Flash-памяти при отладке программ. После обесточивания программа естественно исчезает.

Соединяем конвертер и STM следующим образом…

Конвертер RX PA9 STM
Конвертер TX PA10 STM
Конвертер GND GND STM

… и подключаем конвертер и STM к компьютеру.

Инструкция по прошивке для

Скачайте архив и распакуйте куда-нибудь. Если хотите, можете взять с сайта ST (в самом низу страницы).

Нажмите Reset на плате. Бывает что на описываемой плате, плохо работает кнопочка, поэтому если МК не сбрасывается (не прошивается), тогда кратковременно замкните пин Reset на «землю».

Перейдите в папку Flash Loader Demonstrator и запустите Flash Loader Demonstrator.exe


Выбираем СОМ-порт конвертера и жмем Next.

… означает, что плата, залочена. Ничего страшного нет, просто снимите защиту кнопкой Remove protection и следом нажмите ОК.

Если выдаёт ещё какие-то ошибки, то либо не нажали Reset, либо что-то с конвертером.


Если светофор даёт зеленый свет, то смело жмите Next.


Жмем Next.


В пункте Download to device указываем путь к нужному .bin или .hex файлу и жмем Next.

Всё готово, верните джампер в исходное положение и нажмите Reset.

Инструкция по прошивке для

Скачайте архив и распакуйте куда-нибудь.

Из папки соответствующей вашей ОС скопируйте файл stm32flash в домашнюю папку.

Эта утилита есть в репах ubuntu, в других дистрах не знаю, поэтому выкладываю.

Перед прошивкой всегда нажимайте Reset на плате.

В терминале дайте команду:

Название и путь к файлу у вас будет свой. HEX-файлы тоже можно прошивать этой утилитой.

Если будет ругаться на права, тогда дайте команду…

… или запускайте утилиту через sudo .

Защита от записи

Если появилось вот такое сообщение…

… тогда дайте по очереди две команды:

Первая снимает защиту от записи, вторая от чтения.

Если у Вас стоял ардуиновский загрузчик, то он будет затёрт, чтоб его востановить просто залейте описанным выше способом этот файлик. И не забудьте вот про это.

П.С. Все описанные действия можно проделать с помощью фирменной утилиты — STM32CubeProgrammer (Windows®, Linux®, macOS®)

На этом наверно всё.

Всем спасибо

Статья о том, как из платы Blue Pill сделать программатор.

Источник

Ravenium

Hobby projects world

Прошивка STM32 с помощью STM32 Flash Loader Demonstrator

Ко мне периодически обращаются с вопросом – как прошить STM32?

В STM32 есть встроенный Bootloader, затереть его в отличие от Arduino нельзя, никаких фьюз-битов тоже настраивать не нужно. То есть в любом новом проце с завода есть все, чтобы его прошить через обычный COM порт или USB-UART переходник.
Почему такая простая операция вызывает проблемы, я не знаю, но решил, что проще один раз показать 🙂

Я взял для примера плату из этого поста, но принцип абсолютно одинаковый для любых плат:

  1. пин BOOT0 подтянуть к питанию (3.3V)
  2. подключить USART1 микроконтрллера черех переходник USB-UART к ПК.
  3. запустить Flash Loader Demonstrator и залить прошивку
  4. отключить переходник USB-UART (не обязательно)
  5. подтянуть BOOT0 к земле (нормальное положение)
  6. если питание не отключали, то нажать Reset на плате, если отключали – пора подключить питание

Вот и все операции.
Показываю наглядно:

Надеюсь, теперь у всех все получится 🙂

Прошивка STM32 с помощью STM32 Flash Loader Demonstrator : 31 комментарий

Спасибо. Все получилось, проблема оказалась то ли в винде, то ли в подключении через usb-хаб. На другом компе все заработало с первого раза.

Можно настроить прошивку прямо из эмблокса. Прикрепляю сюда свои настройки и ссылку на ютуб с описанием и демонстрацией работы. Вот это у меня по tools/ configure tools… кнопка Add :

C:\Program Files\STMicroelectronics\Software\Flash Loader Demonstrator\STMFlashLoader.exe

-c –pn 2 –br 115200 –db 8 –pr EVEN –sb 1 –ec OFF –to 10000 –co ON -Dtr –Hi -Rts –Lo -i STM32_Low-density_16K -e –all -d –fn “$$$.HEX”

Мой вариант для стм32ф103 на 64к(как видите многие параметры опущены, исп. по умолчанию) :
-c –pn 2 –to 10000 -i STM32_Med-density_64K -e –all -d –fn “$$$.HEX”

Обратите внимание на 3-тий пункт “-c –pn 2” эта двойка – номер ком порта. У вас он дб актуальным. Так же “STM32_Low-density_16K” указывает на тип мк, типы можете найти в папке “C:\Program Files\STMicroelectronics\Software\Flash Loader Demonstrator\Map” тип – название файла без расширения.

Делал по аналогии с примером из папки с программой “Flash Loader Demonstrator” и с настройками ст линка автора топика.
http://youtu.be/d2FEyruDSQU

Основная проблема с этими COM портами, за которую я их и не люблю – плодятся как кролики, у меня их номера перевалили за 3й десяток и при наличии Bluetooth их одновременно видно до десятка. Каждый раз менять настройки для разных плат и разных USB-UART (у меня их штуки 4 разных) – тоже неудобно. Я поэтому для CodeBlocks и AVR в свое время написал AVRDudeR – GUI с настройками для каждого проекта типа МК, программатора и номера порта, если он требуется. Тут по всей видимости нужно то же самое и сделать выбор COM порта при запуске утилиты без параметров, например.
Но если под рукой нет никакого отладчика, а прошить надо – вариант.

Добрый вечер!
Прошиваю плату STM32F103C8 через Loader Demonstrator с помощью “USB 2.0 to TTL UART 6PIN Module Serial Converter CP2102 STC PRGMR” согласно видео данной статьи, проект беру из статьи “http://habrahabr.ru/post/191624/”. Всё удачно прошивается, перемычку переставил, пытался далее подключить диоды через резисторы к PB5 и PB6 соответственно, и к земле другим концом, безрезультатно. Пробовал замерить напряжения между портами и землей, около 1 В. Плату саму запитывал через “USB 2.0 to TTL” переходник, так и внешним источником. Подскажите в чём я могу ошибаться?

Вариантов довольно много. Основная ошибка – собирают проект не под тот МК или не объявляют какие-то дефайны и в итоге нужные ноги просто не инициализированы. Проверьте, что Target под MD (medium density) собран.

Добрый день. Есть в наличии такая же точно плата и есть stm32f4-discovery, как её подключить, чтобы прошить через swd?

Эту плату через разъем JTAG (в нем есть и SWD пины, какие именно – можно посмотреть в документации на ST-Link/v2, там есть распиновка разъема). А STM32F4-Discovery подключается кабелем miniUSB – ST-Link/v2 и снимаются перемычки, соединяющие отладчик с девбордом. Соединять достаточно VDD, SWDIO, SWCLK, GND

Совершенно случайно решил проверить: что если подтянуть BOOT0 к питанию, а BOOT1 к земле – всё заработало! На видео у Вас работает и при BOOT0 к питанию и BOOT1 к питанию – хотя у меня плата точь в точь.

Хотя наверно немного разные, так как Вы пишете: “подтянуть BOOT0 к земле (нормальное положение)”, у меня в том же положении он к питанию подключается.

заводим такую плату так же как на видео, ни каких откликов, подскажите в чем может быть дело, как проверить на живучесть? если не трудно на почту напишите, может что подскажите почитать?

На почту я пишу только в частном коммерческом порядке. Без отладчика или осциллографа особо не проверить никак.

Добрый день, спасибо за статью, весьма полезно. Не подскажите, как решить такаю проблему: пробую прошить stm32f103c8 с помощью Flash Loader Demonstrator через USART1, нормально определяется контроллер, объем памяти, показывает список страниц, все незалоченные, далее выбираю файл, жму next, получаю ошибку “unable to erase flash”. Не работает также опция скачать прошивку в файл, выдает ошибку read protection (хотя все страницы незалочены). Не работает и опция erase all. С но теперь уже с ошибкой “write protected” 😉 Платку купил вот такую: http://www.ebay.fr/itm/STM32F103C8T6-ARM-STM32-Developpement-Minimum-Conseil-Module-Pour-Arduino-EB-/231274901824?ssPageName=ADME:L:OC:US:3160 (понравилось то, что ее можно как микросхему dip40 использовать).

У вас установлена защита от записи и считывания прошивки. Чтобы ее снять, нужен JTAG или SWD программатор и ST-Link Utility например.

Спасибо! Тем не менее, как-то непонятно, читаю AN3155 – USART protocol used in the STM32 bootloader (http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00264342.pdf), в нем приведена таблица команд, которые воспринимает бутлоадер через USART1, в частности, указано, что при блокировке чтения доступна команда “Readout Unprotect”, которая должна эту блокировку снять (предварительно очистив всю память). Ну ок, пытаюсь посредством Flash Loader Demonstrator отправить эту команду процессору – получаю в ответ “unsupported command”. Версия bootloader’а – 2.2, должен поддерживать. Как говорится, не верь глазам своим 😉 К сожалению, у меня нет ни SWD, ни ST-Link, чтобы попробовать с их помощью (заказал, жду). Может быть, все-таки есть возможность победить проблему с помощью USART?

Честно говоря не пробовал, т.к. ST-Link у меня есть. Надо будет на досуге поэкспериментировать.

Понятно, если появятся новости, отпишите, пож-та. Спасибо!

Подскажите кто нибудь,проблема с синтезатором.Слетела прошивка.Какой прогой прошивальщиком я могу залить bin файл на eeprom s29gl512tfi02.На плате есть jtag разъем.В структурной схеме возле шины txd и rxd есть надпись uart.uart адаптер и прошивка есть.Только проблема с программным обеспечение.Какое использовать под uart адаптер.

Зависит от микроконтроллера.
Скорее всего можно использовать Segger J-link

Забыл уточнить модель синта.Roland gw-8.

Здравствуйте, подскажите пожалуйста, как считать прошивку с контроллера STM32 через UART?

На этапе выбора файла прошивки выбрать upload from device и вместо записи Вы считаете прошивку, если она не защищена.
Вот в этом окне:
Чтение прошивки STM32 flash loader demonstrator

Спасибо за ответ, считать прошивку получилось, но после считывания прошивки с помощью USB UART программой Flash loader принтер включается индикатор питания горит на кнопки не реагирует, такое предположение что контроллер висит. Можете подсказать как вывести его из этого состояния. Заранее благодарен.

А как принтер связан с прошивкой контроллера? USB UART – это отдельное устройство.
Если же речь о МК, то нужно просто вернуть BOOT0 в исходное положение не забывать и перезапустить контроллер кнопкой Reset.

Контроллер STM32 используется в термо принтере UNS TP61.01, в данном принтере выходят из строя драйвер авто обрезчика бумаги, который выводит из строя контроллер. У меня лежат на полке уже три принтера таких , встал вопрос о их восстановлении, плат в сборе на принтеры нет, вот решил заняться этим вопросом. К контроллеру я подключался внутрисхемно на плате предусмотрены с завода штырьки для подключения. Подключился к этим выводам считал прошивку с рабочего принтера, переключил перемычку BOOT0=0, нажал кнопку Reset, рабочий принтер после считывания более не работает.

Возможно, стоит защита от считывания прошивки? это было бы весьма логично, т.к. прошивка – интеллектуальная собственность. И может быть настроена на самостирание при снятии защиты.

Спасибо за ответ, буду думать что дальше делать.

Спасибо. Именно вашей статьи и не хватало. Решил пересесть с Ардуино на STM32 и думал обязательно ли нужен ST-Link.

Подскажите, как st-link подключать к такой плате?

Прошу прощения, работа занимает все время, не всегда удается быстро ответить.
ST-Link подключается к плате согласно распиновке – JTMS – SWDIO контакт, JTCK – SWCLK, GND и Vcc как обычно.
Распиновка JTAG:

Может кто подсказать, получил процессор стм32ф405, впаял в полётный контроллер (омнибус ф4), в ДФУ режим не входит (кнопка есть для замыкания бут). Прошить удалось только через программатор стлинк. При попытке войти в дфу через конфигуратор контроллера (есть там такая возможность, через командную строку входить), полётник виснет. ФлешЛоадерДемонстратор не коннектится, пишет, что что-то с загрузчиком. Знаний особо нет по микроконтроллерам… Может кто подскажет, мог ли слететь загрузчик заводской и если да, то как восстановить?

Заводской загрузчик ни разу не слетал, проблема либо в софте либо в плате полетника

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Преимущества и недостатки apple mac os x
  • Преимущества mac os перед windows
  • Презентер для mac os
  • Предустановленный образ mac os x snow leopard для virtualbox
  • Превращаем windows 7 в mac os x lion