EmBlocks — IDE для STM32

в 16:32, , рубрики: IDE, stm32, Программинг микроконтроллеров, метки: , ,

Я обещал поделиться своей настроенной средой Em::Blocks.
Выполняю обещание.
EmBlocks — IDE для STM32

Что такое Em::Blocks?

Это IDE на основе Code::Blocks — кросс-платформенной быстрой среды разработки со встроенным скриптовым языком и очень гибкой настройкой, ориентированной под С/С++ разработку. В среде есть встроенные шаблоны для кучи различных случаев и возможность подключать любые компиляторы.
EmBlocks в отличие от CodeBlocks не кросс-платформенная, она существует только под Windows.
Зато вместе с ней поставляется специальная версия CodeSourcery тулчейна, которая позволяет плотнее интегрировать тулчейн с IDE. Версия в комплекте всегда свежая.
Достоинства EmBlocks

  • быстрая, т.к. написана в native коде
  • расширяемая и хорошо автоматизируется с помощью скриптов
  • шаблоны проектов можно настроить на свой вкус
  • можно самому изменить диалог мастера создания проекта
  • не требует установки — можно носить с собой на флешке и легко перенести с настройками на другой комп
  • из коробки поддерживает отладку через ST-Link и J-Link
  • бесплатная
  • неплохо поддерживается на собственном форуме


Я работаю чаще всего с STM32F103C8, STM32F103VE, STM32F100RB, поэтому и шаблоны проектом модифицировал под них. Но адаптировать под другие процессоры никакой сложности не составляет. Если будут конкретные вопросы — напишу как.
Я настроил ее под себя:

  • Отредактировал шаблоны проектов под STM32F10x medium density, high density, medium density value line
  • В шаблонах заменил структуру проекта разложив по папкам stm_lib, cmsis, cmsis_boot и Src.
  • Обновил версию cmsis в шаблоне проекта до версии 3.0
  • Добавил поддержку ColinkEx debugger (она не очень гибкая, но работает)
  • Добавил выбор процессора в мастере создания проекта для прошивки с помощью ColinkEx
  • Добавил в меню Tools пункты »Flash w ColinkEx», «Flash w ST-Link/V2″
  • Изменил настройку по-умолчанию для ST-Link отладчика с JTAG на SWD
  • Добавил создание HEX файла для Debug target (стандартно только для Release)
  • Добавил в build options USE_STDPERIPH_DRIVER
  • Добавил в search directories stm_libsrc, stm_libinc, .STM32_USB-FS-Device_Driversrc, .STM32_USB-FS-Device_Driverinc, cmsis, cmsisboot
  • Исправил в gcc_arm.ld размер флеша и памяти для STM32F10x_MD серии на значения для STM32F103C8

Что-то менял еще по мелочам, но уже не помню.
Для того, чтобы начать работать с EmBlocks достаточно распаковать архив и запустить emblocks.exe.
Если кому не нравятся внесенные мной изменения — оригинал лежит на сайте разработчиков. Оригинальный splashscreen тоже лежит внутри архива.

Что дают изменения:

  • Проект готов к прошивке сразу после создания визардом
  • Есть все, что нужно, для того, чтобы поморгать светодиодом
  • Проект рассчитан на использование STM32 StdPeriph Library (по мере необходимости добавляем модули к проекту в папку stm_lib, архив в конце статьи)
  • Для работы с USB-FS библиотекой нужно всего лишь кинуть ее в каталог проекта и добавить в проект. (архив с библиотекой в конце статьи)
  • Свежий компилер не ругается на оптимизацию благодаря новой версии CMSIS
  • Легко перенести проект из CooCox IDE
  • Можно использовать CoolinkEx, который довольно популярен у нас и можно купить в России

Наверняка у каждого из нас есть свои тонкости в разработке, поэтому охватить все их я не смогу. Я собираюсь рассказать как пользоваться всем этим в следующих записях. Задавайте вопросы, я постараюсь их учесть при описании.
Вообще у меня есть мысль снизить порог входа в разработку под STM32, облегчив старт набором удобных инструментов. Поставил и через 2 минуты у тебя работает Blink.
Архив EmBlocks и библиотеки: STM32F10x StdPeriph Library, STM32 USB-FS-Device driver я выложил у себя на сайте.
Просьба — не положите хостинг :) Если не собираетесь пользоваться прямо сейчас — скачайте потом.

Автор: RaJa

Источник

Поделиться

  1. Владимир:

    Подскажите, как обновить CMSIS в последнем Em::Bitz? И как добавить поддержку STM32F7/H7 ?
    Спасибо.

* - обязательные к заполнению поля