Конфигурация среды Eclipse/GCC для разработки программ STM32


PDF версия

Это первая из статей, описывающих технологию разработки и отладки прикладных программ для микроконтроллеров семейства STM32 с ядром Cortex-M3 в среде Eclipse/GCC. Тестирующие программы многоцелевых модулей TE-STM32F103 и TE-STM32F107 компании «Терраэлектроника» служат в качестве примеров. В статье описаны средства среды программирования Eclipse/GCC и процесс ее установки, как предварительный этап работы с программами представленных модулей.

Семейство микроконтроллеров STM32 компании STMicroelectronics, основанное на ядре Cortex-M3, появилось на рынке в 2007 г. Современная микроэлектронная технология сделала 32-разрядные микроконтроллеры (МК) с ядром Cortex-M3 сопоставимыми по цене с 16- и даже 8-разрядными МК. При этом максимальная тактовая частота микроконтроллеров STM32 составляет 72 МГц, а производительность по тесту Dhrystone — 1,25 DMIPS/MГц. Показатель энергопотребления ядра Cortex-M3 составляет 0,19 мВт/МГц, таким образом, эти микроконтроллеры не только производительны, но и экономичны. Архитектура Cortex-M3 устанавливает новый стандарт качества среди 32-разрядных МК, а невысокая цена позволяет рекомендовать их разработчикам для перехода с 8- и 16-разрядных микросхем на 32-разрядные.

В настоящее время МК с ядром Cortex-M3 выпускают несколько ведущих мировых производителей: Atmel (семейство AT91SAM3), NXP (семейства LPC1300 и LPC1700), STMicroelectronics (семейство STM32), Texas Instruments (семейство Stellaris). Тем не менее, семейство STM32 компании STMicroelectronics является в настоящее время самым многочисленным и структурно развитым. Оно состоит из 5 линеек:

– STM32F100 Value Line. Микроконтроллеры имеют максимальную тактовую частоту 24 МГц, флэш-память программ до 128 Кбайт, ОЗУ до 8 Кбайт, 12-разрядные АЦП (1) и ЦАП (2), интерфейсы UART (3), I2C (2), SPI (2). При цене, меньшей, чем у некоторых 8-разрядных МК, эти микроконтроллеры целесообразны для их замены в перспективных разработках;

– STM32F101 Access Line. Максимальная тактовая частота 36 МГц, флэш-память программ до 1 Мбайт, ОЗУ до 80 Кбайт, 12-разрядные АЦП (1) и ЦАП (2), интерфейсы UART (5), I2C (2), SPI (3), параллельный интерфейс LCD. Эта линейка уже допускает подключение небольшого дисплея;

– STM32F102 USB Access Line. Максимальная тактовая частота 48 МГц, флэш-память программ до 128 Кбайт, ОЗУ до 16 Кбайт, 12-разрядный АЦП, кроме интерфейсов UART (3), I2C (2) и SPI (2) еще имеется USB-device 2.0 Full Speed;

– STM32F103 Performance Line. Максимальная тактовая частота 72 МГц, флэш-память программ до 1 Мб, ОЗУ до 96 Кбайт, 12-разрядные АЦП (3) и ЦАП (2), интерфейсы UART (5), I2C (2), SPI (3), USB-device 2.0 FS, CAN, SDIO, параллельный интерфейс LCD. Это наиболее мощная по параметрам ядра и набору интерфейсов линейка;

– STM32F105/107 Connectivity Line. Максимальная тактовая частота 72 МГц, флэш-память программ до 256 Кбайт, ОЗУ до 64 Кбайт, 12-разрядные АЦП (2) и ЦАП (2), интерфейсы UART (5), I2C (2), SPI (3), USB-device 2.0 FS, CAN (2), Ethernet (в STM32F107). Это микроконтроллеры с расширенными коммуникационными возможностями.

Конфигурации CPU, памяти и интерфейсов в разных линейках отличаются в зависимости от их ориентации на выполнение определенных задач. Например, в старших моделях микроконтроллеров линейки Performance Line есть модуль SDIO — контроллер SD-карты, а в линейке Connectivity Line с широким набором интерфейсов этого контроллера нет. Таким образом, встраиваемые модули для различных приложений должны быть реализованы на разных моделях микроконтроллеров. По этой причине компания «Терраэлектроника» выпускает в настоящее время два типа многоцелевых модулей на микроконтроллерах STM32.

Модуль TE-STM32F103 реализован на МК STM32F103RET6, который в корпусе LQFP64 объединяет процессорное ядро с максимальной тактовой частотой 72 МГц, 512 Кбайт флэш-памяти программ, 64 Кбайт ОЗУ и обширный набор периферийных устройств, среди которых 12-разрядные АЦП и ЦАП. Преимуществом модуля TE-STM32F103 является обслуживание слота карты памяти microSD с использованием блока микроконтроллера SDIO, который обеспечивает 4-разрядный интерфейс, увеличивающий скорость обмена. TE-STM32F103 позиционируется компанией «Терраэлектроника», как универсальный бюджетный встраиваемый модуль, который может, в том числе, служить учебно-демонстрационным средством для освоения 32-разрядных МК.

Модуль TE-STM32F107 реализован на МК STM32F107VCT6, который относится к линейке Connectivity Line семейства STM32. При общих для семейства технологических нормах и степени интеграции чипа акцент сделан в сторону увеличения набора коммуникационных интерфейсов. Процессорное ядро то же, флэш-память программ уменьшена до 256 Кбайт, зато в набор интерфейсов входят порты Ehternet, USB OTG, два порта CAN. TE-STM32F107 позиционируется компанией «Терраэлектроника», как универсальный встраиваемый модуль с расширенным набором коммуникационных интерфейсов. Кроме того, этот модуль рекомендуется как управляющий для работы в тандеме с дисплейными модулями TE-ULCD35/56.

В компании «Терраэлектроника» комплекс мероприятий по сопровождению производства и эксплуатации многоцелевых модулей включает разработку тестирующих программ для каждого из них. Тестирующие программы проверяют основные функциональные узлы модулей: центральный процессор, блоки обработки сигналов (АЦП), основные интерфейсы (SD-card, USB, CAN, Ethernet). Исходные тексты этих программ доступны разработчикам и могут служить основой при создании собственного программного обеспечения. В настоящее время основная часть тестирующих программ разрабатывается в виде проектов для среды Eclipse/GCC, поскольку это дает возможность работать с ними, используя бюджетный набор инструментальных средств.

Известные производители системного программного обеспечения, компании IAR Systems, Keil и ряд других, предлагают на рынке свои продукты, которые позволяют разрабатывать прикладные программы (firmware) для микроконтроллеров ARM и Cortex-M3. Однако, стоимость сертифицированных средств достаточно велика. Кроме того, схемные эмуляторы, необходимые для комплексной отладки аппаратуры и программ, часто ориентированы на использование с определенной средой (IAR — J-Link, Keil — ULink2) и тоже недешевы. Применение сертифицированных инструментальных средств необходимо в тех предметных областях, где предъявляются особые требования к надежности прикладных программ.

В качестве альтернативы дорогостоящему фирменному инструментарию сообщество разработчиков создало широкий набор бесплатно распространяемых программных средств, которые доступны всем на условиях некоммерческого использования. К таким средствам относится среда (IDE — Integrated Development Environment) Eclipse, первоначально развивавшаяся компанией IBM, а затем переданная в свободное пользование. Интегрированные среды (оболочки) обычно обеспечивают многооконный интерфейс пользователя, а также имеют в своем составе редактор текста с синтаксической подсветкой. Трансляция проекта выполняется с использованием подключаемого компилятора, для микроконтроллеров это часто компилятор языка Cи из состава GCC (Gnu Compiler Collection).

Рассмотрим процесс создания и отладки прикладных программ для микроконтроллеров Cortex-M3, используя модули TE-STM32F103/107 и их тестирующие программы. Работа с бюджетными средствами Eclipse/GCC при отладке микроконтроллерных систем требует знания всех подробностей процесса, поэтому в качестве первого этапа разработки выполним установку и настройку набора программных средств Eclipse/GCC для обработки проектов на языке Cи МК семейства STM32. При отладке предполагаем использование бюджетного схемного эмулятора ARM-USB-OCD компании Olimex. Схема взаимодействия IDE с отладочными средствами имеет вид, изображенный на рисунке 1.

Рис 1. Схема взаимодействия IDE с отладочными средствами

Cостав и установка инструментальных программных средств

Разработка и отладка проектов для МК семейства STM32 требует установки следующих средств на компьютере под управлением OC Windows:

– среды выполнения приложений Java — Java Runtime Environment (JRE);

– интегрированной среды разработки Eclipse IDE for C/C++ Developers;

– пакета инструментов командной строки и JTAG сервера OpenOCD;

– драйвера схемного эмулятора Olimex ARM-USB-OCD.

Существует много альтернативных пакетов GNU Tools для ARM-процессоров и микроконтроллеров. Здесь рассматривается пакет KGP, который удобен тем, что в него включены не только компилятор (GCC), утилиты работы с бинарными файлами (Binutils) и libc-библиотека, но и отладчик (GDB), утилиты rm, sh, make из среды MinGW, а также GDB сервер OpenOCD. Таким образом, пакет KGP позволяет быстро начать процесс разработки.

Пакет KGP доступен на сайте в виде архива формата 7z. Для установки пакета требуется распаковать архив, скопировать его в удобную директорию и добавить к переменной PATH путь к директории root/bin пакета, где root — имя директории установки пакета. После этого инструменты командной строки должны стать доступными для использования. Проверить это можно командами:

arm-kgp-eabi-ld -v

arm-kgp-eabi-gcc -v

arm-kgp-eabi-gdb -v

openocd -v

make -v

Если все в порядке, то в ответ будут выведены номера установленных версий компонентов (см. рис. 2).

Установка драйвера для эмулятора Olimex ARM-USB-OCD ничем не отличается от установки драйверов для большинства USB-устройств — при первом подключении устройства операционная система сообщит о попытке добавления нового устройства и попросит указать расположение драйверов, которые заблаговременно имеет смысл распаковать в любую временную папку.

Рис. 2. Номера установленных версий компонентов

Среда выполнения приложений Java (JRE) для Windows поставляется как установочный пакет, который после скачивания необходимо запустить. Для проверки доступности JRE необходимо в командной строке ввести команду java–version. Если среда JRE правильно установлена, то в ответ будет возвращен номер версии JRE (см. рис. 3).

Рис .3. Номер версии JRE

Среда Eclipse IDE for C/C++ Developers (далее IDE) также хранится в виде архива. Установка состоит в его распаковке и записи содержимого в удобную директорию. После этого (при успешной установке JRE) среда готова к запуску из директории установки командой eclipse.exe. При запуске IDE выдается запрос на место расположения Workspace — директории, в которой будут храниться проекты (см. рис. 4).

Рис. 4. Workspace — директория для хранения проекта

Следующим шагом является настройка среды Eclipse для разработки прикладных программ для МК. Для этого необходимо поставить плагины, позволяющие выполнять отладку МК через JTAG. Вызвав меню Help->Install new software необходимо поставить плагин Eclipse GDB Hardware Debugging Plug-in. В версии IDE из архива на сайте этот плагин уже установлен.

Если плагин установлен правильно, то IDE позволяет добавить конфигурацию отладки через JTAG — GDB Hardware Debugging, которую можно настроить, вызвав меню Debug Configuration (см. рис. 5)

Рис. 5. Меню Debug Configuration

Создание/импорт проекта

Создание проекта (см. рис. 6) начинается последовательностью File->New->Project. В окнах нужно выбрать С Project/Makefile project/Empty Project. После указания имени проекта и нажатия кнопки Finish, IDE создаст пустой проект (см. рис. 7). Далее нужно добавить дерево исходных файлов и Makefile в директорию проекта, и тогда с ним можно работать. Все действия, которые требуются при разработке, должны быть отражены в виде make-целей и зависимостей. IDE позволяет выполнить любую команду по достижению той или иной цели. Данная функциональность отражена в окне Make Targets (см. рис. 8). Если это окно не видно, то его можно отобразить с помощью команды меню Windows->Show View->Othter, необходимо выбрать Make Targets. Имея доступ к этому окну, можно добавить команды для выполнения целей проекта (см. рис. 9 а, б).

Рис. 6. Окно создания проекта
Рис. 7. IDE создает пустой проект
Рис. 8. Окно Make Targets
Рис. 9. а, б Команды для выполнения целей проекта

IDE поддерживает импорт существующего проекта. Для импорта проекта тестирования модуля TE-STM32F103 в окне Project Explorer (см. рис. 10) нажатием правой кнопки мыши нужно вызвать меню Import. Далее выбрать Exist Projects into Workspace, после нажатия Next и указания пути к импортируемому проекту IDE скопирует проект в Workspace. В окне Project Explore должно появиться дерево файлов проекта.

Рис. 10. Окно Project Explorer

Конфигурация параметров отладки

Перед работой с проектом нужно установить параметры отладки. Вначале нужно настроить IDE для работы с OpenOCD (см. рис. 11). После выбора External Tools Configuration откроется диалоговое окно настройки внешних программ (см. рис. 12). Используя это окно, нужно добавить новую внешнюю программу и заполнить вкладки. Основной вкладкой в данном случае является Main, она позволяет определить имя файла внешней программы, указать рабочую директорию и аргументы командной строки. В данном случае в качестве аргумента указывается внешняя по отношению к проекту директория с файлами конфигурации OpenOCD при работе с Stm32 и сам файл конфигурации OpenOCD.

Рис. 11. Окно для работы с OpenOCD
Рис. 12. Диалоговое окно настройки внешних программ

Вкладка Common обеспечивает настройку вывода лога OpenOCD в одно из окон IDE, а также быстрый вызов OpenOCD из меню. После настройки взаимодействия IDE с OpenOCD, необходимо проверить работоспособность конфигурации. Подключите к компьютеру модуль TE-STM32F103 через эмулятор, соединив их кабелем JTAG. Сделайте проект активным и вызовите из меню OpenOCD (на рисунке 13 меню «1 stm32ret6»). В случае успеха ответ будет выглядеть примерно так, как показано на рисунке 14. Кроме того, IDE добавляет отображение запущенного процесса в окно Debug (см. рис. 15).

Рис. 13. Меню «1 stm32ret6»
Рис. 14. Ответ системы в случае правильного набора команд
Рис .15. Отображение запущенного процесса в окне Debug

OpenOCD подключился к эмулятору, произвел инициализацию его и TAP-контроллера процессора целевой платы, готов к работе. Далее нужно настроить GDB. Для этого необходимо открыть текущий проект и настроить конфигурацию отладки (все действия по конфигурации всегда выполняются по отношению к открытому и выбранному проекту). После выбора Debug Configuration (см. рис. 16) откроется окно диалога конфигурации отладки (см. рис. 17 а, б)

Рис. 16. Выбор Debug Configuration в окне открытого проектаРис. 16. Выбор Debug Configuration в окне открытого проекта
Рис. 17 а, б Окно диалога конфигурации отладки

Сначала необходимо добавить конфигурацию в раздел дерева меню GDB Hardware Debugging, затем дать ему имя и настроить вкладки. В поле GDB Command необходимо указать используемый отладчик. Остальные поля рекомендуется оставить, как на рисунках 17 а, б. Ниже приведена вкладка Startup. Самым важным полем является Initialization Command. Необходимо отметить, что инициализация связи GDB c эмулятором происходит исключительно под управлением команд скрипта. Любые другие элементы вкладки должны быть неактивны, если только вы сами целенаправленно не желаете воспользоваться встроенными автоматическими возможностями IDE по взаимодействию с GDB.

Скрипт инициализации (для конфигурации запись+отладка) имеет вид:

set debug xml — поддержка описаний и карт памяти на XML;

target remote localhost:3333 — соединение с сервером OpenOCD по TCP/IP;

monitor halt — останов отлаживаемого устройства;

monitor flash probe 0 — проверка флэш-памяти;

monitor stm32x mass_erase 0 — стирание флэш-памяти;

monitor flash write_image out/image.bin — запись программы во флэш-память;

monitor reset halt — сброс и останов отлаживаемого устройства;

monitor soft_reset_halt — программный сброс и останов;

thbreak main — установка точки прерывания;

continue — запуск исполнения программы.

Разумно также иметь конфигурацию типа сброс+отладка, которая позволит выполнить рестарт и начать отладку без записи во флэш-память микроконтроллера. В этом случае в скрипте отсутствуют команды стирания флэш-памяти и записи в нее кода (см. рис. 18). Вкладка Common (см. рис. 19) позволяет добавить конфигурацию в быстрое меню.

Рис. 18. Окно Debug Configuration без команд стирания флэш-памяти и записи в нее кода
Рис. 19. Вкладка Common позволяет добавить конфигурацию в быстрое меню

После проведенных настроек набор инструментальных программных средств Eclipse/GCC со схемным эмулятором ARM-USB-OCD можно считать подготовленным к созданию проекта, записи кода во флэш-память МК и отладке с аппаратурой. Установочные файлы всех перечисленных средств доступны на сайте компании «Терраэлектроника» в разделе описания модулей TE-STM32F103 и TE-STM32F107, а также на компакт-дисках из комплектов поставки этих модулей.

В следующей статье мы рассмотрим состав библиотек компании STMicroelectronics для микроконтроллеров STM32, технологию разработки и отладки прикладных программ в среде Eclipse/GCC.

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *