Введение в STM32CubeProgrammer

STM32CubeProgrammer — актуальный бесплатный кроссплатформенный инструмент STMicroelectronics для чтения, стирания, программирования и проверки памяти STM32. Он поддерживает ST-LINK по SWD/JTAG, а для микросхем с соответствующим системным загрузчиком — UART, USB DFU, I²C, SPI или CAN.

Используйте актуальное руководство и документацию точной модели: интерфейсы, загрузочные выводы, карта памяти, option bytes и защита зависят от STM32 и версии программы.

Пользовательский интерфейс STM32CubeProgrammer

STM32CubeProgrammer предоставляет как графический, так и командный интерфейс пользователя. Кроме того, он также предоставляет API C++, и пользователи могут интегрировать функции STM32CubeProgrammer в разрабатываемые ими приложения для ПК.

Overview of STM32CubeProgrammer
Overview of STM32CubeProgrammer

Как показано на рисунке выше, в области настроек справа пользователи могут выбрать подключение к микроконтроллеру STM32 через отладочный интерфейс STLink или коммуникационные интерфейсы, такие как USB и UART. После подключения к микроконтроллеру STM32 в области «Информация об устройстве» можно увидеть текущую модель MCU, версию и размер Flash-памяти. Если подключена официальная плата разработчика ST, также будет отображено название платы разработчика.

Функции STM32CubeProgrammer

STM32CubeProgrammer поддерживает стирание и чтение/запись встроенной памяти микроконтроллеров STM32 через отладочный интерфейс SWD/JTAG STLink или через интерфейсы связи, такие как UART, USB, I2C, SPI и CAN, с использованием заводского загрузчика системы, хранящегося внутри микросхемы.

Ниже приведены основные функции STM32CubeProgrammer:

Стирание и программирование

STM32CubeProgrammer поддерживает стирание отдельных секторов и полное стирание микросхемы флэш-памяти. Он может импортировать различные форматы файлов для программирования, включая двоичные (.bin), elf (.elf, .axf, .out), шестнадцатеричные (.hex) и Motorola S-record (.srec) файлы.

Erasing and Programming of STM32CubeProgrammer
Erasing and Programming of STM32CubeProgrammer

Операция удаления

После установления соединения с целевым микроконтроллером через STLink вы можете стереть секторы Flash на странице «Erasing & Programming» (Стирание и программирование) по секторам или выполнить полное стирание микросхемы, нажав кнопку «Full chip erase» (Полное стирание микросхемы).

Программирование Операция

На странице «Стирание и программирование» вы можете нажать кнопку «Обзор», чтобы импортировать исполняемый файл, а затем нажать «Начать программирование», чтобы запустить процесс программирования.

В качестве альтернативы на странице «Редактирование памяти и файлов» можно открыть исполняемый файл, который необходимо запрограммировать, а затем нажать «Загрузить», чтобы начать программирование.

На странице «Редактирование памяти и файлов» в разделе «Память устройства» вы также можете прочитать значения памяти микроконтроллера в указанном диапазоне адресов и сохранить прочитанное содержимое в виде двоичных (.bin), шестнадцатеричных (.hex) или S-записей (.srec) с помощью меню «Сохранить как».

Помимо программирования всего исполняемого файла, вы можете напрямую изменить значение по определенному адресу на странице «Memory & File Edition» в разделе «Device Memory». После нажатия «Enter» STM32CubeProg автоматически прочитает, изменит, сотрет и запишет обратно. Этот метод можно использовать для программирования однократно программируемых (OTP) байтов.

Чтение/запись опционного байта

На странице OB (Option Byte) можно просмотреть текущие настройки опционных байтов для подключенного микроконтроллера. Здесь также можно изменить значения опционных байтов. Подробное описание опционных байтов см. в справочном руководстве по конкретному микроконтроллеру.

Option bytes Reading and Writing of STM32CubeProgrammer
Option bytes Reading and Writing of STM32CubeProgrammer

Программирование «два в одном»

Используя режим программирования «Два в одном» на странице «Стирание и программирование», вы можете запрограммировать как флэш-память, так и опционные байты за одну операцию. Настройка опционных байтов выполняется с помощью «STM32CubeProgrammer command-line» с командой «-ob». Например, чтобы установить защиту от чтения на уровень 1 после программирования флэш-памяти, выполните следующие действия:

  • Установите путь к исполняемому файлу, который необходимо загрузить.
  • Установите флаги «Полное стирание чипа» и «Загрузить файл» в разделе «Автоматический режим».
  • В поле ввода «Option bytes commands» (Команды опционных байтов) введите «-ob rdp=0xBB».
  • Нажмите «Start automatic mode» (Запустить автоматический режим), и STM32CubeProgrammer последовательно выполнит указанные операции, отображая ход выполнения в окне журнала.
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer
2 in 1 Programming-Automatic Mode of STM32CubeProgrammer

Подробные сведения о формате команды «-ob» см. в разделе 3.2.15 документа UM2237 (Руководство пользователя программного инструмента STM32CubeProgrammer). Определения полей OptByte в команде «-ob» не объясняются в UM2237, но их можно найти, просмотрев вкладку «Option bytes» (Байты опций) в графическом интерфейсе STM32CubeProgrammer, поскольку определения в команде «-ob» соответствуют тем, что указаны здесь. В качестве альтернативы можно использовать команду «-ob displ» для отображения текущей конфигурации всех байтов опций, что позволит понять определения каждого поля OptByte.

Чтение/запись внешней памяти

Если вы хотите читать/записывать данные во внешнюю память, подключенную к STM32 через интерфейсы SPI, FMC, QSPI, вам понадобится внешний загрузчик. CubeProgrammer предоставляет стандартные внешние загрузчики, соответствующие внешней памяти, встроенной в платы разработчика STM32. Если вы используете другую модель памяти, вы можете создать свои собственные файлы внешнего загрузчика (*.stldr). Подробные инструкции см. в разделе 2.3.3 UM2237.

External Memory Programming of STM32CubeProgrammer
External Memory Programming of STM32CubeProgrammer

Перед выполнением операций с внешней памятью необходимо выбрать соответствующий внешний загрузчик на странице «External Loader» (Внешний загрузчик). Этот внешний загрузчик будет использоваться в последующих операциях стирания и программирования внешней памяти на страницах «Erasing & Programming» (Стирание и программирование) и «Memory & File Edition» (Редактирование памяти и файлов).

Загрузчик

Многие STM32 содержат заводской загрузчик в системной памяти. Периферия, выводы, режим запуска и требования к тактированию зависят от микросхемы и проверяются по AN2606. Для такого соединения ST-LINK не требуется, а поколение V2/V3 не определяет интерфейс загрузчика MCU.

Bootloader of STM32CubeProgrammer
Bootloader of STM32CubeProgrammer

Есть два разных пути: отладочный пробник по SWD/JTAG или системный загрузчик STM32 через интерфейс, поддерживаемый точной моделью. Нельзя определять поддержку UART/USB/I²C/SPI/CAN по версии ST-LINK; перед подключением проверьте запись устройства в AN2606.

Окно ввода информации SWO

В процессе разработки часто возникает необходимость вывода отладочной информации. Один из распространенных методов — перенаправление вывода printf на последовательный порт, что занимает один последовательный порт. Другой метод — перенаправление вывода printf на вывод SWO (Serial Wire Output) через интерфейс отладки SWD, что позволяет отправлять отладочную информацию через SWO. Окно SWV (Serial Wire Viewer) STM32CubeProgrammer может отображать отладочную информацию, отправленную через SWO, и сохранять всю полученную информацию в указанный файл «.log».

Serial Wire Viewer of STM32CubeProgrammer
Serial Wire Viewer of STM32CubeProgrammer

Интерфейс командной строки

STM32CubeProgrammer предоставляет интерфейс командной строки, который позволяет выполнять большинство его функций путем выполнения команд. Исполняемый файл «STM32_Programmer_CLI.exe» находится в папке «bin» установочного каталога STM32CubeProgrammer. При запуске «STM32_Programmer_CLI.exe» отобразится список поддерживаемых команд и их параметров.

Command Writing of STM32CubeProgrammer
Command Writing of STM32CubeProgrammer

Интерфейс командной строки также предоставляет некоторые функции, недоступные в графическом интерфейсе, такие как создание доверенных пакетов, безопасное программирование, вычисление значений CRC и многое другое. Подробные инструкции см. в UM2237. Пример на рисунке демонстрирует подключение к целевому чипу через интерфейс SWD и установку уровня защиты от чтения 1 с помощью командной строки. Полная команда: «STM32_Programmer_CLI.exe -c port=SWD -ob rdp=0xBB».

Обновление прошивки STLink

После подключения отладчика STLink к компьютеру откройте STM32CubeProgrammer и обновите соединение STLink, чтобы просмотреть текущую версию прошивки STLink. Нажмите кнопку «Обновление прошивки» и откройте инструмент STLinkUpgrade, чтобы обновить версию прошивки STLink.

Firmware Upgrade of ST-LINK of STM32CubePorgrammer
Firmware Upgrade of ST-LINK of STM32CubePorgrammer

Как использовать STM32CubeProgrammer?

STM32CubeProg — это комплексный инструмент программирования, который включает в себя такие типичные операции, как чтение, запись (загрузка/программирование), стирание и программирование опционных байтов.

Среда установки

Актуальные выпуски поддерживают документированные версии Windows, Linux и macOS. Начиная с STM32CubeProgrammer 2.6.0 пакет содержит собственную JRE, поэтому отдельная установка Java не нужна. На следующих снимках показана старая версия 2.5.0b.

Подключение микросхем и STM32CubeProg

При использовании STM32CubeProgrammer для подключения к целевой плате через STLINK могут возникнуть случаи, когда подключение не удается. Это может быть связано с низкой версией прошивки в STLINK. Чтобы решить эту проблему, нажмите кнопку «Обновление прошивки», чтобы выполнить обновление прошивки. Во время процесса обновления может потребоваться несколько раз подключить и отключить устройство. После завершения обновления отключите и снова подключите устройство один раз, чтобы STM32CubeProgrammer распознал STLINK.

Программирование и отладка микросхем

После завершения отладки программы необходимо запрограммировать чип с помощью вашего кода. Обычно у вас есть три варианта:

  1. Использовать интерфейс отладки JTAG/SWD для программирования микросхемы, что часто требует использования программного обеспечения STLink Utility или STVP.
  2. Запрограммируйте чип через интерфейс UART, используя демонстрационное программное обеспечение STM32 Flash loader на ПК.
  3. Запрограммировать микросхему через интерфейс USB, используя программное обеспечение USB DfuSe.

Программирование с помощью ST-LINK

Programming with ST-LINK _ STM32CubeProgrammer
Programming with ST-LINK _ STM32CubeProgrammer

Программирование с помощью UART

Programming with UART_ STM32CubeProgrammer
Programming with UART_ STM32CubeProgrammer

Программирование с помощью USB

Programming with USB_ STM32CubeProgrammer
Programming with USB_ STM32CubeProgrammer

Для USB DFU установите требуемый для точного MCU режим загрузки из системной памяти, используйте актуальный пакет и проверьте определение устройства документированным драйвером. Удаление старых DFU-инструментов или запуск STM32Bootloader.bat не являются универсальным требованием.

STM32CubeProgrammer CLI и контролируемая проверка

CLI подходит для повторяемых процедур разработки, проверки и сервиса, но требует контролируемых входных данных и сохранённых результатов.

  • Записывайте версию, точный Device ID, интерфейс, хеш образа, адрес загрузки, состояние option bytes и результат read-back verification. Файл BIN не содержит адреса загрузки.
  • Согласно актуальным FAQ и лицензии ST, STM32CubeProgrammer предназначен для разработки, а не для производственного программирования. В серийном производстве используйте одобренное решение.

Поделиться:

Прокрутить вверх

Instant Quote

Мгновенный расчет