Я пытаюсь загрузить свою написанную программу для STM32F411RE из TrueStudio для STM32 IDE на саму плату. Плата подключается через кабель mini USB b, и предполагается, что ее можно запрограммировать через SWD.
Настраивать
Atollic предоставляет хорошее руководство о том, как выполнять это программирование с помощью TrueStudio IDE и ST-Link_CLI (интерфейс командной строки), , как описано в документе по этой ссылке. Для этого требуются следующие шаги, которые я выполнил и проверил несколько раз:
Прежде всего, выходной (двоичный) файл должен быть в формате Intel .HEX, а не в формате TrueStudio .elf по умолчанию. Чтобы изменить это, перейдите к
Project properties -> c/c++ build -> settings -> tool settings tab -> other -> Output format
и отметьте опцию «Конвертировать вывод сборки», убедитесь, что в раскрывающемся списке выбрана опция Intel Hex.Чтобы вызвать ST-Link_CLI изнутри IDE, необходимо выполнить конфигурацию внешних инструментов. Чтобы создать эту конфигурацию, я перехожу к
Run -> External Tools -> External Tools Configurations ....
и создаю новую конфигурацию, назовем ее ST-Link_CLI.
Для рабочего каталога я указываю каталог моего ST-LINK_CLI
(C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
)
, в то время как для местоположения я указываю этот каталог и имя файла
(C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ST-LINK_CLI.exe
).
Наконец, я добавляю следующие параметры, чтобы идентифицировать плату STM32, подключить ее через SWD и выполнить сброс, при этом я предлагаю загрузить файл .HEX, созданный TrueStudio
(-c ID=0 SWD UR LPM -P ${project_loc}\Debug\${project_name}.hex -v
).
Выход
Когда я затем вызываю эту конфигурацию внешнего инструмента через только что созданную ссылку Run -> External Tools -> ST-Link_CLI
, я получаю вывод, указанный ниже:
STM32 ST-LINK CLI v3.4.0.0
STM32 ST-LINK Command Line Interface
ST-LINK SN: 066EFF525750877267092042
ST-LINK Firmware version: V2J33M25
Connected via SWD.
SWD Frequency = 4000K.
Target voltage = 3.3 V
Connection mode: Connect Under Reset
Reset mode: Hardware reset
Debug in Low Power mode enabled
Device ID: 0x431
Device flash Size: 512 Kbytes
Device family: STM32F411xC/E
Loading file...
Unable to open file!
Очевидно, что ST-Link_CLI успешно вызывается из среды IDE, но каким-то образом не может переварить файл .hex (внутри папки отладки) и загрузить его на плату STM32.
Даже прошивка полностью нового сгенерированного проекта из CubeMX и установка вышеперечисленных параметров (включая установку его в файл .hex) не позволит этой инструментальной цепочке загрузить его на доску.
Ручное мигание кода
Мне удалось успешно загрузить файл .HEX, созданный TrueStudio, вручную загрузив его на плату STM32 с использованием графического интерфейса ST-Link, поэтому я не думаю, что проблема в самом ST-Link. Однако я не могу отлаживать его таким образом, поскольку для этого мне нужны инструменты TrueStudio IDE, а значит, для успешной работы мне нужна конфигурация внешнего инструмента.
Вместо этого я подозреваю, что проблема связана с моей собственной настройкой, в которой почему-то отсутствует вызов или неправильно установлен параметр. Также может быть, что клиенты GUI и CLI работают совершенно по-разному, позволяя одному читать и загружать файл, в то время как другой не может, но мне это кажется неразумным.
Однако я немного растерялся, так как я не могу понять, почему другие могут выполнять эту работу с помощью предоставленной документации Atollic, а моя выдает эти ошибки.