Цель этой темы — перечислить все интегрированные среды разработки (IDE), которые могут быть использованы для разработки программного обеспечения для микроконтроллеров STM32. Примеры должны содержать: 1. Список основных функций среды IDE. 2. Список операционных систем, поддерживаемых IDE. 3. Процесс установки. 4. Дополнительные шаги настройки (если они есть).
замечания
Перечисленные IDE от ST Microelectronics:
CoIDE | CooCox CoIDE — бесплатная и высокоинтегрированная среда разработки программного обеспечения для MCU ARM Cortex | активный | CooCox | Комплекты для разработки ПО |
CosmicIDE | Cosmic ARM / Cortex «M» Инструменты для кросс-разработки для микроконтроллера STM32 | активный | космический | Комплекты для разработки ПО |
Crossworks | Rowley Associates CrossWorks, интегрированная среда разработки с загрузкой и отладкой JTAG Flash | активный | Rowley | Комплекты для разработки ПО |
DS-5 | ARM Development Studio 5 (DS-5) предоставляет лучшие в своем классе инструменты для самых разных платформ на базе процессоров ARM | активный | РУКА | Комплекты для разработки ПО |
EMP-Thunder | Emprog ThunderBench, полностью интегрированный и хорошо продуманный инструмент разработки C / C ++ для ARM Cortex | активный | Emprog | Прошивка |
HiTOP5 | Универсальный пользовательский интерфейс, IDE и отладчик для всех инструментов разработки Hitex | активный | Hitex | Комплекты для разработки ПО |
IAR-EWARM | Интегрированная среда разработки IAR и оптимизация компилятора C / C ++ для ARM Cortex-M | активный | IAR | Комплекты для разработки ПО |
MDK-ARM-STM32 | Среда разработки программного обеспечения MDK-ARM для MCU на базе Cortex-M | активный | Keil | Комплекты для разработки ПО |
MULTI | Интегрированная среда разработки и отладки GreenHills для встроенных приложений с использованием C и C ++ | активный | Программное обеспечение GreenHills | Комплекты для разработки ПО |
Мужчины-Nucleus-SF | Nucleus SmartFit для STM32 | активный | Mentor Graphics | Прошивка |
PER-Tracealyzer | Анализатор трассировки времени выполнения Percepio для MCM STM32 | активный | Percepio | |
PLSUDE-STM32 | Платформа отладки и эмулятора с оптимизированной поддержкой трассировки и флэш-памяти для MCM STM32 на базе Cortex-M с помощью средств разработки PLS | активный | Pls | Комплекты для разработки ПО |
RIDE-STM32 | Интегрированная среда разработки, основанная на безопасности, для MCU STM32 | активный | Raisonance | Комплекты для разработки ПО |
SOMN-DRT-IDE | SOMNIUM DRT Cortex-M IDE | активный | Somnium | Комплекты для разработки ПО |
SW4STM32 | System Workbench для STM32: бесплатная среда разработки в Windows, Linux и OS X | активный | AC6 | Комплекты для разработки ПО |
TASKINGVX-STM32 | Инструменты компилятора Altium C / C ++ и отладчика для MCU на базе ARM | активный | TASKING | Прошивка |
TrueSTUDIO | Прежний инструмент разработки C / C ++ для разработки STM32 с непревзойденным набором функций и беспрецедентной интеграцией | активный | Atollic | Комплекты для разработки ПО |
ISYS-winIDEAOpen | бесплатная неограниченная платформа разработки iSYSTEM для всех устройств STM32 Cortex-M | активный | iSYSTEM | Комплекты для разработки ПО |
mikroBasicPRO | MikroElektronika полнофункциональный базовый компилятор, который делает разработку STM32 подходящей для всех | активный | Mikroelectronika | Комплекты для разработки ПО |
mikroCPRO | MikroElektronika полнофункциональный ANSI C-компилятор для устройств STM32. Он имеет интуитивно понятный IDE, мощный компилятор с расширенной оптимизацией | активный | Mikroelectronika | Комплекты для разработки ПО |
mikroPascalPRO | MikroElektronika полнофункциональный компилятор Pascal для устройств STM32. Он имеет интуитивно понятную IDE с поддержкой стыковки, богатую функциями, расширенным текстовым редактором, множеством доступных инструментов, библиотек и примеров | активный | Mikroelectronika | Комплекты для разработки ПО |
winIDEA-STM32 | Комплексное решение для разработки и тестирования iSYSTEM для MCU STM32 | активный | iSYSTEM | Прошивка |
Среда разработки программ для микроконтроллеров STM32 STM32CubeIDE: скачивание, первая программа
STM32 — программирование для начинающих. Пошагово. CubeMX CubeIDE
SW4STM32: System Workbench для STM32
Вступление
System Workbench для STM32 — это бесплатная среда разработки в Windows, Linux и OS X. Описание от ST Microelectronics :
- Всесторонняя поддержка микроконтроллеров STM32, плат STM32 Nucleo, наборов Discovery и оценочных плат, а также прошивки STM32 (стандартная периферийная библиотека или STM32Cube HAL)
- Компилятор GCC C / C ++
- Отладчик на основе GDB
- Eclipse IDE с управлением коллективной работой
- Совместимость с плагинами Eclipse
- Поддержка ST-LINK
- Нет ограничения размера кода
- Поддержка нескольких ОС: Windows®, Linux и OS X®
Монтаж
- Перейдите по ссылке : http://www.openstm32.org/HomePage .
- Зарегистрируйтесь и войдите на сайт.
- Перейдите на страницу: http://www.openstm32.org/Downloading+the+System+Workbench+for+STM32+installer .
- Загрузите последнюю версию для вашей операционной системы.
- Запустите загруженный установщик.
IAR-EWARM
Вступление
IAR Интегрированная среда разработки и оптимизация компилятора C / C ++ для ARM Cortex-M. Описание от ST Microelectronics :
- Ключевые компоненты:
- Интегрированная среда разработки с инструментами управления проектами и редактором
- Высоко оптимизирующий компилятор C и C ++ для ARM®
- Автоматическая проверка правил MISRA C (MISRA C: 2004)
- Соответствие ARM® EABI и CMSIS
- Расширенная поддержка целевой системы HW
- Дополнительные I-jet и JTAGjet ™ -Trace внутрисхемные отладочные датчики
- Отладка мощности для визуализации потребления энергии в корреляции с исходным кодом
- Библиотеки времени выполнения, включая исходный код
- Перемещение ARM® ассемблера
- Линкеровщик и библиотекарь
- Отладчик C-SPY® с симулятором ARM®, поддержка JTAG и поддержка отладки RTOS для аппаратного обеспечения
- Плагины RTOS, доступные от IAR Systems и поставщиков RTOS
- Более 3100 типовых проектов для оценочных плат от разных производителей
- Пользовательские и справочные руководства в формате PDF
- Контекстно-зависимая он-лайн помощь
- Чип-специфическая поддержка:
- 4300 проектов, в том числе для оценочных плат STMicroelectronics
- Поддержка 4 Гбайт-приложений в режимах ARM® и Thumb®
- Каждая функция может быть скомпилирована в режиме ARM® или Thumb®
- Генерация копроцессора с векторной плавающей точкой VFP Vector Floating Point
- Встроенная поддержка NEON ™
- Поддержка аппаратной отладки:
- STMicroelectronics ST-LINK V2: поддерживает устройства STM32
- STMicroelectronics ST-LINK: поддерживает устройства STM32
- Поддержка RTOS: обратитесь на веб-сайт IAR http://www.iar.com
- Поддерживаемые устройства: обратитесь на веб-сайт IAR http://www.iar.com
Монтаж
Atollic — TrueSTUDIO
Вступление
C / C ++ IDE для разработки ARM.
Atollic TrueSTUDIO® протестирован и проверен в следующих операционных системах:
- Microsoft® Windows®Vista (32-разрядная версия)
- Microsoft® Windows® Vista (64-разрядная версия)
- Microsoft® Windows® 7 (32-разрядная версия)
- Microsoft® Windows® 7 (64-разрядная версия)
- Microsoft® Windows® 8 (64-разрядная версия)
- Microsoft® Windows® 10 (64-разрядная версия)
- Поддержка Linux ожидается конец 2016 года Q4
- Поддержка Mac OS X ожидается 2017 Q2
TrueSTUDIO доступен только как 32-битное приложение.
Монтаж
Продукт Atollic TrueSTUDIO поставляется в качестве исполняемого установщика. Убедитесь, что учетная запись пользователя, с которой запущен установщик, имеет административные привилегии. Во время установки нет необходимости в регистрации или подключении к Интернету. Когда TrueSTUDIO установлен, он будет работать в режиме Lite, если лицензии не обнаружены.
- Перейдите по ссылке : http://atollic.com/resources/downloads/ .
- Загрузите последнюю стабильную или последнюю бета-версию.
- Запустите программу установки.
CoIDE
Вступление
CooCox CoIDE — бесплатная и высокоинтегрированная среда разработки программного обеспечения для MCU ARM Cortex. Описание от ST Microelectronics :
- Полная поддержка микроконтроллеров STM32, плат STM32 Nucleo, а также программных библиотек STM32Cube.
- Компилятор GCC C / C ++.
- Отладчик на основе GDB.
- Упрощенная среда разработки Eclipse.
- Поддержка ST-Link.
- Поддержка нескольких языков: английский, китайский.
Источник: learntutorials.net
Visual Studio Code для ARM микроконтроллеров stm32 и других.
Это даже не руководство, а небольшое описание и собственные ощущения о переходе с Keil’а на VSCode. Здесь нет рассказа от том, как настроить систему сборки, только немного о настройках самого редактора.
Небольшая заметка о том, как я решил отказаться от keil и перешел на visual studio code.
Давно я собирался это сделать, но никак не мог решиться. Больше всего в vscode привлекал удобный редактор с его плюшками, до которого keil’у, да и многим другим IDE расти и расти.
Основной проблемой было то, как настроить сборку, как выполнять загрузку и отладку. «У страха глаза велики» — это правда, на деле всё оказалось куда проще. Даже этот текст, который вы читаете, написан в vscode.
Если стало интересно — читайте дальше.
Установка VS Code и расширений
Установка самого редактора тривиальна, скачать можно по ссылке: https://code.visualstudio.com
Для разработки приложений на языке Си для микроконтроллеров ARM будем использовать несколько плагинов:
- Cortex-Debug
- C/C++ for Visual Studio Code
- C/C++ Intellisense
- ARM assembly highlighting for Visual Studio Code
- GitLens
- Doxygen Documentation Generator
- Better Comments
Основные — это верхние три, остальные это лишь небольшие улучшения и дополнения, хотя в принципе достаточно и первых двух.
Настройка среды
Вся настройка производится в файлах json .
Файл .vscodelaunch.json соделжит конфигурации запуска и отладки.
Пример моей конфигурации:
< «version»: «0.2.0», «configurations»: [ < «type»: «cortex-debug», «name»: «APP», «cwd»: «$», «device»: «Cortex-M0», «executable»: «./build/smart_relay.elf», «servertype»: «jlink», «interface»: «swd», «request»: «launch», «rtos»: «FreeRTOS», «svdFile»: «./JLink/STM32F042x.svd», > ] >
Это конфигурация для плагина Cortex-Debug, в которой указаны параметры типа ядра, путь к elf файлу, ипя конфигурации для отладки, интерфейс, тип операционной системы, тип отладчика, путь к файлу описания регистров микроконтроллера (SVD файл), его можно найти в папке с файлами поддержки семейства микроконтроллеров для STM32CubeMx, например для STM32F0 здесь
Следующий файл — .vscodesettings.json , — настройки рабочего пространства, у меня выглядят примерно так.
Указаны лишь три настройки, могут быть и другие, но эти важны для нашего проекта.
Теперь приступим к настройкам нашего проекта, а именно укажем пути к заголовочным файлам, дефайны и настройки стандарта языка, это всё нужно не для сборки проекта, а для работы системы IntelliSense. Главное быть внимательным, так как эти настройки должны быть максимально синхронны с настройками при компилировании файлов, вплоть до указания предопределенных макросов типа __GNU__ и подобных. Иначе можно получить весьма неожиданный результат, на экране будет одно, а по факту проект будет собираться уже по другом из-за вмешательства препроцессора и раскрытия макросов.
< «configurations»: [ < «name»: «Smart Relay App», «compilerPath»: «$/arm-none-eabi-gcc.exe», «compilerArgs»: [«—target=arm-arm-none-eabi», «-mcpu=Cortex-M0»], «includePath»: [ «c:/gcc-arm/lib/gcc/arm-none-eabi/9.2.1/include», «c:/gcc-arm/lib/gcc/arm-none-eabi/9.2.1/include-fixed», «$/libs/FreeRTOS-Kernel/include», «$/libs/FreeRTOS-Kernel/portable/GCC/ARM_CM0», «$/libs/STM32CubeF0_HAL/Drivers/CMSIS/Core/Include», «$/libs/STM32CubeF0_HAL/Drivers/CMSIS/Device/ST/STM32F0xx/Include», «$/libs/STM32CubeF0_HAL/Drivers/CMSIS/Include», «$/libs/STM32CubeF0_HAL/Drivers/STM32F0xx_HAL_Driver/Inc», «$», «$/src», «$/src/drivers», «$/src/app» ], «defines»: [ «STM32F042x6», «USE_HAL_DRIVER», «_RTE_», «USE_FULL_ASSERT» ], «cStandard»: «c11», «cppStandard»: «c++17», «intelliSenseMode»: «$» > ], «version»: 4 >
Из названия настроек всё понятно: имя конфигурации, путь к компилятору, его аргументы, пути к заголовочным файлам, опеределения макросов и указание стандарта языка. Более подробно об этих параметрах можно почитать в официальной документации.
В принципе все основные настройки готовы, осталось определелить несколько задач для сборки и загрузки прошивки в микроконтроллер. Для этого их необходимо описать в файле .vscodetasks.json .
< «version»: «2.0.0», «tasks»: [ < «label»: «Build», «type»: «shell», «command»: «make -s -j 8 app», «options»: < «cwd»: «$», «shell»: < «executable»: «cmd.exe», «args»: [ «/C» ] >>, «group»: < «kind»: «build», «isDefault»: true >, «problemMatcher»: [ «$go» ] >, < «label»: «Download», «type»: «shell», «command»: «JLink.exe -Device STM32F042K6 -If SWD -Speed 4000 JLink\FlashMCU.jlink», «options»: < «cwd»: «$», «shell»: < «executable»: «cmd.exe», «args»: [ «/C» ] >>, «group»: < «kind»: «test», «isDefault»: true >, «problemMatcher»: [] > ] >
Первая задача Build — задача сборки, о чем намекает параметр «kind»: «build» , именно её редактор будет предлагать к выбору при выборе меню Терминал -> Запустить задачу сборки. , либо при нажатии кнопок CTRL+SHIFT+B .
Команда которая будет выполняться написана в параметре command .
В первой задаче это запуск утилиты make с параметрами.
Во второй это запуск утилиты jlink для записи файла прошивки в микроконтроллер. Видно, что здесь указаны тип устройства, интерфейс и скорость соединения и скрипт прошивки. Скрипт выглядит следующим образом:
r loadfile .buildsmart_relay.hex r g q
Другие команды, для чтения, очистки и сброса можно посмотреть в документации к jlink .
Ну вот и всё, Вам же осталось только написать свой код, написать Makefile и пользоваться средой.
Немного об ощущениях
- Превосходный редактор с отличным функционалом;
- Можно переходить к определнию функции по клику с нажатым CTRL ;
- куча расширений функционала редактора.
- Немного непривычная отладка: значения регистров и переменных в десятичном формате;
- Отладка без дизассемблера;
- Возможность отстрелить ногу с предопределенными компилятором макросами (то, о чем я писал выше);
- Много ручной работы по настройке проекта и системы сборки;
- GCC вместо ARM Compiler 6.
На первый взгляд кажется что минусов больше, но на самом деле удобство работы в редакторе кода компенсирует многое. А расширение функции отладки скорее всего дело будущих версий этого плагина.
PS
Как всегда хорошего кодинга и меньше багов.
- Немного про ARM ассемблер. Пишем многопоточную программу.
- Собираем проект для STM32 с помощью Clang/LLVM
CDEblog
Блог инженера-схемотехника, конструктора и немного программиста
Последние публикации
- Очередной драйвер SPI флэшек… Но уже с кэшем и «нормальным» api
- Что было интересного в январе.
- Сжимаем образ WSL
- Включение бинарных файлов в прошивку
- Библиотека для Altium Designed. Как использовать библиотеку в виде базы данных.
Источник: cdeblog.ru
Stm32. Переходим на современный C++. Часть 1. Настройка рабочего пространства.
В сети появляется всё больше материалов, посвященных применению языка C++ для программирования микроконтроллеров. Являясь сторонником этого направления, хочу поделиться теми знаниями и умениями, которые получил, в виде цикла статей-уроков с рассмотрением вопросов разработки для Stm32 на современном языке C++ с применением разрабатываемой мною библиотеки (или фреймворка) Zhele.
Я не являюсь профессиональным разработчиком в принципе, с электроникой тоже знаком лишь поверхностно. В связи с этим фактом прошу меня извинить за возможные неточности в вопросах, связанных именно с электроникой (например, я абсолютно не различаю определения «передний фронт» и «восходящий фронт», хотя, судя по прочитанным сообщениям на форумах, это как минимум не одно и то же, а как максимум только один вариант в принципе корректен). К сожалению, мои текущие знания не позволяют добавить в материалы качественную теоретическую часть, благо в сети достаточно хороших источников. Из всего, что мне попадалось на русском языке, наибольшим образом мне помогли и понравились статьи на таких ресурсах как microtechincs.ru, hubstub.ru, istarik.ru, microsin.net. Материал изложен подробно, понятно, и, что самое главное, есть примеры кода на чистом CMSIS.
О фреймворке.
Микроконтроллерами начал заниматься исключительно в качестве хобби, никаких реальных проектов и даже задач у меня не было и нет (даже полив цветов мне не нужен ввиду их отсутствия), поэтому мне хотелось и было важно не просто получить какой-то работающий девайс (иначе взял бы Arduino), а научиться писать качественный, красивый и оптимальный код. Попробовал поуправлять светодиодом на CMSIS, SPL, HAL, LL, однако не самые лестные отзывы об этих решениях не давали покоя. Однажды наткнулся на статью «Работа с портами ввода-вывода микроконтроллеров на Си++», предлагаемый автором подход понравился, и я стал пытаться пользоваться его фреймворком mcucpp, построенным полностью на шаблонах C++.
Проект покрывает семейства AVR, ARM, MSP430, содержит в себе много классов для управления периферией, контейнеры, файловую систему, драйверы и многое другое, объем поражает. Но для меня, как новичка, было крайне сложно всё это запустить, так как документации практически нет, примеров нет, а «из коробки» многое не работает. Поэтому я решил продолжить изучение микроконтроллеров путем постепенного приведения в порядок разработок Константина Чижова (автора статьи и проекта mcucpp, если вдруг кто-то решил не переходить по ссылкам), а именно добавлять Doxy-документацию, проверять работоспособность кода, добавлять примеры. Делать это в виде форка было тяжело, поэтому родился новый проект Zhele, гораздо менее амбициозный, предназначен только для Stm32, не содержит пока много чего из оригинального проекта, однако не содержит мелких ошибок, покрыт документацией и тестами, а также движется в направлении универсальности для различных контроллеров Stm32.
Среда разработки.
Много копий сломано в спорах о лучшей IDE, компиляторе, я же считаю, что лучшим решением является то, которое удобно конкретному программисту. Для разработки я использую связку Visual Studio Code + расширение PlatformIO. Далее пошагово приведен процесс установки и создания заготовки проекта:
[env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8 framework = cmsis debug_tool = stlink upload_port = stlink build_flags = -D STM32F1 -std=c++20 build_unflags = -std=c++11
Если проект не собрался, а VSCode отобразил поле ввода в верхней части экрана, перезапустите VS Code и повторите попытку.
Архив с проектом можно загрузить с Яндекс.Диска. Статья в формате PDF доступна также на Яндекс.Диске. На следующем занятии подробно рассмотрим возможности библиотеки в части управления портами ввода-вывода.
Источник: microtechnics.ru