ST-Link V2: программы для прошивки микроконтроллеров STM32

Программатор ST-Link V2 сам по себе не прошивает микроконтроллер — для записи прошивки в STM32 требуется отдельная программа на компьютере, и чаще всего проблемы начинаются именно на этапе её выбора: одна утилита не видит устройство, другая сообщает об ошибке No target connected, третья вообще не определяет чип. Причина обычно кроется в отсутствующем драйвере, неверном подключении линий SWD или устаревшей прошивке самого программатора, а не в неисправности микросхемы.

В этой статье разберём, какие программы подходят для прошивки через ST-Link V2, как установить драйверы, подключить программатор к целевой плате и выполнить запись прошивки. Отдельно рассмотрим типовые ошибки и способы их диагностики, чтобы вы могли проверить каждый шаг самостоятельно.

Официальным инструментом STMicroelectronics на сегодня является STM32CubeProgrammer — универсальная утилита, которая поддерживает прошивку по интерфейсам SWD, JTAG, UART и USB. Она пришла на смену более старой программе ST-LINK Utility, которая, впрочем, до сих пор используется многими разработчиками благодаря простому интерфейсу.

Помимо официальных решений, существуют альтернативы из экосистемы открытого ПО. Выбор зависит от ваших задач: разовая прошивка готового hex-файла, отладка кода или автоматизация процесса через командную строку.

  • 🛠️ STM32CubeProgrammer — официальная утилита ST с графическим интерфейсом и версией для командной строки; рекомендуемый вариант для большинства задач.
  • 📦 ST-LINK Utility — устаревшая, но рабочая программа; больше не обновляется, однако подходит для простых операций чтения и записи.
  • 🔧 OpenOCD — консольный инструмент с открытым кодом, часто применяется в связке со средами разработки для отладки.
  • ⚙️ stlink (texane/stlink) — неофициальный набор утилит для Linux и macOS, популярный у пользователей Unix-систем.

Если вы прошиваете микроконтроллер впервые, начните с STM32CubeProgrammer: программа бесплатна, доступна для Windows, Linux и macOS, а скачать её можно с официального сайта STMicroelectronics после регистрации.

📊 Какую программу вы используете для прошивки через ST-Link V2?
STM32CubeProgrammer
ST-LINK Utility
OpenOCD
Ещё не определился

Без корректно установленного драйвера ни одна программа не увидит программатор. На Windows устройство должно определяться в диспетчере устройств как STMicroelectronics STLink dongle в разделе контроллеров USB. Если вместо этого вы видите неизвестное устройство с жёлтым восклицательным знаком — драйвер не установлен или встал с ошибкой.

Драйвер распространяется вместе с пакетом STSW-LINK009 (подписанные драйверы USB) либо устанавливается автоматически вместе с STM32CubeProgrammer. Порядок действий вручную выглядит так:

  • 💾 Скачайте пакет драйверов с сайта STMicroelectronics и распакуйте архив.
  • 🖱️ Запустите установщик, соответствующий разрядности вашей системы (для 64-битной Windows — файл с суффиксом amd64).
  • 🔌 Подключите ST-Link V2 к USB-порту только после завершения установки.
  • ✅ Проверьте диспетчер устройств: программатор должен появиться без предупреждающих значков.

⚠️ Внимание: дешёвые клоны ST-Link V2 в металлическом корпусе иногда продаются с устаревшей внутренней прошивкой. Если программа предлагает обновить прошивку программатора через функцию ST-LINK → Firmware update, делайте это только при стабильном USB-подключении — прерывание обновления может вывести устройство из строя.

Прошивка выполняется по интерфейсу SWD, для которого достаточно четырёх линий: SWDIO, SWCLK, GND и 3.3V. Распиновку разъёма вашего программатора следует сверить с его документацией или шелкографией на корпусе — у клонов она может отличаться от оригинала, и подключение «по памяти» нередко становится причиной ошибки связи с чипом.

Обратите внимание на питание целевой платы. Вывод 3.3V на ST-Link V2 в первую очередь служит для определения уровня напряжения целевого устройства, а не для его полноценного питания. Если плата потребляет заметный ток, запитайте её отдельно, а линию 3.3V всё равно подключите — без неё программатор не сможет согласовать логические уровни.

Для надёжного соединения придерживайтесь простых правил: провода делайте короткими, общий провод (GND) подключайте первым, а при нестабильной связи попробуйте снизить скорость SWD в настройках программы.

Прошивка через STM32CubeProgrammer: пошагово

После установки программы и драйверов процедура записи прошивки занимает несколько минут. Запустите STM32CubeProgrammer, в правой части окна выберите тип подключения ST-LINK и нажмите кнопку Connect. Если всё подключено верно, в логе появится информация о целевом чипе, а в основной области отобразится карта памяти.

☑️ Проверка перед прошивкой

Выполнено: 0 / 5

Далее перейдите на вкладку Erasing & programming, укажите путь к файлу прошивки в формате .hex, .bin или .elf и нажмите Start Programming. Для bin-файлов программа запросит адрес загрузки — для большинства STM32 это начало флеш-памяти 0x08000000, но для конкретной модели этот адрес стоит уточнить в её документации.

После завершения записи полезно включить опцию верификации — программа сверит содержимое памяти чипа с исходным файлом и подтвердит, что прошивка легла без искажений.

Те, кто привык к ST-LINK Utility, найдут аналогичную логику: подключение через Target → Connect, загрузка файла через File → Open file и запись командой Target → Program & Verify. Учтите, что программа давно не обновляется, и с новыми сериями микроконтроллеров она может не работать — в таком случае переходите на CubeProgrammer.

Для автоматизации удобна консольная версия STM32_Programmer_CLI, входящая в состав CubeProgrammer. Пример команды записи прошивки:

STM32_Programmer_CLI -c port=SWD -w firmware.hex -v -rst

Здесь флаг -v включает верификацию после записи, а -rst перезапускает микроконтроллер по завершении. Точный синтаксис и доступные опции зависят от версии утилиты, поэтому сверяйтесь с встроенной справкой через параметр -h.

Что делать, если чип защищён от чтения (RDP)

Если микроконтроллер ранее был защищён опцией Read Out Protection, программа сообщит о невозможности чтения. Снятие защиты выполняется через опцию сброса RDP в STM32CubeProgrammer, но при этом вся флеш-память автоматически стирается — восстановить прежнюю прошивку после этого невозможно.

Типичные ошибки и их диагностика

Большинство сбоев при работе со ST-Link V2 сводится к нескольким повторяющимся сценариям. Ниже — таблица с частыми ошибками и направлениями проверки. Точные формулировки сообщений могут отличаться в зависимости от версии программы.

Сообщение об ошибкеВозможная причинаЧто проверить
No ST-LINK detectedДрайвер не установлен или устройство занято другой программойДиспетчер устройств, закройте вторую копию утилиты
No target connectedОбрыв линий SWD или нет питания платыКачество контактов, питание целевого устройства
Cannot connect to targetЧип в режиме сна или SWD отключён в прошивкеПодключение с удержанием сброса (connect under reset)
Error during flash programmingЗащита секторов или повреждённый файлОпционные байты, целостность hex-файла
Unknown device / target IDУстаревшая прошивка программатораОбновление прошивки ST-Link

Отдельно стоит сказать о ситуации, когда микроконтроллер перестал отвечать после загрузки собственной прошивки, в которой пины SWD переназначены под другие функции. В этом случае помогает режим Connect Under Reset или подключение линии NRST к программатору: чип удерживается в сбросе, и отладчик успевает захватить управление до старта пользовательского кода.

⚠️ Внимание: не подавайте на целевую плату напряжение выше допустимого для неё и не подключайте линию 3.3V программатора к плате, уже запитанной от собственного источника с другим уровнем напряжения — несогласованные уровни могут повредить как микроконтроллер, так и сам ST-Link.

Оригинал и клоны: на что обратить внимание

Оригинальный ST-Link V2 от STMicroelectronics и многочисленные недорогие клоны функционально близки, но есть нюансы. Клоны могут поставляться со старой версией внутренней прошивки, из-за чего свежие версии CubeProgrammer будут требовать обновления. Кроме того, распиновка разъёма у клонов не всегда совпадает с оригиналом, а качество сборки варьируется от партии к партии.

Перед первым использованием клона разумно проверить напряжение на выводе 3.3V мультиметром и убедиться, что оно соответствует ожидаемому уровню. Прежде чем прошивать целевое устройство, убедитесь, что его схема рассчитана на уровень 3.3V, а не 5V — подача неподходящего уровня на линии SWD способна вывести чип из строя.

Если клон отказывается обновлять прошивку штатными средствами, не пытайтесь принудительно перепрошить его сторонними методами без чёткого понимания процесса — в сети встречаются инструкции, после которых устройство восстановлению не подлежит.

Часто задаваемые вопросы

Можно ли прошить через ST-Link V2 микроконтроллеры других производителей?

ST-Link V2 предназначен для микроконтроллеров STM32 и STM8 (для STM8 используется интерфейс SWIM). Прошивка чипов других производителей штатно не поддерживается, хотя через OpenOCD в отдельных случаях возможна работа с некоторыми сторонними ARM-контроллерами — это зависит от конкретной модели и требует проверки.

Программа пишет «No target connected», хотя всё подключено. Что делать?

Проверьте питание целевой платы, целостность проводов SWDIO/SWCLK и наличие общего провода GND. Попробуйте снизить частоту SWD в настройках подключения и использовать режим Connect Under Reset. Если плата ранее прошивалась кодом, отключающим SWD, подключите линию NRST.

Чем отличается ST-Link V2 от V3?

Версия V3 — более современное поколение программатора с повышенной скоростью обмена и дополнительными интерфейсами (виртуальный COM-порт, работа с разными уровнями напряжения). Для базовой прошивки STM32 возможностей V2 в большинстве случаев достаточно.

Нужно ли питать плату отдельно во время прошивки?

Если плата потребляет небольшой ток и рассчитана на 3.3V, её можно запитать от программатора. Для плат с заметным энергопотреблением или собственным источником питания используйте штатное питание платы, а линию 3.3V от ST-Link подключите для согласования уровней — согласно документации на вашу конкретную плату.

Какой файл прошивки выбрать: hex, bin или elf?

Для разовой записи удобнее hex или elf, так как в них уже содержится информация об адресах загрузки. Формат bin — это «сырой» образ без адресов, поэтому при его записи адрес начала флеш-памяти придётся указать вручную (для большинства STM32 это 0x08000000, но уточняйте по документации на вашу модель).