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 я выложил у себя на сайте.
    Просьба — не положите хостинг :) Если не собираетесь пользоваться прямо сейчас — скачайте потом.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 21
    • +2
      Спасибо!
      • 0
        Пожалуйста. Я так понимаю, что вопросов не возникло, всем все понятно и описывать ничего не нужно?
        По отладчикам — кроме ST-Link и ColinkEx кто-то использует другие отладчики?
        • 0
          Я пока только интересуют в предверии отпуска когда и планирую заняться. Конечно ближе к практике всегда появляются вопрос. А пока статью добавил в копилку.
          • 0
            Все же напишу. Если говорить про IDE то было бы здорово (мечтательно) рассмотреть небольшой проект (хотя бы включение диода) с 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 и работает быстрее. Все необходимые инструменты есть.

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