Как исправить ошибку «Невозможно открыть файл» при загрузке в STM32 в TrueStudio

Я пытаюсь загрузить свою написанную программу для STM32F411RE из TrueStudio для STM32 IDE на саму плату. Плата подключается через кабель mini USB b, и предполагается, что ее можно запрограммировать через SWD.

Настраивать

Atollic предоставляет хорошее руководство о том, как выполнять это программирование с помощью TrueStudio IDE и ST-Link_CLI (интерфейс командной строки), , как описано в документе по этой ссылке. Для этого требуются следующие шаги, которые я выполнил и проверил несколько раз:

  1. Прежде всего, выходной (двоичный) файл должен быть в формате Intel .HEX, а не в формате TrueStudio .elf по умолчанию. Чтобы изменить это, перейдите к Project properties -> c/c++ build -> settings -> tool settings tab -> other -> Output format и отметьте опцию «Конвертировать вывод сборки», убедитесь, что в раскрывающемся списке выбрана опция Intel Hex.

    1


  2. Чтобы вызвать 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).

    2


Выход

Когда я затем вызываю эту конфигурацию внешнего инструмента через только что созданную ссылку 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!

3

Очевидно, что ST-Link_CLI успешно вызывается из среды IDE, но каким-то образом не может переварить файл .hex (внутри папки отладки) и загрузить его на плату STM32.

Даже прошивка полностью нового сгенерированного проекта из CubeMX и установка вышеперечисленных параметров (включая установку его в файл .hex) не позволит этой инструментальной цепочке загрузить его на доску.


Ручное мигание кода

Мне удалось успешно загрузить файл .HEX, созданный TrueStudio, вручную загрузив его на плату STM32 с использованием графического интерфейса ST-Link, поэтому я не думаю, что проблема в самом ST-Link. Однако я не могу отлаживать его таким образом, поскольку для этого мне нужны инструменты TrueStudio IDE, а значит, для успешной работы мне нужна конфигурация внешнего инструмента.

34

Вместо этого я подозреваю, что проблема связана с моей собственной настройкой, в которой почему-то отсутствует вызов или неправильно установлен параметр. Также может быть, что клиенты GUI и CLI работают совершенно по-разному, позволяя одному читать и загружать файл, в то время как другой не может, но мне это кажется неразумным.


Однако я немного растерялся, так как я не могу понять, почему другие могут выполнять эту работу с помощью предоставленной документации Atollic, а моя выдает эти ошибки.


person Nanne118    schedule 17.05.2019    source источник
comment
В нем также говорится, что я не могу войти в перспективу отладчика в среде TrueStudio IDE, поскольку там нет устройства. Я нахожу это странным, потому что устройство обнаруживается при попытке загрузить на него код согласно сообщению выше. Могут ли эти проблемы быть связаны каким-то действительно причудливым образом, где говорится, что он не может открыть код, но на самом деле не находит устройство или наоборот?   -  person Nanne118    schedule 17.05.2019
comment
Почему бы не использовать стандартный способ программирования и отладки с помощью openOCD?   -  person 0___________    schedule 17.05.2019
comment
Я пытался научиться делать это в Keil uVision, прежде чем столкнулся с ограничениями кода, поэтому вместо этого я использовал TrueStudio, учитывая количество и детализацию доступной документации. Какие преимущества предлагает OpenOCD на данном этапе, учитывая, сколько я уже узнал о TrueStudio?   -  person Nanne118    schedule 17.05.2019
comment
Потому что выбранный вами путь не имеет никакого смысла. И я боюсь, что эти знания (об этом инструменте CLI и интеграции с truestudio бесполезны)   -  person 0___________    schedule 17.05.2019
comment
@P__J__ Я не согласен. Это мощный инструмент. Особенно, если вы хотите установить байты параметров, которые TrueStudio изначально не поддерживает.   -  person Hein Wessels    schedule 02.10.2019


Ответы (2)


Что касается моего собственного кода, мне не удалось заставить ST-Link_CLI работать как внешний инструмент, как я предполагал, [но я смог заставить STCubeProgrammer (CLI) работать таким же образом, как и Я пытался использовать ST-Link]. (http://gotland.atollic.com/resources/applicationnotes/AN1801_cubeprogrammer_in_truestudio.pdf).

Видя, что я буквально использовал ту же процедуру, что и раньше, но вместо того, чтобы указать местоположение и исполняемый файл для STCubeProgrammer (а не ST-Link), я подозреваю, что проблема действительно может быть в интерфейсе командной строки ST-Link (подключение к TrueStudio).

Теперь он успешно загружается и сразу же после загрузки меня в среду отладки TrueStudio :)

person Nanne118    schedule 17.05.2019

Вы пытаетесь изобрести колесо, используя треугольник.

В TrueStudio настроено все:

введите описание изображения здесь

Просто добавьте конфигурацию отладки, и все готово.

Какие преимущества предлагает OpenOCD на данном этапе

Одно важное: отладка

учитывая, сколько я уже узнал о TrueStudio?

Эти знания (как настроить внешние инструменты и т. Д.) Бесполезны в 99,9999% случаев. Это всего лишь конфигурация Eclipse. На самом деле здесь не нужно слишком сложное.

person 0___________    schedule 17.05.2019
comment
К сожалению, похоже, что я не получаю эти параметры по умолчанию, поскольку я не использую модуль RTOS (CMSIS-Pack?). Очень интересно видеть, что RTOS предоставляет это, что определенно сэкономило бы мне время! Я также все еще заинтригован вашим предложением OpenOCD, и я обязательно займусь этим позже: есть ли у вас какие-либо предлагаемые ресурсы для работы с этим с STM32? Кажется, что OpenOCD поставляется во многих вариантах для разных IDE, вы бы порекомендовали Eclipse или Visual Studio Code? - person Nanne118; 17.05.2019
comment
Вы просто не узнали, что нужно. Я использую RTOS во всех своих проектах. На скриншоте это 150000 строк кода freeRTOS. Работает как оберег. На самом деле я использую немного лучший отладчик (Jlink), но идея та же - person 0___________; 17.05.2019