Sl-Alex домашняя лаборатория

Em::Blocks - IDE для ARM Cortex

Просмотров: 6770Комментарии: 0
Заметки

Перевод: EN
Em::Blocks - IDE для ARM Cortex

Однажды, намучавшись вдоволь на своём неслабом компьютере с тормозами CooCox и всех прочих IDE, основанных на Eclipse, я решил в очередной раз поискать нормальную альтернативу. Поскольку некоторые мои проекты предполагается выкладывать в общий доступ, человек, скачавший проект, должен иметь возможность бесплатно и честно его повторить. Возможности "облегчённых" версий платных программ мягко говоря, не радовали, поэтому поиск был ограничен чисто бесплатными вариантами. И вот в один прекрасный день моему взору предстал Em::Blocks.

Скриншот Em::Blocks

Рисунок 1: Скриншот Em::Blocks

Кто в теме - сразу поймет, на базе какой IDE сделана эта. Для остальных поясню: это Code::Blocks, open-source IDE, весьма быстрая и функциональная. Её можно использовать как для программирования на С/С++, так и на других языках. Кроме того, среда является кросс-платформенной, то есть работает как под Linux, так и под Windows, и даже (как говорят) под Mac OS X. В своё время, когда я ещё много писал для AVR, я использовал именно Code::Blocks. Не спрашивайте меня по поводу отладки - в те времена мне практически всегда хватало вывода сообщений на последовательный порт, мигания светодиодиком или вывода на ЖК-индикатор, так что этим я не заморачивался. Как минимум такого же функционала я ждал и от Em::Blocks. И, как выяснилось, не ошибся.

Начнём с начала, то есть с создания проекта. А при попытке создать новый проект нас встречает мастер, предлагающий выбрать семейство контроллеров, выбрать конкретный чип и настроить параметры проекта и средство отладки. На момент написания статьи поддерживаются следующие семейства контроллеров:

  • Atmel ARM (SAMD20, SAM3, SAM4, SAM7)
  • EnergyMicro ARM (EFM32x)
  • NXP ARM (EM77x, LPC1x)
  • PIC18
  • PIC32
  • dsPIC
  • STmicro (Cortex M0, M3, M4)
  • Texas Instruments MSP430

Из отладочных адаптеров "из коробки" поддерживаются ST-Link и J-Link. Впрочем, любые другие адаптеры, поддерживающие GDB, тоже должны работать. Лично я предпочитаю ST-Link, поскольку в основном в своих проектах использую STM32.

Из общих минусов среды отмечу лишь один - нет версии под Linux. Но разработчик на форуме пишет о том, что такая версия входит в его планы, так что, видимо, придётся немного подождать. Для нетерпеливых сообщу: Em::Blocks работает под Wine, хотя почему-то и не запоминает настройки.

После окончания работы мастера мы получаем уже готовый проект с подключенными файлами CMSIS и периферийных библиотек. Версия библиотек актуальна, по крайней мере для STM32. Ещё один момент: в случае, если для вашего любимого процессора по умолчанию не подключаются периферийные библиотеки или другие необходимые файлы - вы можете сами всё это изменить. Для этого можете посмотреть, как это реализовано на примере STM32 в следующей папке:

$папка установки$/share/EmBlocks/templates/wizard/arm/st

Кстати, в этих папках вы можете увидеть такую интересную штуку, как скрипты. Интересную потому, что вы можете, написав свой скрипт и добавив его вызов в Startup скрипт, легко модифицировать стандартное меню Em::Blocks, добавить в него свои пункты. Например, создание дистрибутива. Готовый пример такого скрипта лежит в следующей папке:

$папка установки$/share/EmBlocks/scripts

Добавить его в меню очень просто: выбираем "Settings/Edit startup script", и в открывшемся скрипте добавляем следующую строчку:

Include(_T("make_dist.script"));

Перезапускаем Em::Blocks и видим, что в меню "Project" появился пункт "Create package for distribution".

С некоторыми вкусностями разобрались, теперь перейдём к компиляции и отладке. Никаких сложностей возникнуть не должно, те, кто работал с Keil, отметят, что интерфейс очень похож, даже сочетания клавиш совпадают, но есть ещё один момент, который может сильно облегчить нам жизнь. Речь пойдёт о SVD (System View Description) файлах.

Эти файлы содержат подробную информацию о регистрах процессора и даже о назначении отдельных битов регистров, так что вам не придётся с документацией на процессор в одной руке и с калькулятором в другой искать нужный регистр и вычислять, что же там зашифровано. Подключить эти файлы можно двумя путями: через онлайн репозиторий либо (если у вас уже есть нужный файл) вручную. В первом случае вам нужно выбрать меню "Debug/Plugins/SVD repository..." и выбрать нужный файл из репозитория, после чего он автоматически добавится в ваш проект. Во втором случае вы должны вручную указать этот файл в "Debug/Interfaces" на вкладке "Target settings".

Вот вроде бы и все основные моменты, которые не бросаются в глаза, но которые могут быть весьма полезными при работе с Em::Blocks. Всё остальное находится достаточно интуитивно и не доставляет проблем. В этом кратком описании я не рассказал о многих других плюсах этой IDE: нормальной подсветке синтаксиса, автодополнении, плагине TODO (очень удобная штука), интегрированном doxygen и многих других. IDE довольно быстро развивается и баги фиксятся быстрее, чем я успеваю их находить :). На странице проекта есть баг-трекер и форум, где вы можете задать интересующий вас вопрос. В общем, я свой выбор сделал. Сделайте и вы.