8-900-374-94-44
[email protected]
Slide Image
Меню

Программирование stm32 в linux: STM32 + linux / Хабр

Vanyamba uses Linux — Программирование микроконтроллеров STM32

Микроконтроллеры STM32 обратили на себя моё внимание двумя новостями. Первая новость была о выпуске платы STM32F4DISCOVERY, которая оснащена аудио-кодеком и микроконтроллером с ядром ARM Cortex-M4 с набором DSP-команд. Вторая новость была о выпуске платы Olimexino-STM32, представляющую из себя Arduino-совместимую плату на базе микроконтроллера STM32F103RB.

В ожидании появления обеих плат на рынке, я приобрёл себе плату Olimex-h203 и недорогой JTAG-отладчик ARM-USB-OCD, чтобы начать осваивать микроконтроллеры STM32 в операционной системе Linux.

Дело в том, что возможность программировать микроконтроллеры STM32 посредством интерфейса ST-Link/V2 в то время была доступна только в операционной системе Windows, к тому же отладчик OpenOCD можно использовать и для программирования других ARM-микроконтроллеров, например AT91SAM. К тому времени уже полгода у меня пылилась на полке плата Olimex-H64, так что для меня это был хороший повод приобрести JTAG-отладчик, чтобы не мучиться с попытками освоить SAM-BA и TCL.

Выбор отладочной платы

Успешно освоив 8-битные микроконтроллеры, спаяв несколько плат собственной разработки на их основе, я пришёл к выводу, что 32-битные микроконтроллеры удобнее осваивать, используя готовые отладочные платы, прежде чем пробовать разработать и спаять собственную плату.

В случае микроконтроллеров STM32 выбор платы в первую очередь основывается на выборе интерфейса программирования. Это либо IEEE 1149.1 JTAG, либо SWD-отладчик ST-Link. Лично я как пользователь Linux предпочитаю JTAG, поскольку программирование ARM-микроконтроллеров посредством JTAG в Linux поддерживается на базе открытых технологий, хотя по степени глючности оба варианта пока что не превосходят друг друга.

Платы STM32 серии DISCOVERY

В качестве стартовых отладочных плат для своих микроконтроллеров компания ST Microelectronics выпускает недорогие платы серии DISCOVERY, оснащные встроенным отладчиком ST-Link/V2.

Для разработки и программирования этих плат в Linux требуется скачать и настроить IDE-среду разработки Eclipse. В принципе, после успешной настройки программисту доступна даже возможность пошаговой отладки программы, но на практике при переходе из режима отладки обратно в режим программирования периодически происходит какой-то сбой, так что повторно войти в режим отладки у меня лично получалось через раз. Так что я предпочитаю программировать микроконтроллер из командной строки с помощью утилиты texane/stlink.

Платы STM32 с JTAG

Сторонние разработчики оснащают отладочные платы на базе микроконтроллеров STM32 интерфейсом IEEE 1149.1 JTAG для программирования и отладки. Эти платы стоят немножко дороже, но их можно программировать с помощью GDB-сервера OpenOCD.

Однако стоит учесть и то, что для программирования потребуется приобрести JTAG-программатор, в чём OpenOCD в силу своей универсальности как раз и имеет преимущественно перед встроенным ST-Link в платах серии DISCOVERY.

Программная поддержка периферийных устройств

В целом в программировании микроконтроллеров STM32 нет ничего принципиально сложного благодаря тому, что программирование периферийных устройств микроконтроллера осуществляется на основе стандартной библиотеки микроконтроллеров Cortex CMSIS (Cortex Microcontroller Software Interface Standard).

Скачав и установив Standard Peripheral Library для выбранной линейки микроконтроллеров STM32, можно попробовать скомпилировать примеры из папки StdPeriph_Examples, хотя для среды Eclipse и ARM-GCC скорее всего потребуется использовать один из базовых проектов, скопировав необходимые файлы из папки с примером в папку проекта.

Установка STM32CubeIDE на Linux — Схемка: Электронные Радиосхемы

Сначала нужно скачать искомое программное обеспечение STM32CubeIDE Generic Linux Installer с официального сайта

он весьма тормознутый, поэтому на всякий случай перезалил в облако:

Скачать версию STM32CubeIDE 1. 9.0 без регистрации и смс для Windows или Linux можно в телеграм-канале:

1) Распаковываем файл st-stm32cubeide_1.50.sh из архива, двойное нажатие по нему приведет к созданию папки с таким же именем.

2) Открываем папку, она будет содержать различные файлы (может придется подождать десяток сек):

3) Запускаем терминал ( Ctrl + Alt + T) и пишем путь к создавшейся папке (можно скопировать из строки сверху):

cd/home/egor/Downloads/STM32CubeIDE/ststm32cubeide_1.0.0_2872_20190423_2022_amd64.sh.root/

4) Теперь меняем права (это может и не понадобится) и вводим пароль, который запросит:

sudo chmod a+x install.sh

5) Далее непосредственно запускаем файлик установки:

Обновление от 21. 06.2022
Сейчас устанавливал STM32CubeIDE на UBUNTU и было достаточно запустить .sh файл:

sudo sh FILENAME.sh

FILENAME — имя файла
Также вы должны находится в папке с этим файлом (шаги выше)

./setup.sh

6) Появляется лицензионное соглашение, жмём Ввод (Enter), пока оно не закончится. Принимаем его (прописав игрек в командной строке):

Y

6)Указываем путь установки (папку создавать не нужно):

/home/egor/Documents/

7) Ждём, пока установится. Высветится окно для ввода пароля, вводим.

8) Откроется окошко с установкой SEGGER J-Link и спросит продолжать ли (Do you wish to continue?). Пишем:

yes

9) Теперь листаем долгий текст (Enter) и соглашаемся со всем (Do you agree with the terms of this license?):

yes

10) Скорее всего таким же образом будет установка двух программ: ST-Link и ST-Link Server.

Ошибка при отладке (загрузке программы)

Обновление 21.06.2022. После установки не прошивался МК (хотя через STM32CubeProgrammer все работало), выдавало ошибку: Could note determine GDB vesion using command: arm-none-eabi-gdb —veriosn

Решение нашлось здесь: https://community.st.com/s/question/0D50X0000AgEAO…

Нужно прописать следующую строку и ввести пароль от UBUNTU:

sudo apt install libncurses5*

А потом согласится на установку (вбить Y и нажать Enter):

Заключение

На этом всё, можно использовать бесплатную среду разработки для программирования микроконтроллеров STM32 на бесплатной операционной системе Linux.

 

stm32cubeide, установка stm32cubeide на linux, stm32 linux

Установка STM32CubeIDE в Linux | Встраиваемые системы

  • Автор сообщения: