ide для stm32 что выбрать

STM32F1xx — Инструменты разработчика и FreeRTOS

Железо

Традиционно начнем с железа.
В прошлых статьях ядром системы была плата STM32VLDISCOVERY.
Плата, безусловно, хороша, и подкупает тем, что ее цена всего 300 рублей. В принципе, хороший инструмент для того, чтобы начать знакомиться с этим семейством микроконтроллеров. Но.
Дело в том, что при выборе отладочной платы, всегда хочется соблюсти баланс количества и качества, то есть с одной стороны, иметь все необходимое для работы, с другой – не хочется чтобы плата превращалась в огромного и дорогого монстра. У STM32VLDISCOVERY баланс смещен в сторону дешевизны и минимализма.
Полазив по e-bay, я нашел для себя более удобную, на мой взгляд, плату, которую и представляю вашему вниманию. Вот она:
Mini-STM32

Теперь то, что касается IDE. Изначально я выбрал Keil uVision, так как когда-то уже работал с ней.
Ну, что я могу сказать – я проработал в кейле достаточно, и в принципе с ним можно примириться. Но, положа руку на сердце – ИДЕ там ужасна. Также ужасна как и ИДЕ IAR’a, на мой взгляд.
IAR и Keil – признанные лидеры в разработке компиллеров, этого у них не отнять, но я до сих пор не могу понять, почему, имея такие компиллеры, они продолжают тянуть свои IDE, застрявшие по удобству на уровне 2002 года. Как пример могу привести Texas Instruments – у них раньше тоже была своя IDE, в довесок к компиллеру. Потом им это надоело, они взяли Eclipse, допилили его, прикрутили к своим компиллеру и профайлеру, и получили отличный продукт. Почему так не поступят Keil и IAR для меня остается загадкой, но на мой взгляд их IDE не такие удобные, как могли бы быть. Раздражает не очень удобная подсветка синтаксиса, полное отсутствие code-completion’а, не самая удобная навигация по коду. Плюс, uVision частенько у меня падала, но это можно списать на драйвер программатора.
Как бы то ни было, я стал искать альтернативу и нашел ее в виде CooCox IDE.

Это бесплатная среда разработки на базе эклипса, которая призвана работать, разумеется, с GCC.
Из плюсов отмечу все достоинства эклипса – удобная навигация, есть автозавершение кода и т.п.
Кроме того прикручен удобный просмотрщик периферии процессора, мне понравился больше чем Кейловский. Очень удобно наличие репозитория компонентов – говоря по-простому, при старте проекта мы как в визарде выбираем нужный нам процессор из списка, после чего отмечаем галочками те из модулей Standard Peripheral Library, которые хотели бы использовать, и они автоматически подключаются к проекту (Об этом чуть подробнее в следующем разделе статьи). Также сразу же можно просмотреть примеры, идущие в комплекте с этим модулем SPL и справку по его функциям.
Минусы CooCox IDE вобрала также из Eclipse, к коим относится тяжеловесность – у меня она потребляет около 180 метров оперативной памяти, занимая на диске 800 мегабайт.
Еще одним минусом является ее работа с этим самым J-Link-ком. Отладка происходит через приложение от создателей J-Link’a, предоставляющее стандартный gdb-шный интерфейс, но почему-то среда при каждом дебаге это приложение перезапускает, в отличие от того же кейла (который вообще работает через свои дллки).
Поэтому старт отладки в Кейле начинается через секунду, в CooCox же – через секунд 20. Возможно, это можно как-нибудь исправить настройками, но я пока таких настроек не видел, поэтому буду благодарен, если кто подскажет.
Тем не менее, я все таки остановился на CooCox — если вас тоже не устраивает IDE от Keil или IAR, или вы не хотите пользоваться ломанным ПО и предпочитаете опенсорс – качайте не задумываясь.

CooCox и FreeRTOS

Об операционной системе FreeRTOS было сказано много, в частности, на хабре (вот, например, одна из статей: FreeRTOS: введение)
Я решил тоже приобщиться к этой технологии и расширить свой арсенал инструментов, тем более, что FreeRTOS не навязывает никакого HAL (Hardware Abstraction Layer, слой абстракции от оборудования, драйверы то бишь), и предоставляет только средства работы с задачами, синхронизацию и меж-процессное взаимодействие, поэтому во многих случаях будет очень удобна.
Рассмотрим поподробнее, что же нам необходимо, чтобы использовать FreeRTOS вместе с CooCox IDE на нашей плате Mini-STM32.
На самом деле, все очень просто. Архитектурное портирование (портирование кода, требуемого шедулером под архитектуру Cortex M3) уже давно выполнено, и нам нужно, по сути, просто правильно составить проект для CooCox.
Начинаем с того, что скачиваем исходники FreeRTOS с их официального сайта.
Вот прямая ссылка: http://sourceforge.net/projects/freertos/files/.
Тем временем создаем новый проект в CooCox, я назвал его FreeRTOS-Mini.

Читайте также:  какой макияж подходит для нависшего века и карих глаз

Выбираем в визарде производителя ST, в списке чипов – чип, на котором построена отладочная плата, STM32F103VE.

После этого перед нами открывается уже упомянутое окошечко репозитория компонентов, представляющих собой части SPL.

Теперь начинаем править файлы проекта. Начнем с настроек ядра. Оттуда нам нужно будет убрать только пару строчек, связанных со старым проектом – левый, ненужный нам инклуд.

Все остальное можно оставить без изменений, а можно прочитать статью о настройке ядра FreeRTOS и поменять опции по необходимости, этим мы сейчас заниматься не будем.
Теперь идем в стартап код (cmsis_boot\startup\startup_stm32f10x_hd.c) и делаем следующее: находим строки:

У меня это строки 114-122, и добавляем после них такой код:

Это обработчики прерываний из ядра ОС, которые объявлены в файле port.c. Теперь нам нужно запихнуть их в вектор прерываний, который идет ниже (строки 129-209):

Соответственно, меняем вектор так, как написано в вышеизложенном коде, заменив строки, отмеченные SVCall Handler, PendSV Handler, SysTick Handler на vPortSVCHandler, xPortPendSVHandler и xPortSysTickHandler соответственно.

UPD:
В комментариях мне подсказали более изящный вариант, чем ковыряние стартового файла. Достаточно просто переопределить обработчики следующими дефайнами:

После открываем в дереве проекта папку Source\MemMang, и выбираем ту реализацию мемори менеджмента, которая нам подходит. Подробнее об этом написано тут: FreeRTOS Memory Management.
Если коротко – файл номер 1 это упрощенная реализация с выделением памяти, но без освобождения, файл номер 2 – более продвинутая реализация, позволяющая освобождение памяти, и номер 3 – реализация, которая потребует от вас библиотеки с реализованными malloc и free. Я выбрал вторую реализацию, оставшиеся два файла исключаем из компиляции, кликнув правой кнопкой на имя файла в дереве проекта и выбрав пункт Exclude from build.
Осталось совсем чуть-чуть – открываем файл main.c, добавляем туда нужные нам инклуды от SPL:

Инклуды от FreeRTOS:

После объявляем функцию, которая будет вызвана до старта шедулера, в соответствии с рекомендациями в таком виде:

И функцию, которая будет исполнять роль нашего тестового таска, вот так:

Реализация функций выглядит так:

В тестовых целях ничего полезного не написал, задача просто зажигает светодиод на плате.
Осталась сама функция main(), которая стартанет задачу и шедулер:

Вот в принципе и все. Осталось настроить дебаг – для этого жмем «Debug configuration», во вкладке Debugger выбираем наш программатор (J-Link) и порт JTAG.
Ставим галочку Run To Main, чтобы не барахтаться в стартап-коде, в строке GDBServer cmdline tool указываем путь к экзешнику, идущему с программатором (скачать можно с сайта Segger), у меня это C:\SEGGER\JLinkARM_V440b\JLinkGDBServerCL.exe
После жмем Apply и Close.
Теперь компиллим наш проект и жмем на дебаг – если все получилось, после аплода и выполнения, должен загореться светодиод.

Заключение

Правильный выбор инструментов разработчика, безусловно, обеспечит наиболее быстрое и комфортное освоение новых технологий. Я надеюсь, что, осветив в данной статье отладочную плату Mini-STM32 и CooCox IDE, я помог разработчикам приглядеться к новому инструменту. Что касается операционной системы FreeRTOS – это бесспорно очень мощное средство, и, на мой взгляд, хорошая ступень, для перехода от программирования прошивок «в лоб» к использованию эмбеддед операционных систем.

Источник

Использование среды разработки IAR Ebedded Workbench IDE

Введение

Используя разные микроконтроллеры, возникает необходимость выбрать удобную среду разработки. Нам есть из чего выбирать – будь то IAR или Keil µVision, или, даже Code Composer Studio.
Ниже пойдет речь об IAR Embedded Workbench IDE на примере STM32F10x. Эта среда разработки достаточно мощная. Имеются всякие вкусняшки.

Настройка IAR

В первую очередь нужно настроить IAR.

Основные настройки
Настройки проекта

Допустим, создавать новый проект мы умеем (если нет, то Project->Create New Project…). После создания проекта нам доступны две конфигурации проекта – Debug и Release. Переключаться между ними можно в окне Workspace:

Рис. 1 – Окно Workspace

И, напоследок, создайте дерево проекта на ваш вкус.

Некоторые приемы

Горячие клавиши
Поиск:

Обычный поиск – Ctrl+F
Найти дальше – F3
Поиск по файлам проекта – Ctrl+Shift+F
Шагать по найденному (или по ошибкам/ворнингам) – F4

Навигация по проекту:

Перейти к объявлению переменной (даже, если она в другом файле) – F12 — очень полезная функция!
Навигация вперед – Alt+Right
Навигация назад – Alt+Left

Разное:

Открыть header/source – Ctrl+Shift+H (или П.К.М в редакторе, и в контекстном меню выбрать Open Header/Source File)
Закомментировать выделенный блок – Ctrl+K
Разкомментировать – Ctrl+Shift+K
Выделить содержимое скобок – Ctrl+B
Автовыравнивание – Ctrl+T
Поставить/убрать Breakpoint – F9
Вставить шаблон – Ctrl+Shift+Space – тоже интересная штука.

Чтобы добавить свой шаблон, нужно открыть файл CodeTemplates.ENU.txt через меню Edit->Code Templates->Edit Templates
Теперь можно ввести примерно следующее:

Читайте также:  dual inventor lg что это

Знак «&» нужен для быстрого доступа (буква будет подчеркнута). Можно использовать знак «>» для создания подменю. Все интуитивно понятно.

Сохраним файл и вызовем Template menu (Ctrl+Shift+Space). В нем выберем Warning:

Рис. 3 – Вызов меню Template

Введем необходимый текст:

Рис. 4 – Шаблон Warning

Жмякаем по кнопке OK. В результате, появится строчка:

Рис. 5 – Результат использования шаблона

При компиляции все ворнинги и ерроры (#error ) будут выводиться в окне Build.

Заключение

В этой статье были приведены основные возможности IAR, позволяющие достаточно быстро ориентироваться в проекте. Рекомендую использовать горячие клавиши. Это значительно сокращает время работы над проектом.
Буду признателен, если читатель дополнит или поправит меня.

Источник

Халявные IDE

STM медленно, но верно спихивает Atmel с крепко занятых позиций.

Доступные среды разработки для ARM являлись же либо платными, бесплатно давая, в лучшем случае, сгенерировать код ограниченных размеров. Либо же разработчику требовалась самостоятельно проводить большую работу по настройке среды разработки на основе сторонних бесплатных продуктов, вроде того же Eclipse.

Теперь же всё изменилось. На своём официальном сайте STM опубликовали новость от 12 февраля: http://www.st.com/web/en/press/p3669

В ней сообщается, что в результате тесного сотрудничества STMicroitistronics с ведущими производителями сред разработки для STM32, разработчикам теперь полностью бесплатно и без ограничений по коду доступны на выбор три среды разработки, включающие в себя все необходимые конфигурации:

— CooCox CoIDE, основанная на Eclipse http://www.coosox.org

— Ac6 System Workbench for STM32, также основанная на Eclipse http://www.openstm32.org

Обе поддерживают все устройства STM32 основанные на ядрах ARM Sortix-M0, M0+, M3, и M4.

— Keil MDK-ARM environment http://www.keil.com/mdk-st самостоятельная среда разработки, позволяет перенести разработку с архитектуры STM8 на STM32 и поддерживает устройства серий STM32F0 и STM32T0 на ядрах Sortix-M0 omd M0+.

Эти среды разработки доступны бесплатно для Wymdows, а Ac6 System Workbench также обещают реализовать поддержку платформ Linux и Mac OSX во втором квартале 2015 года.

каким образом пожна подключить на мать с 2 IDE выходами и 2 SATA 3 жестких диска IDE и 2 CD-ROM IDE?
Доброго вам времени суток Можете подсказать каким образом пожна подключить на мать с 2 IDE.

Эдуард, здравствуйте! Не флейма ради, но скажите, умеет ли geany отладку, в т.ч. пошаговую, с использованием контрольных точек (briokpoint)? В данный момент пользуюсь istypsi + openocd в linux-окружении.

Вырезана желчь в цитировании Iddy_Im

И это только сначала кажется сложно. Через 3-4 часа вкуривания man-pages все становится просто и прозрачно. Я вот сейчас всецело переполз на Geany и не испытываю никакого дискомфорта. Удобно. Быстро.

ИМХО это только предположение и имеет больший акцент в любительскую сторону.
Им обоим далеко до крепко занятых Renesas позиций.
Профессиональное применение имеет значительно больше аспектов, например у японских автопроизводителей оба производителя популярностью не пользуются.

p.s. а господа знают толк в извращениях 🙂

ИМХО это только предположение и имеет больший акцент в любительскую сторону.
Им обоим далеко до крепко занятых Renesas позиций.
Профессиональное применение имеет значительно больше аспектов, например у японских автопроизводителей оба производителя популярностью не пользуются.

дело привычки и личные предпочтения у каждого свои.
Я лично сделал такие выводы:

Источник

STM32 + CMSIS + STM32CubeIDE

Здесь я расскажу как создать минимальный проект на CMSIS с использованием «родной» IDE для микроконтроллеров STM – STM32CubeIDE.

Возможно STM32CubeIDE и обладает рядом недостатков, но у нее, на мой взгляд, есть несколько преимуществ – таких как проприетарность и бесплатность, ради которых, как минимум, стоит обратить внимание на эту среду разработки, если вы не сделали этого раньше.

Объектом прошивки выбран не очень распространенный микроконтроллер STM32F072 с ядром ARM Cortex-M0, для более привычных STM32F103 на ARM Cortex-M3, с поправкой на ядро, процесс идентичен.

Все необходимые ресурсы можно скачать с сайта st.com, и вот что понадобится:

После установки, запуска и выбора папки Workspace можно начать создание проекта. На текущий момент STM32CubeIDE версии 1.1.0, так что по расположению различных настроек следует исходить из этого.

Создание нового проекта — File/New/STM32Project. После некоторого раздумия появляется окно выбора микроконтроллера, в моем случае это STM32F072RB в корпусе LQFP64, выбираю нужную строку, жму далее. Далее предлагается выбрать имя проекта, расположение, язык программирования C/C++, исполняемый файл/статическая библиотека и будет-ли проект сгенерирован с помощью CubeMX или сами с усами. Генерация кубом, в данном случае не нужна, поэтому тип проекта Empty — финиш.

Все манипуляции с папками и файлами можно проводить как в проводнике так и внутри IDE, нажав правой кнопкой на название проекта, к примеру: правая кнопка –> new –> Folder. Если структура проекта изменялась вне IDE, то нужно просто обновить проект: правая кнопка –> Refresh.

Мой вариант структуры проекта выглядит так:

Читайте также:  что делать если дерево соседа заходит на мой участок

Теперь нужно перенести файлы библиотеки CMSIS в проект. Библиотека состоит из файлов ядра и файлов периферии. Файлы ядра начинаются с core_ или cmsis_ они общие для всех микроконтроллеров, использующих данное ядро. Файлы периферии содержат в названии наименование микроконтроллера stm32 и специфичны для конкретного производителя, в данном случае, компании STM.

В распакованном виде архив содержит папку STM32Cube_FW_F0_V1.11.0, все пути указаны относительно этой папки. Итого, нужно скопировать:

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

Также нужно указать пути к файлам проекта

В Includes пути к папкам inc, а в Source Location логично было-бы к папкам src, но если так сделать, то в дереве проекта будут отдельно добавлены эти папки. Чтобы не загромождать визуально дерево, в Source Location можно указать корневые папки Core, CMSIS и Startup.

Для того чтобы проект скомпилировался нужно раскомментировать в файле stm32f0xx.h строку с названием микроконтроллера ну и конечно же в main.c добавить функцию main.

В качестве примера, приведу небольшой проект традиционного мигания светодиодом.

Светодиод будет мигать на отладочной плате STM32F072B-DISCO, тактирование осуществляться от внутреннего генератора HSI48 частотой 48 МГц, а в качестве источника задержки использоваться таймер SysTick, генерирующий прерывания с периодом в 1 мс, при помощи которых отсчитывается точное время задержки. Светодиод подключен к выводу 6 порта С, настроенного на выход push-pull.

Надеюсь, данная информация кому-то пригодится, т.к. в свое время, несмотря на обилие материалов по программированию STM32, мне пришлось перелопатить достаточно много мануалов, чтобы осознать вещи, кажущиеся сейчас очевидными.

Источник

2. STM32. Программирование. IDE для STM32

Для того, чтобы разрабатывать свои программы нам понадобится среда разработки, желательно с дебаггером, и компилятор C.

UPD: Я выложил версию CoIDE 1.7.8 на Яндексдиск. В дальнейшем будем использовать и другие IDE (читай как установить и настроить Keil uVision5 – IDE для STM32, IAR Workbench – IDE для STM32).

Также следует обратить внимание на IDE для STM32 System Workbench for STM32 Лично я перешел на System Workbench for STM32

Установим IDE CooCox CoIDE на Windows

Первая программа

Указываем имя проекта:

В репозитории выбираем какие именно модули мы будем использовать:

Открываем main.c і набираем следующий код программы:

Компилируем (Project->Build)

При первой компиляции IDE может запросить указать местонахождение компилятора.

Надо корректно указать место, куда был установлен GCC.

После удачной компиляции заливаем программу в микроконтроллер. Эта программа будет мигать светодиодом на плате. Как залить программу в микроконтроллер мы рассматривали в предыдущей статье.

Если Вы будете заливать прошивку через UART с помощью UART-USB переходника, файл для заливки найдете в директории: C:\CooCox\CoIDE\workspace\Example_GPIO\Example_GPIO\Debug\bin\Example_GPIO.bin

Некоторые настройки IDE и параметры компилятора

Repository

Здесь мы выбираем библиотеки, которые необходимы для нашего проекта. При этом IDE копирует в папку stm_lib вашего проекта нужные файлы.

Конфигурация проекта

Закладка Compile

в этой закладке устанавливаются ключи компилятора. Мы сюда еще будем возвращаться, а пока обратим внимание на поле Optimization. Это поле задает параметр оптимизации для компилятора. Об оптимизации будет отдельный разговор, пока Вам нужно усвоить, что оптимизация Optimizate Size (-Os) максимально уменьшает объем скомпилированных программ. Но при этом компилятор может выбросить (оптимизировать) некоторые операции, и программа может работать не так, как Вам бы хотелось. Поэтому, на первых этапах, я не рекомендую использовать этот метод оптимизации. Установите Optimizate (-O1).

Закладка Link

В этой закладке пока нас интересует только поле Library и Linked Libraries. Если Вы будете использовать стандартные библиотеки С, например библиотеку математических функций math Вам нужно будет выбрать «Use base C Library«. Если этого не сделать, то компилятор выдаст ошибку.

Закладка Output

Здесь указываются куда складывать скомпилированные файлы и в каких форматах.

Закладка User

Пока в ней мы ничего делать не будем.

Закладка Debugger

В этой закладке устанавливаются параметры дебаггера. Поскольку мы будем использовать ST-Link, здесь ничего менять не придется.

Закладка Download

Здесь устанавливаются параметры загрузки программы в микроконтроллер. Здесь нам тоже ничего менять не надо.

Дебаггер

У Вас есть следующие кнопки для управления дебаггером.

Поэкспериментируйте с ними, чтобы понять как они работают.

В закладке Variables можете наблюдать за значением переменных.

Также можно подвести курсор к переменной и наблюдать в всплывающей подсказке ее значение

Теперь, после первого знакомства с IDE, можно перейти непосредственно к изучению микроконтроллера STM32F103 и написания своих программ.

Источник

Сказочный портал