Робототехника, программирование, обучение
0,0
рейтинг
26 августа 2013 в 20:32

Разработка → EmBlocks — IDE для STM32

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


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


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

Достоинства EmBlocks


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

Пример проекта с использованием EmBlocks — мигание светодиодами.

Я работаю чаще всего с 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_lib\src, stm_lib\inc, .\STM32_USB-FS-Device_Driver\src, .\STM32_USB-FS-Device_Driver\inc, cmsis, cmsis\boot
  • Исправил в 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 я выложил у себя на сайте.
Просьба — не положите хостинг :) Если не собираетесь пользоваться прямо сейчас — скачайте потом.
Andrew Kambaroff @RaJa
карма
167,0
рейтинг 0,0
Робототехника, программирование, обучение
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (21)

  • +2
    Спасибо!
    • 0
      Пожалуйста. Я так понимаю, что вопросов не возникло, всем все понятно и описывать ничего не нужно?
      По отладчикам — кроме ST-Link и ColinkEx кто-то использует другие отладчики?
      • 0
        Я пока только интересуют в предверии отпуска когда и планирую заняться. Конечно ближе к практике всегда появляются вопрос. А пока статью добавил в копилку.
      • 0
        Все же напишу. Если говорить про IDE то было бы здорово (мечтательно) рассмотреть небольшой проект (хотя бы включение диода) с 0 до реализации.
        • 0
          Заявка принята :) Это довольно легко.
      • 0
        Так, у меня такой, в coocox на ура работает. Сейчас буду пробовать тут заводить…
  • +1
    Чтож за напасть то такая, брать изначально кросплатформенные IDE и затачивать их под винду: CooCox, Em::Blocks.
    • 0
      Этот человек (http://www.linux.org.ru/people/AiFiLTr0/profile) пилит нормальную систему сборки Antares. Судя по последнему состоянию вещей, поддерживается приличное количество микроконтроллеров.
    • +2
      Проектом занимается один человек, он начал делать это в первую очередь под себя. Только недавно был добавлен просмотр регистров периферии при отладке, т.е. недавно не хватало совсем уж базовых функций.

      Думаю он ждет, когда кто-нибудь присоединится к этом проекте. Плюс на его сайте в левой колонке есть кнопочка Donate и есть форум, на котором можно написать о желаемом функционале.
    • 0
      Да, есть такая проблема — под линукс хотел найти сборку, памятуя о том, как быстро легко и удобно встала CodeBlocks, но оказалось, что ее нету. Вроде говорят о том, что может сделают версии под макось и линукс, но пока ничего не обещали.
  • 0
    А где скриншоты?
    • 0
      Чего именно? там скриншотов наделать можно много, но пока вопросов ни у кого не возникло, поэтому не вижу смысла делать их.
  • 0
    Самому тоже нравится CodeBlocks, но я использую другой подход — Cake как система сборки, он умеет генерировать файлы проекта и под CodeBlocks тоже. В итоге с помощью дополнительных правил сборки пытаюсь создать переносимое ПО. Таким образом получилась своя мини система сборки.

    Пока поддерживаю толькo LPC 17xx и 2xxx от LPC и AVR.
  • 0
    Скажите, а чем сабж лучше CooCox'a, кроме поддержки cpp? С какой ИДЕ старт проще?
    • 0
      Мне был проще с CooCox
    • 0
      Лучше гибкостью, скоростью работы, компактностью, универсальностью, не требует установки. Старт наверное проще в coocox за счёт наличия примеров. Но те же примеры можно скомпилировать и в emblocks. Работать удобнее в emblocks. Но это вопрос предпочтений. Для изучения подойдёт и coocox.
      • 0
        Я вот ковыряясь в coocox обнаружил, что в нем откровенно устаревшие библиотеки. И вся эта история с подключаемыми галочками либами работает из рук вон плохо (ну не вышло у ребят дотянуть даже до уровня xcode). Вот тут, например, автор рекоммендует eclipse + code sourcery g++. Я правильно понимаю, что тут уже есть смысл взять в руки сабж? Я пока не далеко ушел от простого запуска примеров, но в кококсе это задача очень не вдруг решается. :-(
        • 0
          В Emblocks встроен arm-gcc-none-eabi- тот же компилер, что и в code-sourcery тулчейне, версии библиотек в шаблонах проектов обновить крайне легко, я, например CMSIS новую включил.
          В общем, то, о чем я и говорил — среда гибкая и при этом настраивается проще чем Eclipse и работает быстрее. Все необходимые инструменты есть.

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