24/05/2019

STM32 (1): удобная среда разработки — SES: обзор, подготовка к работе


STM32 (1): удобная среда разработки — SES: обзор, подготовка к работе

В этой статье я предлагаю рассмотреть и настроить среду разработки на основе
Segger Embedded Studio (SES).

В отличие от других IDE, используемых для разработки под STM32 (в большинстве своём, основанных на Eclipse), SES, являясь проприетарным продуктом, представляет собой консистентную (целостную) IDE. SES предоставляет следующие возможности:

  • Создание проектов под микроконтроллеры (через GUI-Wizard);
  • Группировку проектов в «решения» (Solution);
  • Массу настроек проекта (так же через GUI);
  • Сборку проектов в различные выходные форматы (ELF, bin, hex);
  • Загрузку прошивки в микроконтроллер через JTAG;
  • Пошаговую отладку программы;
  • Отладочный вывод (RTT — о нём ниже);
  • Многое другое ещё не освоенное мной.

SES является кроссплатформенным продуктом (Linux, Mac, Windows), производителем предоставляется возможность бесплатно (свободно) пользоваться ей в некоммерческих целях. На момент написания этой статьи (май 2019) скачивание даже не требовало регистрации (что по нынешним меркам граничит с фантастикой).

И дополнительный бонус  в SES есть возможность включить в проект Segger RTT (Real Time Transfer, иногда переводят как Real Time Terminal)  очень быстрая и легковесная реализация отладочного вывода (printf) с устройства на компьютер и даже ввода данных с компьютера на устройство (!). Последнее я не использовал и не проверял.

В других IDE отладочный вывод надо реализовывать в коде самому, а иногда и дорабатывать JTAG (допаивать SWO  Single Wire Output, например). А если говорить о Semihosting'е, то придётся ещё дополнительное окно открывать. В компании Segger это реализовали по трём проводам (режим подключения SWD  Single Wire Debug). А сам отладочный вывод отображается в самой SES, во включающейся в режиме отладки вкладке Debug Terminal.

Из недочётов SES можно указать отсутствие поддержки ST-Link, но сделать J-Link из китайского ST-Link'а  не проблема (возможно, напишу о том как это делается).

Отмечу, что SES вся такая целостная и проприетарная не страдает недостатками подобных IDE (Keil, например). В SES можно экспортировать Makefile из проекта (правда вы скорее всего захотите его доработать, если решите работать с проектом на чистом Makefile). Можно открыть файл разметки секций и карты памяти в самом редакторе и править их руками, затем пересобирать проект с новым расположением секций. SES поставляется и работает на обычном GCC (и clang, чем компилировать  можно выбирать). Отсюда вытекают все положительные последствия — привычные настройки, ключи и поведение компилятора.

Для тех, кого я убедил попробовать SES, ссылка для скачивания: скачать SES

SES построена по принципу модульной системы — поддержка всего и вся здесь осуществляется модулями. Для того чтобы создать наш первый проект, нужно установить модуль для интересующего нас микроконтроллера и CMSIS (если, конечно вы не хотите писать код под Cortex-M, не отрываясь от документации). Модули легко устанавливаются (скачиваются из интернета) через GUI. Откройте диалоговое окно Tools —> Package Manager. 

Как видно из снимков этого диалогового окна — у меня уже установлены модули поддержки STM32L0, STM32F4 и CMSIS.

Найдите нужный вам тип контроллера и установите поддержку его. Зависимости устанавливаются автоматически. Например, для STM32 будет установлен CMSIS.
После откройте окно создания проекта (File —> New Project ... ), выберите проект под нужный тип контроллера (установленные вами пакеты поддержки контроллеров будет доступны здесь). Нажмите Next и в следующем окне укажите конкретный процессор (Target Processor) из выбранного семейства.


Если вы здесь забудете это сделать — ничего страшного, это можно будет поменять в последствии в свойствах проекта сколько угодно раз. Дальше Next, Next до упора, Finish. Всё, проект создан, вы можете подключить J-Link к компьютеру и отлаживаться.

В следующей статье я расскажу о том как можно путём некоторых изощрений (или извращений) облегчить себе жизнь. Речь пойдёт о HAL (Hardware Abstraction Level — библиотека абстракции от аппаратуры, облегчающая работу с ней).