Программирование STM32. Часть 14: Прошиваем STM32 через ST-Link
Допустим, копая просторы Интернета, нашли мы очень интересное электронное устройство на микроконтроллере STM32, причем и все схемы, и прошивка прилагается. Но вот незадача, никогда мы не занимались загрузкой прошивки в STM32, раньше работали только с AVR-ками. Не беда! В этой статье мы разберемся в этом вопросе, ведь загружать готовую прошивку в STM32 не сложнее, чем в старые добрые AVR-ки, а может даже и проще! Итак, поехали! Предыдущая статья здесь, все статьи цикла можно посмотреть тут: http://dimoon.ru/category/obuchalka/stm32f1.
Программатор
В предыдущей части мы познакомились с несколькими вариантами программатора ST-Link. В данном примере в качестве программатора я буду использовать отладочную плату stm32f4discovery, просто потому, что она у меня есть. Для того, чтобы использовать эту отладочную плату в качестве программатора, нужно сделать 2 вещи:
- Снять перемычки, соединяющие линии программирования встроенного ST-Link-а с микроконтроллером, распаянным на плате
- С помощью гребенки, на которую выведена шина SWD, подключить сигнальные линии программатора к внешнему микроконтроллеру
На картинке, приведенной далее, показана распиновка разъема SWD:
st-link/v2: Программирование через интерфейс SWD
На китайских отладочных платах с микроконтроллером stm32f103c8 имеется соответствующий разъем, через который можно загрузить прошивку в МК. Эти платы выглядят примерно так:
Пины на разъеме программирования подписаны как GND, CLK, DIO, 3V3. Соединение с программатором выполняется вот таким образом:
- GND — GND
- CLK — SWCLK
- DIO — SWDIO
У меня макеты выглядят вот так:
В данном случае отладочная плата с stm32f103c8 припаяна к «решету», на котором соединена с остальными компонентами на обратной стороне проводом в изоляции. Таким же проводом выполнено подключение программатора к отладочной плате:
Софт
Перейдем теперь к программной составляющей. Нам понадобится драйвер для программатора и управляющая софтина, через через которую мы будем загружать прошивку в микроконтроллер. Для этого нам нужно на официальном сайте www.st.com скачать пакет STM32 ST-LINK utility. А что нужно сделать перед скачиванием чего-нибудь с www.st.com? Правильно!
Надо у них зарегистрироваться.
[Шуточка про «нельзя просто так взять и скачать что-то с st.com»]
Кину ссылку на архив в конце статьи.
Итак, мы добыли архив с пакетом STM32 ST-LINK Utility. После установки подключаем программатор к ПК по USB и подключаем питание к отладочной плате. Если драйвера на программатор не установились автоматически, то идем в диспетчер устройств, там находим наш STM32 STLink, выбираем Обновить драйвер->Выполнить поиск на этом компьютере. После этого все должно заработать. Затем, из меню «Пуск» запускаем программу «STM32 ST-LINK Utility«:
Программирование микроконтроллеров STM32-это так просто!
Выглядит интерфейс ST-LINK Utility вот так:
Далее, нам необходимо произвести небольшие настройки. В меню выбираем Target->Settings…
Открывается вот такое окошко:
Выставляем настройки, как на скриншоте и нажимаем OK. После этого программатор автоматически подключится к прошиваемому микроконтроллеру. Пробежимся по кнопкам управления:
«Подключиться к микроконтроллеру» — выполняет подключение программатора к МК. При этом работа прошивки останавливается. После этого можно выполнять дальнейшие манипуляции с flash-памятью МК.
«Отключиться от микроконтроллера» — после того, как мы все сделали, нажимаем на эту кнопку и SL-Link отключается от МК, при этом запускается загруженная во flash-память прошивка.
«Очистить чип» — при нажатии на эту кнопку стирается вся flash-память микроконтроллера. Это необходимо делать перед загрузкой другой прошивки в МК.
Для того, чтобы прошить наш .hex или .bin файл в МК нужно сделать следующее. В меню выбираем Target->Programm…
После этого у нас открывается окошко выбора файла прошивки. Выбираем нужный нам файл, после чего появляется вот такое окно:
Здесь нам нужно нажать Start чтобы запустить процесс. После того, как прошивка была загружена в МК, нажимаем на кнопку «Отключиться от микроконтроллера«.
Те, кто раньше работал с микроконтроллерами AVR знают о такой вещи как фьюз-биты. Если в AVR-ках неправильно их выставить, то прошивка может работать некорректно. Для вас хорошая новость: в STM32 фьюз-битов нет! Достаточно просто залить в МК файл с управляющей программой и все будет работать.
Ну что ж, на этом, пожалуй, закончу, всем кто дочитал, спасибо за внимание Продолжение тут
Ссылки
Драйвер и софт для ST-Link: STM32 ST-LINK utility
Источник: dimoon.ru
STM32 ST-LINK utility для программатора/отладчика ST-LINK/V2.
Утилита ST-LINK utility предназначена для программирования микроконтроллеров STM8 и STM32 через программатор ST-LINK или ST-LINK/V2.
Скачать ST Link Utility можно с сайта компании STMicroelectronics. Сайт большой и к тому же на английском, поэтому легче попасть на страницу для скачивания, набрав в поиске «STSW-LINK004» или «ST-LINK utility».
Первая же ссыка приведет на страницу утилиты. Можно воспользоваться ссылкой http://www.st.com/web/catalog/tools/FM147/SC1887/PF258168, но гарантии, что попадете куда надо, нет.
Далее спускаемся вниз страницы, в раздел «Get Software» и скачиваем файл. Это будет архив stsw-link004.zip, в котором находиться установочный файл STM32 ST-LINK Utility_v3.2.1.exe. Версия может быть другая.
После запуска STM32 ST-LINK Utility_v3.2.1.exe начнется установка утилиты на компьютер. Будет установлена сама утилита ST-LINK utility и драйвер STLinkDriver.
Особенностей вроде никаких. Жмем везде «Next».
После установки подключаем STM32F4DISCOVERY к компьютеру через мини-USB и начинается процесс установки нового устройства.
В процессе установки может возникнуть сообщение о несовместимости оборудования с версией Windows. Я устанавливал на Windows 2008Server и всё встало нормально.
После установки выйдет окошечко о завершении.
Чтобы убедиться, можно посмотреть в Диспетчере устройств, появился там ST-Link или нет.
После запуска ST-Link utility и нажатия на кнопку с «вилкой» можно посмотреть что находиться в микроконтроллере отладочной платы STM32F4Discovery.
Утилита STM32 ST-LINK utility для программатора / отладчика ST-Link/V2 установлена и можно ею пользоваться. Далее нажимаем на соседнюю кнопку с серой вилкой и красным крестом для отключения от STM32F4 Discovery и закрываем программу.
Книги:
Источник: www.firsthand.ru
Делаем ST-Link V2.1 из китайского ST-Link V2
Привет, Хабр!
В данной статье расскажу как модифицировать ST-Link V2 до ST-Link V2.1.
Возможно для кого-то это не будет новостью, но особой инфы по данной теме в инете не нашел.
Кому интересно — прошу под кат.
Предисловие
Так уж случилось, что мне надоели лишние провода.
Немного подумав я вспомнил что на платах Nucleo и Discovery — ST-Link совмещает в себе SWD и VCP (Virtual Com Port).
Первое что пришло в голову — купить самую дешевую из подобных плат, попытаться сдампить прошивку в обход защиты и залить в программатор из китая, либо же развести новую плату.
Однако мне подсказали ссылку на GitHub с уже вытянутым загрузчиком, в итоге получилось то что получилось.
Приступаем к работе
Модификацию можно произвести только на версии софта под Windows, кроссплатформенная версия софта отказывается обновлять девайс!
Есть несколько вариантов модификации, и часть из них нельзя сделать если чип не подходящий (не хватит памяти).
Например, модификацию STM32+MSD+VCP можно сделать только если чип STM32F1xxCBxx, однако у нее есть аналог STM32+Audio, который даст STM32+VCP (в принципе что нам и требуется).
— Паяльник;
— Мультиметр с прозвонкой;
— ПК с ОС Windows (может получится через Wine, не пробовал);
— Архив с нужным софтом и бутлоадером (PASS: QWK2tn+fM.EdjX6z).
— Китайский клон ST-Link V2;
— USB-UART адаптер либо второй ST-Link.
Вскрываем.
Платы и чипы во всех разные
Прошивка
Есть два пути — USB-UART (немного сложнее) либо второй ST-Link.
USB-UART
1) Прозвонкой находим резистор который подключен к BOOT0.
Делаем перемычку от стороны этого резистора которая подключена к BOOT0 к 3.3v.
PA9(TX) может быть подключен к светодиоду или резистору рядом с ним, потому прозваниваем.
Подпаиваем UART на PA9(TX) и PA10(RX).
Я делал это так:
Так же подпаиваем питание.
Прошиваем загрузчик Protected-2-1-Bootloader.bin с помощью STM32 Flash loader demonstrator.
После прошивки отпаиваем перемычку, PA9 и PA10 (PA10 оставляем если хотим вывести SWO).
ST-Link
На платах есть по 4 контакта, в некоторых случаях они уже промаркированы, в противном же случае прозваниваем их относительно PA13(SWDIO) и PA14(SWCLK), подпаиваемся вторым ST-Link.
Так же подпаиваем питание.
Устанавливаем STM32 ST-LINK Utility V4.3 из архива, снимаем защиту от записи и прошиваем загрузчик Protected-2-1-Bootloader.bin.
Для снятия защиты в программе STM32 ST-LINK Utility жмем Target > Option Bytes, переключаем Read Out Protection в Disabled и жмем Apply.
Обновление до ST-Link V2.1
После прошивки подключаем прошитый ST-Link (уже почти V2.1) к ПК.
В программе STM32 ST-LINK Utility V4.3 жмем ST-LINK > Firmware update.
Жмем Device Connect — получаем список возможных модификаций:
Выбираем нужную вам модификацию, в моем случае STM32+MSD+VCP, жмем Yes >>>>.
Ждем пока завершится обновление…
Завершающая часть
Так как SWIM и RST после такой модификации не работают — отрезаю их.
Так же отрезаю дублирующие 5V и 3.3V.
Получается 4 свободных пина.
На них подпаиваюсь проводками к чипу:
PA10 -> SWO
PB0 -> NRST
PA3 -> RX
PA2 -> TX
Вывожу все на основной разъем, на оставшиеся свободные пины.
Получилась такая распиновка:
Мой девайс после модификации
Накарябал скальпелем маркировку на корпусе:
Не забываем отмыть плату после пайки!
В итоге, в ПК девайс определяется так:
Я без понятия чему равен объем виртуальной флешки (в данном случае к ST-Link V2.1 был подключен F103C8).
Если на нее закинуть файл прошивки — программатор прошьет чип без программ.
Спасибо за внимание!
При копировании попрошу оставлять ссылочку на первоисточник.
С вопросами обращайтесь в комментарии, чем смогу — помогу.
- Программирование микроконтроллеров
- DIY или Сделай сам
- Лайфхаки для гиков
- Электроника для начинающих
Источник: habr.com
ST-Link v2
ST-Link/V2 специальное устройство разработанное компанией ST для отладки и программирования микроконтроллеров серии STM8 и STM32. Про сам прибор можно прочитать на сайте компании ST.
Основные его возможности:
- Выход 5В для питания устройства
- USB 2.0 высокоскоростной интерфейс
- SWIM, JTAG/serial wire debugging (SWD) интерфейсы
- SWIM поддержка низкоскоростного и высокоскоростного режимов
- SWD and serial wire viewer (SWV)
- Возможность Обновление прошивки
Так как микроконтроллеры STM32 построены на ядре ARM Cortex, которое имеет интерфейс отладки SWD, то ST-Link позволяет программировать и отлаживать и другие 32-битные микроконтроллеры на базе ARM-Cortex.
Это, можно сказать, единственный программатор микроконтроллеров STM8. Для программирования STM32 существуют и другие универсальные программаторы.
Где можно купить программатор STM8 STM32 ST-Link
На текущий момент интерес к микроконтроллерам ST очень большой. Поэтому программатор ST link довольно широко распространен на рынке. Существует несколько версий, отличающихся по цене.
Оригинальный ST Link от компании ST, как всегда, самый дорогой вариант. Стоит больше 2 000 руб.
Мини ST link (очень похож на наш вариант этого программатора) стоит около 600 руб. Купить его можно у крупных поставщиков электроники — Компэл, Терра электроника и другие.
Ali express (Китай) — тут предлагается большое количество самых простых вариантов Программатора, но в общем, они все рабочие, ими вполе можно пользоваться. Как правило они годятся для программирования STM8 и STM32. Единственное, они не имеют SWO выхода, но он нужен не так часто. Пожалуй, единственный минус тут, это ожидание покупки. Стоимость около 150-200 руб.
Если вам не нужен программатор STM8, а нужна только серия STM32, то хорошим вариантом будут платы Discovery от ST, они имеют на бору и программатор ST link. Однако, как правило, разъем для программирования STM8 там не разведен.
Ну и конечно, можно просто купить детали и сделать данное устройство самостоятельно. В основе лежит не самый дешевый микроконтроллер STM32, да и купить детали дешево не так просто, так что, стоимость будет от 300 до 400 рублей. В данной статье мы будем рассказывать, как собрать данный прибор самостоятельно из набора необходимых SMD компонент. Конечно же мы рекомендуем пойти этим путем. Только так вы сможете научится трассировке плат, их изготовлению и паянию.
Как изготовить программатор ST-LINK V2
1. Прочитать эту статью внимательно и до конца!
2. Подготовить или приобрести необходимые инструменты: все для пайки, USB UART адаптер (будет нужен для программирования МК)
3. Внимательно прочитать статьи из раздела Обязательная теория.
4. Скачать необходимые файлы по данному прибору с github.
5. Изготовить плату для прибора самостоятельно (это совсем несложно, в нашей инструкции все подробно описано).
6. Приобрести все необходимые комплектующие можно в нашем магазине за 300 руб.
7. Запаять все компоненты на плату, смотри наше видео.
ПРИБОР ГОТОВ, можно пользоваться!
Поиск схемы для ST Link программатора, отладчика
Сама компания ST не дает нам схему данного прибора, однако есть схемы ее ознакомительных плат серии DISCOVERY, в которых приводится и схема отладчика. Например документ UM0919. Но она не полная, там присутсвует только SWD интерфейс. В основе микроконтроллер STM32F103C8T6.
Вторая схема, которая есть в документе UM1670, содержит выводы SWIM выходов, но это уже версия V2.2 на другом микроконтролере STM32F103CBT6.
Также в интернет удалось найти схему ST-LINK v2, восстановленную по оригинальному прибору:
Вот из этих трех схем нам надо разработать схему для нашего устройства. Но сначала давайте составим основные требования к прибору, который мы будем делать.
Требования к нашему ST-LINK
Мы будем делать приборы на базе STM8, а также STM32, процессоров NUVOTON Cortex-M0, ATMEL. Все они будут питаться от 3.3В или 5В. Так что, нам не нужна возможность работать с микроконтроллерами на напряжении 1.8В. Но сама возможность программировать STM8 нужна обязательно.
Мы делаем прибор для своих задач, поэтому у нас нет необходимости в стандартных разъемах SWIM и JTAG. Будет делать такой разъем, который удобнее для трассировки платы.
Версия 2.2 на микроконтролере STM32F103CBT6 добавляет второе USB устройство — COM порт UART, но он уже у нас есть, так что, нет смысла переплачивать, микроконтроллер там дороже. Правда у него есть хорошая возможность — прошивка через интерфейс DFU, то есть микроконтроллер видится как флешка при подключении по USB, и прошивку просто надо скопировать на диск. Но прошить надо будет один раз, и для этого у нас есть USB UART адаптер, прошивать первый раз будет через него. Дальнейшее обновление прошивки идет уже через программу от ST по USB. Мы будем делать версию 2.0 на базе STM32F103C8T6.
Оригинальная версия ST-Link содержит микросхему преобразования уровней, что удобно для отладки и прошивки готового устройства, и необходимо для работы с напряжением ниже 3.3В. У нас таких не будет, а для работы с 5В и 3.3В — преобразование уровней не нужно.
Прибор будем делать в формате USB dongle, соответсвенно будет использоваться разъем USB-A male.
На защите выходов можно сэкономить, так что не будем использовать защитные диоды. Достаточно будет сопротивлений на всех выходах разъемов на случай, если вдруг мы их подключим на 5В или землю. Надо обязательно иметь в виду, что пользоваться данным прибором надо аккуратно! Все выходы при подключении проверять несколько раз!
Выход 3.3В больше защищен, он идет через регулятор напряжения, защищающий от КЗ. Так что, лучше питать тестовые схемы от него!
Теперь можно составить финальную схему нашего ST-Link.
В интернет предложено много готовых плат и схем данного прибора, но в целях обучения мы специально строим схему и делаем плату сами, основываясь на DATASHEET, выложенных проиводителем. Если вы копируете схему с какого либо другого сайта вы должны в ней разобраться, что и как там сделано, почему выкинули или добавили какие-то элементы.
Финальная схема
Саму схему вы можете посмотреть в файлах данного прибора. Здесь же приведем ее для комментирования основных узлов.
Питание и разъемы:
В качестве регулятора питания на 3.3в используем NCP603 — очень хороший LDO, выдает ток до 300ма с падением 300mv и точностью +-3%. Светодиоды индикации — обычные smd светодиоды двух цветов. Для программирования по UART необходимо вывод BOOT0 соединить с +3В, для этого выведем его на разъем. Также необходимо вывести сам UART — ножки RX TX. Все остальные выводы без защиты выведем на разъем.
Пользуюсь этим программатором уже больше года, и кз были и помехи — ничего не сгорело ни разу.
В некоторых схемах ставится самовостанавливающийся предохранитель на питание от USB для защиты самого порта. Современные компьютеры имеют защиту на портах USB, в том числе предохранители и токовые ограничивающие ключи, так что он не нужен. Но лучше конечно не проверять это, и не ошибаться! Напряжение 3.3в идет с нашего LDO , который имеет защиту от КЗ и от перегрева, и не выдает больше 600ма , там тоже защищать нечего.
Очень удобно подключать STM8 для программирования с помощью ST-Link, нужно всего 3 провода — питание, земля и SWIM выход. Это так же удобно при разводке плат, можно разводить только SWIM выход, землю и питание всегда можно найти на плате.
Трассировка платы в Kicad с помощью автотрассировщика Topor
В приборе USB UART адаптер мы уже тренировались трассировать плату в Kicad вручную. Данный прибор чуть сложнее. На нем можно поучиться разводить плату в автотрассировщике TOPOR. Весь процесс лучше просмотреть на видео в конце статьи, здесь будут лишь небольшие комментарии к видео.
Подготовка платы к автотрассировке
Для того, чтобы работать с Topor, надо сначала подготовить плату в Kicad. Необходимо определить границы платы, импортировать все компоненты и предварительно их расположить. У нас нет требований к разъемам, поэтому на первом этапе лучше сам разъем удалить с платы. Так как каждый вывод разъема соединен через резистор, то резисторы и будут ориентиром выводов разъема. Также для расстановки компонент можно удалить все конденсаторы питания, кварцы, микросхемы питания (их лучше располагать на обратной стороне — там обычно много места) — это все можно расставить потом.
Теперь необходимо определить сторону кажого копонента. И примерно расположить их как необходимо, разъемы расположить у края. И на этом этапе можно все это перебросить в Topor и там продолжить размещение копонентов. USB разъем, светодиоды сразу располагаем на обратной стороне, все остальное на лицевой.
Размещение компонентов с помощью Topor
Теперь переносим это все в Topor и продолжаем там. Чем хорош Topor? Тем, что каждый раз, подвигав компоненты, можно перепроложить все трассы автоматически и посмотреть стало лучше или хуже. Также Topor умеет переворачивать простые компоненты — резисторы, конденсаторы. Нам важно понять как удобнее расположить выводы разъемов, и основные компоненты.
Покрутив и подвигав компоненты в Topor мы пришли к такому расположению:
Теперь необходимо этот результат перекинуть в Kicad обратно и добавить остальные компоненты. Перед финальной трассировкой необходимо:
- расположить микросхемы питания
- развести вручную цепи питания
- распложить и подключить кварц, и конденсаторы питания
- переопределить выводы разъема на схеме.
Автотрассировка
Перебрасываем нашу полутрассировку в Topor.
Необходимо сразу установить правила трассировки — ширину зазоров, дорожек, размеры переходных отверстий. При первом импорте из Kicad надо выделить все компоненты и зафиксировать их, чтобы можно было легко удалить кнопкой del и заново перепроложить трассировку, оставляя наш полуручной вариант. В параметрах автотрассировки обязательно необходимо установить галку «Использовать имеющуюся разводку в качестве начального варианта», иначе наши ручные трассы будут перепроложены (Сам процесс работы в Topor смотри на видео).
После автотрассировки перебрасываем все обратно и доводим до финального варианта — добавляем земляные полигоны, выравниваем где необходимо дорожки. Плата готова.
Финальный вариант платы
Обратная сторона
Прошивка ST Link, установка драйверов
Плата готова, делаем ее методом холодного переноса тонера ацетоном (или любым другим), травим, собираем прибор. Перед первым включением, обязательно проверьте любым мультиметром, что между 5В и GND сопртивления нет (бесконечно велико) — это будет гарантировать, что нет короткого замыкания. Также надо проверить сопротивление между 3.3В и GND.
Для работы с нашим устройством необходимо установить драйвера, прошить его первый раз по UART стартовой прошивкой и потом обновить прошивку до последней версии специальной программой от ST.
Все микроконтроллеры STM32 имеют bootloader и прошиваются по UART. Для прошивки необходимо:
- скачать с сайта ST программу «STM32 Flash loader demonstrator» по ссылке (необходимо зарегистрироваться у них на сайте).
- установить ее, все как обычно — далее далее далее — готово.
- подключить наш ST link для программирования временными проводками:
- Соединяем выводы программирования PROG_RX и PROG_TX (см. схему в Kickad на github) и USB/UART модуль — наш RX на TX модуля, наш TX на RX модуля.
- В USB ST Link не включаем, подключаем 5В с UART модуля и GND на любой наш разъем (например на разъеме SWIM есть 5В и GND) — то есть запитаем от нашего модуля (если у вас свой модуль без питания, то можно сразу подключить ST-Link в USB разъем, тогда надо будет только соединить TX и RX, только не забудьте на вашем модуле необходимо выбрать 3.3в)
- Подключем BOOT0 на выход 3.3В (можно просто держать проводок при подключении питания) — это необходимо для перехода в bootloader


Теперь у нас есть ST LINK, но со старой прошивкой. Убираем все провода. Скачиваем с сайта ST программу обновления прошивки STSW-LINK007 и драйвера STSW-LINK009 для windows. Вставляем новоиспеченный ST-Link в USB порт компьютера, и запускаем программу обновления прошивки, в ней жмем CONNECT и потом обновить прошивку до последней версии. Прибор ГОТОВ!
Теперь у вас есть программатор-отладчик и можно перейти к программированию.
Готовое устройство
Самостоятельная работа
Потренируйтесь разводить плату. Сделайте это вручную, с помощью программы Topor и без. Вы должны уметь быстро делать любую несложную плату.
Источник: myowndevice.ru