Как прошить miniSTM32F103V.

Для начала давайте разберёмся, что такое бутлоадер или как его ещё называют загрузчик. Загрузчик — это просто программа, которая хранится в определённой секции памяти и может перезаписывать флеш микроконтроллера. Она зашивается при производстве чипа и её нельзя изменить каким-либо образом. Для того чтобы микроконтроллер зашёл в эту секцию памяти, надо вывод BOOT0 подтянуть к питанию, а вывод BOOT1 к земле. На плате эти два вывода находятся возле usb разъема, а подтяжка осуществляется с помощью перемычек.
Ниже приведена таблица, которая определяет с какой области памяти запустится микроконтроллер после сброса, в зависимости от BOOT0 и BOOT1.

Предположим мы установили перемычки, теперь надо передать загрузчику hex-файл с прошивкой, передавать будем по uart, для этого нам потребуется преобразователь usb-uart.

У меня такой преобразователь сделан на основе микросхемы FT232RL, используя тонкое жало для паяльной станции запаять её очень просто. Методика запайки следующая, первым дело надо прихватить по ножке с двух противоположных углов, затем когда микросхема зафиксирована, пропаять остальные ножки паяльником или феном. И последний штрих, ещё раз пропаиваем ножки, которые запаяли первыми, чтобы снять с них механическое напряжение.
Подключаем переходник usb-uart к компьютеру и в зависимости от того на какой микросхеме он сделан CP2120 или FT232, устанавливаем соответствующие драйвера. После этого он должен определиться в системе как COM_PORT.

Теперь подключим наш переходник к плате, вывод RX переходника соединяем с выводом MCU_TхD, а вывод ТХ с выводом MCU_RхD. Топология платы, которую выслал продавец, немного отличается от той, что на верхней картинке, выводы для прошивки выведены отдельно и отмечены красными стрелочками.

Далее надо скачать программу, с помощью которой будем связываться с загрузчиком, называется она FLASH LOADER DEMONSTRATOR.

После установки программы выбираем com port, под которым определился наш переходник usb-uart и нажимаем кнопку NEXT, скорость определится автоматически. Если контроллер защищён от считывания, то защиту можно снять, нажав кнопку «Remove Protection» при этом флеш память будет стёрта и соответственно все данные, которые в ней записаны потеряны.

Если контроллер не защищён появится окно изображенное ниже, в нём нажимаем кнопку NEXT.

В следующем окне нужно выбрать, что мы хотим сделать: считать/записать флеш микроконтроллера, стереть её, запретить чтение\запись, нас интересует запись, для этого выбираем файл, который хотим загрузить и нажимаем NEXT.

По завершении записи, если она прошла успешно, появиться следующее окно.

Заключительный шаг, устанавливаем перемычки для запуска программы из флеш и жмем кнопку RESET, на этом прошивка окончена.
Там где брал уже закончились, но такая же продаётся тут.
Cхема ministm32f103vxt6.pdf [76,74 Kb] (cкачиваний: 623)
Программирование ARM-контроллеров STM32 на ядре Cortex-M3. Часть 5. Как залить прошивку в контроллер
Ну, вот мы и дошли до одного из самых интересных этапов, — как же залить в контроллер готовую прошивку и оживить наконец нашу железяку (а также как считать прошивку обратно или защитить её от чтения / перезаписи).
Вообще-то прошивать контроллеры STM32 можно по-разному, но мы рассмотрим самый простой вариант прошивки — через последовательный интерфейс с помощью фирменной утилиты Flash Loader Demonstrator. Эта утилита совершенно бесплатна и её можно скачать как с официального, так и с нашего сайта.
Как мы ранее уже говорили, — в системной области памяти контроллера зашит bootloader. Именно он и позволяет записать прошивку во flash-память через последовательный интерфейс.
Детально bootloader описан в документе AN2606 (CD00167594.pdf), а используемый им протокол — в документе AN3155 (CD00264342.pdf). Это для тех, кто хочет исчерпывающей информации, а мы рассмотрим процесс прошивки через bootloader вкратце.
Для начала вам нужно скачать и установить себе на компьютер утилиту Flash Loader Demonstrator.
Далее, нужно соединить контроллер с компьютером через UART1. Мой подопытный STM32F103C8T6 имеет 48-выводный корпус, в котором UART1 выведен на ноги 30 (Tx) и 31 (Rx).
Обратите внимание, что в контроллере используется именно UART (причём с уровнями 0/+3,3В), а не RS-232, то есть соединять напрямую выводы контроллера и com-порт компьютера нельзя. Я нашёл выход из этой ситуации в использовании USB-to-COM преобразователя RH-0002 на микросхеме cp2102. Помимо того, что этот преобразователь может использоваться как USB-to-UART с уровнями 0/+3,3 В (его можно разделить на две отдельных части: USB-to-UART и UART-to-RS232), он также позволяет запитать контроллер напряжением 3,3 Вольта (то есть отпадает необходимость во внешнем источнике питания). Вот здесь описано, как собрать преобразователь самостоятельно
Итак, ногу Tx контроллера нужно соединить с ногой Rx преобразователя, а ногу Rx контроллера — с ногой Tx преобразователя. Кроме этого, контроллер нужно запитать и обеспечить нужные уровни на ногах BOOT0 (pin 44), BOOT1 (pin 20). Для запуска bootloadera, который расположен в system memory, ногу BOOT1 нужно подтянуть к «земле», а BOOT0 — к «питанию» (табличка справа).
Подтяжку для BOOT0, BOOT1 лучше делать не жёсткую, а джамперами, чтобы можно было легко выбирать режимы загрузки (например, переключившись после заливки проги в режим загрузки из flash, можно будет эту прогу сразу и потестить).
Схема подключения показана ниже.
Дальше всё просто. Запускаем Flash Loader Demonstrator. Откроется страничка, на которой нужно выбрать com-порт и скорость обмена.
Чётность и количество бит данных уже настроены как надо, скорость можно менять — контроллер в процессе инициализации обмена настраивается на выбранную скорость автоматически, com-порт нужно выбрать тот, который создался при подключении USB-to-COM преобразователя к компьютеру (наш преобразователь создаёт при подключении виртуальный com-порт, полностью имитирующий настоящий аппаратный). После того, как всё настроили — жмём «Next».
О том, что всё нормально и соединиться с контроллером удалось, нам сообщит зелёный сигнал светофора на следующей страничке. Если связь не установится — на эту страничку нас вообще не пустят, сообщив, что контроллер не отвечает.
При установлении связи программа автоматически определит сколько у контроллера flash-памяти и защищена ли эта память от чтения. Нажав кнопку «Remove protection» защиту можно снять, но при этом содержимое флеша будет стёрто (предыдущая записанная туда прошивка уничтожится). Жмём «Next».
В следующем окне нам предлагают выбрать тип программируемого камня (хотя непонятно зачем, — он и так автоматически определяется), а также показывают для нашего камня PID, карту flash-памяти, и версию bootloader-а. Просто жмём «Next».
В следующем окне нужно выбрать, что мы собственно хотим с нашим контроллером делать. Тут возможны следующие варианты: Erase (стереть), Download to device (загрузить в контроллер прошивку), Upload from device (считать прошивку с контроллера), Enable/Disable Flash protection (включить/выключить защиту flash-памяти), Edit option bytes (изменить байты опций).
- Если мы хотим залить прошивку — выбираем Download to device, потом жмём на квадрат с тремя точками и выбираем в проводнике файл с прошивкой, которую надо залить, после чего опять жмём «Next».
- Если мы выберем считывание прошивки, то нажав на квадрат с тремя точками напротив пункта Upload from device нужно указать путь к файлу, в который вы хотите сохранить считанную прошивку (если файл не существует, — вас спросят хотите ли вы его создать).
- Если же нам нужно защитить прошивку от чтения или перезаписи или, наоборот, отменить такую защиту, то ставим галочку напротив Enable/Disable Flash protection и ниже, в выпадающих меню, выбираем, что же именно нужно сделать.
- Если нам нужна более «тонкая настройка» контроллера — выбираем пункт Edit option bytes.
Как я уже говорил, если вы отмените установленную ранее защиту от чтения, то это всё равно не даст вам возможности считать защищённую программу, так как программа после отмены защиты будет попросту стёрта.
Ну да ладно, мы немного отвлеклись. Итак, допустим мы выбрали заливку прошивки в контроллер и нажали «Next».
На следующей странице внизу появится прогресс-бар, в котором будет показан ход выполнения процедуры загрузки. После того, как вся прошивка будет загружена в контроллер, этот прогресс-бар станет зелёным и в нём белыми буквами будет написано: «Download operation finished successfully» (операция загрузки успешно завершена). После этого, можно нажать кнопку «Close» и закрыть Flash Loader Demonstrator
Всё, теперь чтобы залитая программа начала выполняться нам останется только настроить контроллер на загрузку из flash (BOOT0 = 0, BOOT1 — любой уровень) и перезагрузить его.
P.S. Если вы работаете в Keil uVision, то можете прямо в него прописать путь к программе-загрузчику. Для этого нужно выбрать в меню пункт «Flash->Configure Flash Tools…», далее в открывшемся окне на вкладке «Utilities» выбрать пункт «Use External Tool for Flash Programming» и в строке «Command» указать полный путь к утилите «Flash Loader Demonstrator» (тыкаем на три точки справа от строки, в открывшемся проводнике находим и выбираем нужную программу). Всё, теперь прошивку можно заливать в контроллер прямо из среды Keil uVision, выбрав в меню пункт «Flash->Download» (при этом будет автоматически запускаться Flash Loader Demonstrator).
- Часть 1. Установка MDK, создание проекта, основы Keil uVision
- Часть 2. Команды и директивы ассемблера, структура и синтаксис программы. Первая программа для STM32
- Часть 3. Карта памяти контроллеров STM32, методы работы с памятью
- Часть 4. Регистры, старт и режимы работы контроллеров STM32
- Часть 5. Как залить прошивку в контроллер
- Часть 6. Настройка системы тактирования
- Часть 7. Работа с портами ввода-вывода
- Часть 8. Процедуры на ассемблере для STM32
- Часть 9. Система прерываний
- Часть 10. CMSIS, использование стандартных библиотек и функций
- Часть 11. Подключение и использование драйверов из пакета StdPeriph
- Часть 12. Работа с модулями USART и UART.
- Часть 13. Работа с модулями ADC
- Часть 14. Использование DMA
- Часть 15. Таймеры. Глава 1 — Введение. Простейшие таймеры
- Часть 15. Таймеры. Глава 2 — Таймеры общего назначения TIM9 — TIM14
- Часть 15. Таймеры. Глава 3 — Таймеры общего назначения TIM2 — TIM5
- Часть 15. Таймеры. Глава 4 — Продвинутые таймеры TIM1, TIM8
- Часть 16. Создание устройства USB HID в Keil uVision при помощи библиотечного компонента USB
- Приложение 1. Набор инструкций THUMB-2 и особенности их использования
- Приложение 2. Таблица векторов прерываний для семейств STM32F101, STM32F102, STM32F103
- Приложение 3. Драйвера и функции библиотеки StdPeriph
Понравилась статья? Поделись с друзьями!
Flash loader demonstrator как пользоваться
Демонстрационная утилита загрузки STM32 Flash (FLASHER-STM32) это свободное и бесплатное ПО от STMicroelectronics, работающее на операционных системах Microsoft® Windows.
Утилита обменивается данными с программируемым микроконтроллером через RS232 (или переходник USB-UART) с загрузчиком STM32 (system memory bootloader). Подробную информацию о работе загрузчика см. апноут AN2606 [2]. Информацию по протоколу USART загрузчика можно найти в апноуте AN3155 [3].
Загружаемом установочном пакете [1] кроме GUI-утилиты также содержится и версия командной строки, которую удобно использовать в BAT-файлах для автоматизации программирования. Также предоставляется исходный код в виде проекта Microsoft® Visual Studio 12.
[Как использовать]
На примере STM32F4xx, процесс по шагам:
1. Подключите переходничок USB-USART к ножкам приема-передачи USART1 (PA10 RX, PA9 TX) или USART3 (PC11 RX, PC10 TX).
2. Подайте лог. 1 (3.3V) на ножку BOOT0, и лог. 0 (GND) на ножку BOOT1. У микроконтроллера STM32F4xx для BOOT0 выделена специальная ножка корпуса, а функция BOOT1 совмещена с ножкой порта PB2. Сбросьте микроконтроллер (или передерните у него питание).
3. Запустите графическую утилиту STMFlashLoader Demo. Мастер проведет Вас по необходимым шагам процесса.
4. После завершения программирования подайте лог. 0 на ножку BOOT0 и сбросьте микроконтроллер.
[Решение проблем]
1. Утилита не видит программируемый микроконтроллер («No response from the target, . «).

Основных причин две — нет соединения RX/TX с микроконтроллером, и неправильно установлены уровни BOOT0 и BOOT1.
2. Невозможно стереть программируемую Flash-память («FAIL: Unable to erase flash»).

Причина в том, что установлена защита от записи. Снимите её в диалоге мастера, см. скриншоты:
V2.8.0 — 1 сентября 2015
+ Добавлена поддержка STM32L4x6xx
+ Добавлена поддержка STM32L0xx 192K flash
+ Добавлена поддержка STM32F74x/5x
+ Добавлена поддержка STM32F412xx/F410xx/F446xx/F469xx/F479xx
+ Добавлена поддержка STM32F303/302xD/E
+ Исправлена работа с номерами портов до 255
+ Исправлена поддержка GUI/command версий .bin со смещением адреса, отличающегося от базового адреса
+ Исправлена STUARTBLLIB.dll для поддержки не выровненного адреса в конце области flash. Но данные всегда должны нацело делиться на 4 байта.
+ Управление байтами опций STM8, STM32L1/L0/L4 и STM32F0/2/3/4/7 поддерживается только в версии с командной строкой для пакетного программирования.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На некоторых STM32 MCU защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
+ Функция STM32L «Erase all» не поддерживается. Подробнее см. AN2606 [].
V2.7.0 — 15 сентября 2014
+ Добавлена поддержка новых MCU STM32F0xx/STM32F3xx/STM32F4xx/STM32L1xx/STM32L0xx
+ Исходный код проекта обновлен до Visual Studio 2013
+ Управление байтами опций STM8, STM32L1/L0 и STM32F0/2/3/4 поддерживается только в версии с командной строкой для пакетного программирования.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На некоторых STM32 MCU защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
+ Функция STM32L «Erase all» не поддерживается. Подробнее см. AN2606 [].
V2.6.0 — 07-November-2012
+ Добавлена поддержка STM32F3xx
+ Добавлена поддержка STM32F0xx
+ Добавлены данные байт опций для STM32L
+ Управление байтами опций STM8, STM32L1 and STM32F0/2/3/4 поддерживается только в версии с командной строкой для пакетного программирования.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На STM32F1xx защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
+ Функция STM32L «Erase all» не поддерживается. Подробнее см. AN2606 [].
V2.5.0 — 25 ноября 2011
+ Добавлена поддержка STM32L1xx 32 килобайта
+ Добавлена поддержка STM32F4xx
+ Добавлена поддержка STM32F1xx low density Value line
+ Добавлены все файлы исходного кода для версии командной строки, включая DLL (файлы, STUARTBLIB и т. п.)
+ Добавлена новая лицензия: MCD-ST Liberty SW License Agreement V2
+ Исправлена функция «Select all» стирания страниц для STM32L1xx в GUI demo (режим выбора)
+ Добавлены данные EEPROM для STM32L
+ Исправлено управление выходами RTS и DTR в версии командной строки
+ Добавлены BAT-файлы для автоматического обновления STM32F2/F4 MB786 revB ST evaluation board
+ Исправлена запись дополнительных байт в конце страниц flash
+ Исправлено (удалено) управление потоком в GUI, и улучшено только в версии командной строки
+ Управление байтами опций STM8, STM32L1 и STM32F2 поддерживается только в версии с командной строкой для пакетного программирования.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На STM32F1xx защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
+ Функция STM32L «Erase all» не поддерживается. Подробнее см. AN2606 [].
V2.4.0 — 18 июля 2011
+ Добавлена поддержка STM32F1xx High density Value line
+ Добавлена поддержка STM32L1xx
+ Добавлена поддержка STM32F2xx
+ Добавлено управление потоком в GUI с использованием RTS и DTR
+ Управление байтами опций STM8, STM32L1 и STM32F2 поддерживается только в версии с командной строкой для пакетного программирования.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На STM32F1xx защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
V2.2.2 — 2 сентября 2010 (не публичная версия)
+ Обновление ‘STUARTBLLIB.dll’ v2.2.2:
— Исправлена отправка дополнительных случайных байт в конце, если для STM32 посылаются не выровненные данные.
— Исправлено стирание страниц/секторов меньших чем 10.
V2.2.0 — 3 мая 2010
+ Добавлена поддержка STM32F1xx Value line and XL density
+ Добавлена поддержка новых STM8L
+ Исправлена функция «removes FFs data» в GUI demo или утилите командной строки
+ Исправлена отправка дополнительного «0xFF» или случайного байта в конце flash, если посылается нечетное количество данных
+ В версии командной строки исправлено управление выходами RTS и DTR
+ Исправлены специальные Echo-режимы для эмуляции LIN через UART для STM8, когда используется трансивер
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
+ На STM32F1xx защита от записи последних страниц, которая управляется последним битом защиты bit7 в байте опций WPR3 работает правильно, однако окно GUI и чекбоксы могут не обновляться соответствующим образом на некоторых MCU с размером памяти больше 128 килобайт. Чтобы разрешить/запретить защиту от записи последних страниц, можно в GUI установить или отключить только первую страницу этой группы страниц.
V2.1.0 — 2 ноября 2009
+ Добавлены новые map-файлы STM8 для поддержки байт опций
+ Добавлена опция режима «Echo» в обмен UART для эмуляции LIN через UART STM8
+ Добавлен новый комбо-бокс с опцией «No erase», когда загружается файл.
+ Исправлена работа с COM-портами, у которых номера больше 9
+ Исправлена опция —o (удалены данные FF) в утилите командной строки
+ Исправлен выбор map-файлов GUI в некоторых частных случаях
+ Исправлено обновление значений окна после чтения байт опций
+ Удален комбо-бокс «Stop Bits» в первом окне GUI
+ Удален выбор CAN через COMBox bridge board
+ Удален выбор DFU для GUI; чтобы использовать DFU bootloader, применяйте DFuSe Software
+ Незначительные улучшения для сообщений диалога и коментариев в версиях GUI и командной строки.
+ Автоматический выбор некоторых устройств STM8 может не работать правильно. Если необходимо, используйте версию командной строки и BAT-файлы.
V2.0.0 — 3 июля 2009
+ Добавлены STM32 connectivity line и STM8
+ Добавлен обмен CAN для MCU connectivity line через COMBox bridge
+ Добавлен доступ к DfuSe Demo (утилита DfuSe Demo должна быть установлена).
V1.3.0 — 5 марта 2009
+ Можно выбирать устройство в GUI для MCU не запрограммированного размера
+ Добавлен шаблон Visual studio 2005 workspace в директории INSTALLDIR\src
V1.2.0 — 23 октября 2008
+ Поддержка Low density и STM32 USB Access line
+ Исправлена незначительная проблема с COM-портами, у которых номер больше 9
+ Исправлена незначительная проблема переходов между страницами GUI после разрешения или запрета защиты
+ Удалена информация о размере RAM на странице информации об MCU
V1.1.1 — 16 июня 2008
+ Удален файл лицензионного соглашения
+ Обновлены файлы заголовка, чтобы удалить ссылку на лицензионное соглашение
V1.1.0 — 2 июня 2008
+ Добавлен файл лицензионного соглашения
+ Сохранение последней используемой конфигурации для последовательного обмена
+ Сохранение последних используемых имен файлов для операций выгрузки и загрузки
+ Добавлены команды разрешения/запрета защиты чтения/записи
+ Добавлено окно байт опций для гибкого использования
+ В операции загрузки добавлена возможность обновления байт опций через файлы опций
+ Добавлена версия командной строки
+ Добавлены файлы исходного кода для версии командной строки
+ Добавлены заголовочные файлы и библиотечные файлы общих run-time DLL
+ Добавлены все разновидности семейства STM32, STR75x, и вся продукция STMicroelectronics, где есть поддержка протокола загрузчика.
+ Исправлена незначительная проблема формата операции выгрузки в двоичном файле
+ Исправлена незначительная проблема обновления статуса команды стирания
+ Исправлена проблема операций загрузки, выгрузки и стирания с размером образа (>32k).
V1.0.0 — 25 октября 2007
Создание, первоначальная версия.
[Ссылки]
1. FLASHER-STM32 STM32 Flash loader demonstrator (UM0462) site:st.com.
2. Загрузчик STM32F42xxx и STM32F43xxx.
3. AN3155: протокол загрузчика USART STM32.
4. Прошивка STM32 с помощью STM32 Flash Loader Demonstrator site:ravenium.ru.
5. Обновление прошивки ST-LINK на плате STM32 DISCOVERY.
Прошивка STM32 с помощью STM32 Flash Loader Demonstrator


Ко мне периодически обращаются с вопросом — как прошить STM32?
В STM32 есть встроенный Bootloader, затереть его в отличие от Arduino нельзя, никаких фьюз-битов тоже настраивать не нужно. То есть в любом новом проце с завода есть все, чтобы его прошить через обычный COM порт или USB-UART переходник.
Почему такая простая операция вызывает проблемы, я не знаю, но решил, что проще один раз показать
Я взял для примера плату из этого поста, но принцип абсолютно одинаковый для любых плат:
- пин BOOT0 подтянуть к питанию (3.3V)
- подключить USART1 микроконтрллера черех переходник USB-UART к ПК.
- запустить Flash Loader Demonstrator и залить прошивку
- отключить переходник USB-UART (не обязательно)
- подтянуть BOOT0 к земле (нормальное положение)
- если питание не отключали, то нажать Reset на плате, если отключали — пора подключить питание
Вот и все операции.
Показываю наглядно:
Надеюсь, теперь у всех все получится
Запись опубликована автором RaJa в рубрике Девайсы, Уроки с метками STM32, Урок. Добавьте в закладки постоянную ссылку.
Прошивка STM32 с помощью STM32 Flash Loader Demonstrator : 31 комментарий
Евгений говорит 01.01.2014 в 18:40 :
Спасибо. Все получилось, проблема оказалась то ли в винде, то ли в подключении через usb-хаб. На другом компе все заработало с первого раза.
Vasiliy_Br говорит 02.01.2014 в 17:12 :
Можно настроить прошивку прямо из эмблокса. Прикрепляю сюда свои настройки и ссылку на ютуб с описанием и демонстрацией работы. Вот это у меня по tools/ configure tools… кнопка Add : uart bootloader 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 «$
-c —pn 2 —to 10000 -i STM32_Med-density_64K -e —all -d —fn «$
http://youtu.be/d2FEyruDSQU
Основная проблема с этими COM портами, за которую я их и не люблю — плодятся как кролики, у меня их номера перевалили за 3й десяток и при наличии Bluetooth их одновременно видно до десятка. Каждый раз менять настройки для разных плат и разных USB-UART (у меня их штуки 4 разных) — тоже неудобно. Я поэтому для CodeBlocks и AVR в свое время написал AVRDudeR — GUI с настройками для каждого проекта типа МК, программатора и номера порта, если он требуется. Тут по всей видимости нужно то же самое и сделать выбор COM порта при запуске утилиты без параметров, например.
Но если под рукой нет никакого отладчика, а прошить надо — вариант.
YVSemenov говорит 11.06.2014 в 17:41 :
Добрый вечер!
Прошиваю плату 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) собран.
Виталий говорит 14.06.2014 в 00:09 :
Добрый день. Есть в наличии такая же точно плата и есть stm32f4-discovery, как её подключить, чтобы прошить через swd?
Эту плату через разъем JTAG (в нем есть и SWD пины, какие именно — можно посмотреть в документации на ST-Link/v2, там есть распиновка разъема). А STM32F4-Discovery подключается кабелем miniUSB — ST-Link/v2 и снимаются перемычки, соединяющие отладчик с девбордом. Соединять достаточно VDD, SWDIO, SWCLK, GND
YVSemenov говорит 15.06.2014 в 10:02 :
Совершенно случайно решил проверить: что если подтянуть BOOT0 к питанию, а BOOT1 к земле — всё заработало! На видео у Вас работает и при BOOT0 к питанию и BOOT1 к питанию — хотя у меня плата точь в точь.
YVSemenov говорит 15.06.2014 в 10:06 :
Хотя наверно немного разные, так как Вы пишете: «подтянуть BOOT0 к земле (нормальное положение)», у меня в том же положении он к питанию подключается.
заводим такую плату так же как на видео, ни каких откликов, подскажите в чем может быть дело, как проверить на живучесть? если не трудно на почту напишите, может что подскажите почитать?
На почту я пишу только в частном коммерческом порядке. Без отладчика или осциллографа особо не проверить никак.
Andrey говорит 29.10.2014 в 23:36 :
Добрый день, спасибо за статью, весьма полезно. Не подскажите, как решить такаю проблему: пробую прошить 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 например.
Andrey говорит 04.11.2014 в 15:28 :
Спасибо! Тем не менее, как-то непонятно, читаю 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 у меня есть. Надо будет на досуге поэкспериментировать.
Andrey говорит 08.11.2014 в 15:51 :
Понятно, если появятся новости, отпишите, пож-та. Спасибо!
Uriy говорит 18.01.2015 в 22:42 :
Подскажите кто нибудь,проблема с синтезатором.Слетела прошивка.Какой прогой прошивальщиком я могу залить bin файл на eeprom s29gl512tfi02.На плате есть jtag разъем.В структурной схеме возле шины txd и rxd есть надпись uart.uart адаптер и прошивка есть.Только проблема с программным обеспечение.Какое использовать под uart адаптер.
Зависит от микроконтроллера.
Скорее всего можно использовать Segger J-link
Uriy говорит 18.01.2015 в 22:43 :
Забыл уточнить модель синта.Roland gw-8.
Андрей говорит 12.03.2015 в 13:04 :
Здравствуйте, подскажите пожалуйста, как считать прошивку с контроллера STM32 через UART?

На этапе выбора файла прошивки выбрать upload from device и вместо записи Вы считаете прошивку, если она не защищена.
Вот в этом окне:
Чтение прошивки STM32 flash loader demonstrator
Андрей говорит 04.04.2015 в 13:28 :
Спасибо за ответ, считать прошивку получилось, но после считывания прошивки с помощью USB UART программой Flash loader принтер включается индикатор питания горит на кнопки не реагирует, такое предположение что контроллер висит. Можете подсказать как вывести его из этого состояния. Заранее благодарен.
А как принтер связан с прошивкой контроллера? USB UART — это отдельное устройство.
Если же речь о МК, то нужно просто вернуть BOOT0 в исходное положение не забывать и перезапустить контроллер кнопкой Reset.
Андрей говорит 09.04.2015 в 23:52 :
Контроллер STM32 используется в термо принтере UNS TP61.01, в данном принтере выходят из строя драйвер авто обрезчика бумаги, который выводит из строя контроллер. У меня лежат на полке уже три принтера таких , встал вопрос о их восстановлении, плат в сборе на принтеры нет, вот решил заняться этим вопросом. К контроллеру я подключался внутрисхемно на плате предусмотрены с завода штырьки для подключения. Подключился к этим выводам считал прошивку с рабочего принтера, переключил перемычку BOOT0=0, нажал кнопку Reset, рабочий принтер после считывания более не работает.
Возможно, стоит защита от считывания прошивки? это было бы весьма логично, т.к. прошивка — интеллектуальная собственность. И может быть настроена на самостирание при снятии защиты.
Андрей говорит 13.04.2015 в 21:22 :
Спасибо за ответ, буду думать что дальше делать.
Владимир говорит 21.07.2015 в 12:06 :
Спасибо. Именно вашей статьи и не хватало. Решил пересесть с Ардуино на STM32 и думал обязательно ли нужен ST-Link.
Александр говорит 13.08.2016 в 19:27 :

Прошу прощения, работа занимает все время, не всегда удается быстро ответить.
ST-Link подключается к плате согласно распиновке — JTMS — SWDIO контакт, JTCK — SWCLK, GND и Vcc как обычно.
Распиновка JTAG:
Александр говорит 08.08.2019 в 23:55 :
Может кто подсказать, получил процессор стм32ф405, впаял в полётный контроллер (омнибус ф4), в ДФУ режим не входит (кнопка есть для замыкания бут). Прошить удалось только через программатор стлинк. При попытке войти в дфу через конфигуратор контроллера (есть там такая возможность, через командную строку входить), полётник виснет. ФлешЛоадерДемонстратор не коннектится, пишет, что что-то с загрузчиком. Знаний особо нет по микроконтроллерам… Может кто подскажет, мог ли слететь загрузчик заводской и если да, то как восстановить?