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.
Программирование 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
Понравилась статья? Поделись с друзьями!
Как «раскирпичить» STM32

Здравствуйте! Меня зовут Дмитрий Руднев. В этой публикации я поделюсь своим горьким опытом.
В современной разработке широко используются микроконтроллеры STM32. Они обладают неплохим соотношением цена/производительность, вокруг них сложилась развитая «экосистема». Для прошивки этих микроконтроллеров и внутрисхемной отладки обычно используют интерфейс Serial Wire (SWD).
В процессе отладки бывает всякое. Не беда, если STM32 после прошивки ведёт себя неадекватно. Обидно, если при этом к нему не удаётся подключиться.
На этом месте не надо впадать в отчаяние, т.к. «убить насмерть» STM32 в процессе программирования непросто, и его работоспособность можно восстановить штатными средствами.
После аппаратного сброса микроконтроллер первым делом запускает системный загрузчик. Системный загрузчик проверяет состояние входов BOOT0 и BOOT1 и по их состоянию определяет режим дальнейшей загрузки. В зависимости от состояния BOOT0 подключиться к микроконтроллеру можно, как минимум, двумя разными способами.
Connect Under Reset
Если на входе BOOT0 обнаружен низкий уровень, системный загрузчик передаёт управление пользовательской программе, находящейся в FLASH-памяти. Если при этом к интерфейсу SWD подключен в режиме «Connect Under Reset» внутрисхемный отладчик, ему удаётся управление перехватить.
Рассмотрим, как это сделать с помощью программы STM32 ST-LINK Utility и программатора ST-LINK/V2-1. Программа была получена с официального сайта ST. Программатор пришёл в составе платы NUCLEO-F446ZE.
Запускаем программу, входим в «Settings»:

В окне «Settings» выбираем режим «Connect Under Reset»:

Подключаемся к нашему «кирпичику»:
Производим очистку памяти программ:

Подключение по UART1
Очень часто для прошивки STM32 применяются недорогие китайские клоны ST-LINK/V2. Без аппаратной переделки режим «Connect Under Reset» они не поддерживают. В этом случае стоит попытаться очистить память программ, подключившись к микроконтроллеру по UART.
Если подать на вход BOOT0 высокий уровень, то можно подключиться к микроконтроллеру через интерфейс UART1 с использованием программы Flash Loader Demonstrator. Программу можно получить с официального сайта ST. Преобразователь USB–UART подойдёт любой.
Запускаем программу. Выбираем COM-порт, к которому подключен преобразователь USB–UART:

Убеждаемся, что соединение установлено:

На следующем экране программа показывает области памяти микроконтроллера:

На следующем экране мы должны выбрать действие. Выбираем Erase – All:

Очистка памяти программ успешно завершена:

На этом месте надо вернуть на вход BOOT0 низкий уровень.
От автора
Любое несчастье, которое происходит с Вами, с кем-то другим уже происходило. Всё, что описано в публикации, происходило со мной и моим оборудованием.
Первая часть публикации повествует о том, как я в самом начале самоизоляции «закирпичил» новенькую оригинальную NUCLEO-F446ZE.
Это не стало для меня ударом, т.к. я уже знал, что делать. Наоборот, в процессе восстановления работоспособности платы я даже получил какое-то удовольствие от работы.
Предыдущий опыт был более трагичным. Я использовал совсем бюджетную плату в связке с очень недорогим клоном ST-LINK/V2. В один прекрасный миг, связь с платой по SWD пропала.
Результаты поиска в сети убедили меня использовать режим «Connect Under Reset». Ничтоже сумняшеся, я подключил вывод NRST микроконтроллера к выводу «Reset» программатора. Не знал я тогда, что этот вывод используется только при работе с STM8.
Сигнал сброса не проходил. Связь по интерфейсу SWD не восстанавливалась. Игры с кнопкой «Reset» на плате результата не давали. В самый раз было начинать читать мануалы.
И метод RTFM сработал! Из раздела «2.3.10 Boot modes» datasheet DS5792 rev13 я узнал про загрузку через UART1. Затем я нашёл информацию о Flash Loader Demonstrator. Восстановить работоспособность STM32F103RET6 с этими инструментами было уже несложно, что и вылилось в 113 слов и пять картинок второй части публикации…
Буду рад, если мой опыт будет кому-то полезен!

- Блог компании RUVDS.com
- Программирование микроконтроллеров
- Электроника для начинающих
Как прошить 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качиваний: 626)