Как программировать платы на основе STM32 с помощью утилиты ST-Link?

В этой статье объясняется, как запрограммировать ваше приложение на плату с помощью утилиты ST-Link. Этот метод необходим, если вы компилируете с использованием ARM GCC, но рекомендуется для проектов IAR или Keil.
 
STMicroelectronics предоставляет утилиту на базе Windows, утилиту ST-Link , для прошивки внутренней и внешней флэш-памяти плат на основе STM32. Этот раздел относится к следующим платам ST, поддерживаемым TouchGFX:
  1. STM32F429I-DISCO
  2. STM324x9I-EVAL
  3. STM32469I-DISCO
  4. STM32469I-EVAL
  5. STM32F746G-DISCO
  6. STM32756G-EVAL
  7. STM32F769I-EVAL
  8. STM32F769-DISCO

ST-Link Utility также может быть использован для программирования пользовательского оборудования с использованием , например ST-Link / V2  программиста .

Генерация Hex-файлов

ST-Link Utility может программировать файлы .hex и .bin. Они автоматически генерируются Make-файлами ARM gcc, поставляемыми с проектом TouchGFX. IAR и Keil IDE настроены для преобразования выходных файлов .elf в файл .hex.

  • Для проектов IAR дополнительный вывод преобразуется ( intel extendedформатируется) вDebug\Exe\application.hex
  • Для проектов Keil  выполняется следующий шаг после сборки: в 
    fromelf --only=ExtFlashSection --bin --output=binary .\Objects\keil5-2.axf
    результате получается файл .hex: Objects\keil5-2.hex

Перепрошивка с использованием графического интерфейса ST-Link Utility

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

При прошивке двоичного файла с помощью утилиты ST-Link вы должны указать правильный флэш-адрес вручную. Этот адрес должен совпадать с адресом, используемым в скрипте компоновщика. По умолчанию это первый адрес во флэш-памяти. При перепрошивке файла .hex утилита ST-Link найдет правильный адрес в файле .hex.

ST-Link автоматически определит диапазоны памяти для программирования и выберет подходящие флэш-загрузчики для использования, если так настроено, при открытии .hex-файла. В приведенном ниже примере target.hexприложение было открыто в ST-Link, и были обнаружены диапазоны как внутренней, так и внешней флэш-памяти.

[target.hex] opened successfully.
Address Ranges [0x08000000 0x08010364] [0x90000000 0x9000CA28] 

Как упоминалось ранее, внутренняя флэш-память всегда распознается ST-Link для микроконтроллеров STM32, но флэш-загрузчик для диапазонов, начинающихся с 0x90000000, должен быть настроен вручную. В приведенном ниже примере мы настроим внешнюю вспышку для STM32F746G-DISCOплаты:

  1. Выберите « Добавить внешний загрузчик » в меню « Внешний загрузчик ».
  2. Выберите соответствующий флэш-загрузчик в списке поддерживаемых плат (т.е. MT25QL512A_STM32756G-EVALдля STM32756G-EVALи N25Q128A_STM32F746G-DISCOдля STM32F746G-DISCO) и выберите Подтвердить .
  3. Откройте .hex, который вы хотите мигать: диапазоны адресов автоматически определяются ST-Link. Как упоминалось ранее, разные двоичные файлы создаются IAR, Keil и gcc соответственно и могут использоваться ST-Link.
  4. Выберите « Program » в меню « Target » и начните загрузку.

Ниже приведен полный список внешних флэш-загрузчиков, которые будут использоваться для плат ST, поддерживаемых TouchGFX (ST-Link версия 4.2):

доска Флеш загрузчик
STM32F429I-DISCO Только внутренняя вспышка
STM324x9I-EVAL M29W128GL_STM324x9I-EVAL
STM32469I-DISCO N25Q128A_STM32469I-DISCO
STM32469I-EVAL MT25QL512A_STM32469I-EVAL
STM32F746G-DISCO N25Q128A_STM32F746G-DISCO
STM32756G-EVAL MT25QL512A_STM32756G-EVAL
STM32F769I-EVAL MT25QL512A_STM32769I-EVAL
STM32F769I-DISCO MX25L512G_STM32769I-DISCO
STM32L4R9-EVAL MX25LM51245G_STM32L4R9I-EVAL
STM32L4R9-DISCO MX25LM51245G_STM32L4R9I-DISCO

Использование Flash make(ST-Link CLI)

Кроме того, вы можете создать и прошить приложение (используя ST-Link CLI) с помощью любой makefile(т.е. app/example/button_example/target/ST/STM32F746G-DISCO/gcc/Makefile), используя следующую команду:

$ make flash

Makefile знает, какую внешнюю флэш-память (см. Таблицу выше) использовать для каждой из поддерживаемых плат ST. ST-LINK имеет встроенную поддержку внутренней вспышки для каждой платы, и вы можете прошить только внутреннюю вспышку, используя следующую команду:

$ make intflash

В некоторых случаях вы не сможете запрограммировать свою доску указанным выше способом из-за следующей ошибки:

STLink USB communication error
Error during erase operation.

В этом случае вы можете попытаться отключить драйвер устройства USB для этой конкретной платы в диспетчере устройств Windows, чтобы устранить проблему.

 

Добавить комментарий

Обратная связь

Интересуют вопросы реализации алгоритмов, программирования, выбора электроники и прочая информация, постараюсь осветить в отдельных статьях

пишите мне на netdm@mail.ru