Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2752
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать
/STM32Toolchain/openocd

Установка инструментария

71

Рисунок 20: Программа ST-LINK Upgrade

Через некоторое время ST-LINK Upgrade покажет, нужно ли обновлять микропрограмму Nucleo (она показывает разные версии). Если это так, нажмите кнопку Upgrade и следуйте инструкциям.

2.3.7. Linux – Установка OpenOCD

OpenOCD29 – это инструмент, который позволяет загружать микропрограммное обеспечение на плату Nucleo и выполнять пошаговую отладку. Первоначально созданный Домиником Ратом (Dominic Rath), OpenOCD сейчас активно поддерживается сообществом и несколькими компаниями, включая STM. Мы обсудим его подробно в Главе 5, которая посвящена отладке. Но установим мы его в этой главе, потому что процедура меняется между тремя разными платформами (Windows, Linux и Mac OS). Последний официальный выпуск на момент написания данной книги – 0.10.

Самое быстрое решение для установки OpenOCD состоит в использовании предварительно скомпилированного пакета, предоставленного Ливиу Ионеску. Фактически, он уже сделал грязную работу для нас. Вы можете загрузить последнюю версию разработки OpenOCD (0.10.0-5-20171110-* на момент написания данной главы) из официального репозитория GNU MCU Eclipse30. Выберите пакет .tgz для вашей платформы Linux (32или 64-разрядная – они называются debian32 или debian64). Распакуйте файлы в удобное место. По завершении вы найдете папку с именем openocd, которая в свою очередь содержит папку с именем, аналогичным имени пакета .tgz (например, вы найдете папку

с именем 0.10.0-5-20171110-1117). Скопируйте эту папку внутрь папки /STM32Toolchain

и переименуйте ее в openocd, чтобы окончательный путь был /STM32Toolchain/openocd.

Еще раз, это гарантирует нам, что мы не должны изменять настройки Eclipse, когда будет выпущена новая версия OpenOCD, но нам нужно будет только заменить содержимое внутри папки новой версией программного обеспечения.

Теперь нам нужно выполнить еще один шаг. По умолчанию Linux не позволяет непривилегированным пользователям получать доступ к USB-устройству с помощью libusb. Итак, чтобы установить соединение между OpenOCD и интерфейсом ST-LINK, нам нужно запустить OpenOCD с правами суперпользователя (root-правами). Это не удобно, потому что у нас будут проблемы с конфигурацией Eclipse. Таким образом, мы должны

29http://openocd.org/

30https://github.com/ilg-archived/openocd/releases/tag/v0.10.0-5-20171110

Установка инструментария

72

настроить Universal DEVice manager (он же udev) для предоставления доступа непривилегированным пользователям к интерфейсу ST-LINK. Для этого давайте создадим файл с именем stlink.rules в каталоге /etc/udev/rules.d и добавим в него следующую строку:

$ sudo cp ~/STM32Toolchain/openocd/contrib/99-openocd.rules /etc/udev/rules.d/ $ sudo udevadm control --reload-rules

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

$ cd ~/STM32Toolchain/openocd/scripts

$ ../bin/openocd -f board/<nucleo_conf_file>.cfg

где <nucleo_conf_file>.cfg должен быть заменен конфигурационным файлом, который подходит вашей плате Nucleo, в соответствии с таблицей 1. Например, если ваша Nucleo

– Nucleo-F401RE, тогда правильным конфигурационным файлом для передачи в

OpenOCD будет st_nucleo_f4.cfg.

Таблица 1: Соответствующий файл OpenOCD для имеющихся плат Nucleo

Nucleo P/N

Скрипт OpenOCD 0.10.0 для платы

NUCLEO-F446RE

st_nucleo_f4.cfg

NUCLEO-F411RE

st_nucleo_f4.cfg

NUCLEO-F410RB

st_nucleo_f4.cfg

NUCLEO-F401RE

st_nucleo_f4.cfg

NUCLEO-F334R8

stm32f334discovery.cfg

NUCLEO-F303RE

st_nucleo_f3.cfg

NUCLEO-F302R8

st_nucleo_f3.cfg

NUCLEO-F103RB

st_nucleo_f103rb.cfg

NUCLEO-F091RC

st_nucleo_f0.cfg

NUCLEO-F072RB

st_nucleo_f0.cfg

NUCLEO-F070RB

st_nucleo_f0.cfg

NUCLEO-F030R8

st_nucleo_f0.cfg

NUCLEO-L476RG

st_nucleo_l476rg.cfg

NUCLEO-L152RE

st_nucleo_l1.cfg

NUCLEO-L073RZ

st_nucleo_l073rz.cfg

NUCLEO-L053R8

stm32l0discovery.cfg

Если все прошло успешно, вы должны увидеть следующие сообщения в консоли:

Open On-Chip Debugger 0.10.0 (2015-09-09-16:32) Licensed under GNU GPL v2

For bug reports, read http://openocd.org/doc/doxygen/bugs.html

Info : The selected transport took over low-level target control. The results might differ com\ pared to plain JTAG/SWD

adapter speed: 2000 kHz adapter_nsrst_delay: 100 none separate

srst_only separate srst_nogate srst_open_drain connect_deassert_srst Info : Unable to match requested speed 2000 kHz, using 1800 kHz

Info : clock speed 1800 kHz

Info : STLINK v2 JTAG v24 API v2 SWIM v11 VID 0x0483 PID 0x374B Info : using stlink api v2

Info : Target voltage: 3.245850

Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints

Установка инструментария

73

В то же время светодиод LD1 на плате Nucleo должен начать мигать ЗЕЛЕНЫМ и КРАСНЫМ поочередно.

В некоторых дистрибутивах GNU/Linux определений UDEV недостаточно или они неэффективны, и при попытке доступа к JTAG-пробнику выдается ошибка:

libusb_open failed: LIBUSB_ERROR_ACCESS

Если это произойдет, сначала попробуйте запустить openocd с помощью sudo; если это работает, для обычной работы вам также необходимо предоставить пользователю разрешение на использование USB. Например, в Ubuntu 15.10 вам нужно выполнить что-то вроде:

sudo usermod -aG plugdev $USER

Затем повторно войдите в систему (relogin) или перезагрузитесь. Если у вас все еще есть проблемы, проверьте документацию по дистрибутиву и, когда у вас появится функциональное решение, опубликуйте его на форуме проекта.

2.3.8. Linux – Установка инструментов ST

ST предоставляет несколько инструментов, полезных для разработки приложений на ос-

нове STM32.

STM32CubeMX – это графический инструмент, используемый для генерации установочных файлов на языке программирования Си для микроконтроллера STM32 в соответствии с аппаратной конфигурацией нашей платы. Например, если у нас есть NucleoF401RE, которая основана на микроконтроллере STM32F401RE, и мы хотим использовать ее пользовательский светодиод (помеченный как LD2 на плате), то STM32CubeMX автоматически сгенерирует все исходные файлы, содержащие код Си, необходимый для конфигурации микроконтроллера (тактирование, периферийные порты и т. д.) и GPIO, подключенный к светодиодному индикатору (GPIO 5 порта A практически на всех платах Nucleo). Вы можете скачать последнюю версию STM32CubeMX (в настоящее время 4.23) с официальной страницы ST31 (ссылка для скачивания находится внизу страницы). Файл представляет собой ZIP-архив. После распаковки вы найдете файл с именем SetupSTM32CubeMX-4.23.0.linux. Этот файл является программой установки инструмента. Программе установки требуются права суперпользователя, если вы хотите установить STM32CubeMX для всей системы (в этом случае откройте файл в командной строке с помощью sudo), в противном случае вы можете просто поместить его в папку/STMToolchain в вашей домашней папке. Мы собираемся установить его в нашем домашнем каталоге.

Итак, дважды щелкните по иконке SetupSTM32CubeMX-4.23.0.linux. Через некоторое время появится мастер установки, как показано на рисунке 21.

31 https://www.st.com/en/development-tools/stm32cubemx.html

Установка инструментария

74

Рисунок 21: Мастер установки STM32CubeMX

Следуйте инструкциям по установке. По умолчанию программа устанавливается в папку /STM32Toolchain/STM32CubeMX. После завершения установки перейдите в папку ST

/STM32Toolchain/STM32CubeMX и дважды щелкните по иконке STM32CubeMX. Через некото-

рое время на экране появится STM32CubeMX, как показано на рисунке 22.

Рисунок 22: Интерфейс STM32CubeMX