Настройка Eclipse Mars под STM32
Установка и настройка Eclipse под свою плату с нуля.
Скачиваем и устанавливаем последнии версии приведенного ниже списка:
Это базовый набор ПО для работы. Далее несколько плагинов для Eclipse которыми я лично пользуюсь, искать в Marketplace по названию:
- Eclipse Color Theme – понятно из названия
- MercurialEclipse – управление репозиториями Hg
- Embedded Systems Register View – просмотр регистров микроконтроллера
По установки основных компонентов проблем возникнуть не должно, Eclipse устанавливается в режиме разработчика C/C++. Драйверы для вашего дебаггера уже должны быть установлены.
Тонкая настройка Eclipse
Первое что хочется включить – сохранение при компиляции
Preferences -> General -> Workspace – [V] Save automatically before build
Далее если используете темную тему Eclipse:
Preferences -> General -> Appearance – Theme – Dark
И свою цветовую схему:
Preferences -> General -> Appearance -> Color Theme – Zenburn (например)
То предварительно необходимо включить Oomph recorder, т.к. частое явление что после перезапуска слетает цветовая схема на ту, что по умолчанию при включенной теме Dark. Включаем Oomph:
Preferences -> Oomph -> Setup Tasks -> Preference Recorder – [V] Record into
Только после этого устанавливаем тему Dark, а потом идем в Color Theme и ставим свою цветовую схему и применяем. По выходу из настроек Oomph предложит записать их – соглашаемся. Если перезапустить Eclipse через некоторое время настройки прогрузятся и все станет на свои места.
Также можно включить поддержку комментариев doxygen. Она только добавляет небольшое удобство при комментировании, но комментарии как в IntelliSense потом не отображаются в сплывающих сообщениях (boot to the dev.head!)
Preferences -> C/C++ -> Editor – Documentation tool comments – Doxygen
Автоматический запуск Debug конфигурации
Preferences -> Run/Debug -> Launching – Launch Operation – [V] Always launch the previously launched application
Создаем проект

File -> New -> C project
Здесь выбираем расположение и имя проекта. В окне ProjectType выбираем соответствующую серию процессоров Executable – STM32Fxxx. Toolchains – Cross ARM GCC
Жмем далее и вводим информацию о выбранном чипе, например я выбрал STM32F072CB 128kB flash & 16kB RAM – все эти данные вводим в таблицу
Content – empty – это нас не интересует
System calls – по своему усмотрению, я не использую – freestanding
Trace output – аналогично, если используете трассировку через SWO то включаем
Чекбоксы по своему желанию.
Далее предлагают выбрать названия для папок, потом конфигурации Debug/Release, и в конце нам предлагают указать Toolchain path (arm-none-eabi-gcc), если путь автоматически не заполнен, то надо указать вручную, чтото вроде
“C:/Program Files (x86)/GNU Tools ARM Embedded/<version>/bin”

Получаем перед глазами проект с поддержкой Trace для stm studio, stdperiphlib и системные cmsis файлы. Я лично не фанат отдельного распихивания .h и .c файлов, поэтому все родное старательно объединяется в единые папки и получается такой базовый набор:
После такого перетасовывания естественно все ссылки сбиваются и необходимо заного настроить проект, заодно и разберемся как это делается вообще. Также бывает что *.c и *.h файлы добавленные в проект распознаются как для языка c++, от этого ломается процесс компиляции. Чтобы это исправить, в Project-> Properties -> C/C++ General -> File Types – Use project settings и добавьте файлы *.c и *.h как C source / C header file. Либо в глобальных настройках workspace, но тогда это повлияет на все проекты.

Потом заходим в настройки папки code, например, которая раньше называлась src, в C/C++ Build убираем галочку Exclude resource from build, это позволяет компилировать все содержимое папки, и над ней появляется значек “c” как на папке system. Пропишем пути к библиотекам, в настройках проекта C/C++ General -> Path and Symbols – > Includes
Вверху Configuration – All configurations, теперь можно менять пути. Удаляем все родные и добавляем как на картинке для всех Languages, приминительно к моим названиям, для ваших названий подставьте соответственно.Во вкладке Symbols указываются дефайны используемые при компиляции. Вкладка Library Path должна содержать папку со скриптами *.ld, обычно это папка ldscripts. Во вкладке Source Location указываем все корневые папки где будут находится исходные коды, в своем случае я добавил еще папку code.
После этих операций проект готов к компиляции, но осталось еще выстрелить себе в ногу.
Все настройки компилятора находятся в настройках проекта -> C/C++ Build -> Settings. Стоит учесть что все пути Include добавляются сюда автоматически из настроек Paths and Symbols.
Попробуйте запустить компиляцию Ctrl+B. Проект должен собраться без ошибок.
Стреляем в ногу Отладка и прошивка
Заходим в настройки Debug configurations и создаем новую настройку в пункте GDB OpenOCD Debugging под названием Demo Compile-Debug
Вкладка Main:
В поле C/C++ Application жмем кнопку Search Project и выбираем наш единственный скомпилированный “xxx.elf” файл, в итоге получится чтото вроде “Debug/Demo.elf”
Build configuration – use active
[V] Enable auto build
Вкладка Debugger:
Тут все немного сложнее становится, необходимо указать пути к типу дебаггера(interface) и к процессору (target). Конфиг файлы находятся по пути %Program Files%\Eclipse\OpenOCD\<version>\scripts
Первое что рекомендую сделать – немного подшаманить stm32f0x.cfg:
Закомментировать все строки adapter_khz 1000 добавив вначале #. Это позволит из eclipse настроить скорость передачи данных.
Допустим я использую st-link v2 и процессор stm32f072, интерфейс SWD без пина RST, в настройках пишу:
-f interface/stlink-v2.cfg -f target/stm32f0x.cfg -c “adapter_khz 2000;set WORKAREASIZE 0x2000;reset_config none separate”
Остальное оставляю по умолчанию.
Вкладка Startup:
[V] Initial Reset
Пустое окно комманд
[ ] Enable ARM semihosting – я не использую
[V] Load symbols
[V] Use project binary
[V] Load executable
[V] Use project binary
[V] Set breakpoint at “main”
[V] Continue
Вкладка Common
[V] Save as Shared file – сохранить настройку отладчика в папке проекта. После этого он появится в Project explorer
Apply!
Отладчик подготовлен. Теперь его можно нажать Debug и проект запустится. Это что касается запуска дебага с предварительной прошивкой процессора, а что если надо отладить уже работающий процессор?
Отладка без прошивки и без сброса
Возвращаемся в Debug configurations и копируем только что созданный Demo Compile-Debug, переименовав в Demo Run-Debug
Вкладка Startup:
Убираем галочку Initial Reset и в окне комманд пишем:
monitor halt
stepi
Убираем галочку с Load executable
Убираем Pre-run/Restart reset
Убираем Set breakpoint at
Тадам! При запуске отладки данным способом процессор не будет прошиваться и сбрасываться, что позволит поймать даже самые трудноуловимые баги Однако elf файл должен совпадать с тем софтом что зашит в чип, иначе могут не совпасть адреса переменных.
Прошивка без отладки

Теперь самое интересное – как прошить без запуска отладчика. Для этого нам понадобяться External Tools, заходим в External Tools Configuration – создаем новую конфигурацию. Например Demo_Run и пишем:
Location: $
Working Directory -> Browse Workspace -> выбираем свой проект, у меня Demo, в итоге получилось $
Arguments: с небольшими изменениями настройка запуска прошиватора:
-f interface/stlink-v2.cfg -f target/stm32f0x.cfg -c “adapter_khz 4000;init; reset init; flash write_image erase Debug/Demo.hex; reset run; shutdown;”
Жирным шрифтом указан путь к файлу прошивки (hex или elf, не важно), укажите свое название. (товарищи, кто знает как указывать эти файлы через Variables чтоб не надо было каждый раз создавать конфигурацию под каждый проект?)
Во вкладке Build указываем Build before launch – Specific project – выберите ваш проект
Во вкладке Common – Save as – Shared file -> Browse -> выберите текущий проект (\Demo)
Display in favorites menu ставим галочку.
Готово! Теперь если нажать на список External Tools, там будет находится Debug_Run. Жмем, компилируется, прошивается, запускается!
Hints ‘n Tips
Если парсер ругается Error’ами на то что не найдены какиенибудь дефайны или переменные, но проект компилируется и работает успешно, попробуйте провести переиндексацию проекта – ПКМ по папке проекта -> Index -> Rebuild
Очистку проекта можно также выполнить через контекстное меню -> Clean project
Настройка отладки в Eclipse для микроконтроллеров ARM
Прежде чем мы продолжим, вам необходимо установить плагин аппаратной отладки C / C ++ GDB для Eclipse . Щелкните меню « Справка» и выберите « Установить новое программное обеспечение…», чтобы открыть окно с названием « Установить» . В этом окне из раскрывающегося списка Работа с выберите самый последний сайт обновления CDT — это будет запись типа
) или что-то очень похожее, в зависимости от версии Eclipse . Поместите курсор в текстовое поле фильтра — то, которое имеет серый
, чуть ниже Работа с ярлыком — и введите
там. Через некоторое время вы должны увидеть несколько предложений — установите флажок рядом с C / C ++ GDB Hardware Debugging в группе CDT Optional Features и нажмите Next в нижней части окна. На следующем шаге — « Сведения об установке» — просто снова нажмите « Далее» . На последнем этапе — Просмотр лицензий — вы должны выбрать Я принимаю условия лицензионного соглашения (очевидно, после того, как вы внимательно его прочитали, полностью поняли и проконсультировались со своими юристами — это то, что мы все делаем, когда сталкиваемся со стеной непонятного юридический текст (;) и нажмите Готово. Процесс установки плагина займет некоторое время (прогресс будет отображаться в строке состояния в нижней части окна Eclipse ), и когда он завершится, вам будет предложено перезапустить Eclipse — подтвердите с помощью Restart Now, и все готово. этот шаг.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1-300×224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1-768×574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-1.png 869w» alt=»» width=»150″ height=»112″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2-300×224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2-768×574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-2.png 869w» alt=»» width=»150″ height=»112″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3-300×224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3-768×574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-3.png 869w» alt=»» width=»150″ height=»112″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4-300×224.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4-768×574.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-4.png 869w» alt=»» width=»150″ height=»112″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
/>https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-5-300×82.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-install-new-software-5.png 518w» alt=»» width=»150″ height=»41″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Перспектива отладки
Если вы никогда не выполняли отладку в текущей установке Eclipse , перспектива отладки не будет видна. Перспектива в Eclipse , является расположение панелей, вкладок, кнопок и так далее — все предыдущие скриншоты были сделаны в настройки по умолчанию для C / C ++ перспектива, которая состоит из Project Explorer , слева, редактор в центре, Outline справа и различные вкладки ( Проблемы , Консоль ,…) внизу. За небольшими исключениями (строка меню и панель инструментов вверху) перспектива влияет почти на все, что вы видите. Чтобы открыть перспективу отладки, щелкнитеОкно> Перспектива> Открыть перспективу> Отладка . После открытия вы можете быстро переключаться между перспективами, используя маленькие кнопки в правой части панели инструментов (справа от текстового поля быстрого доступа ) — первая (со знаком плюс) используется для открытия других перспектив, следующая ( с буквой C внутри квадрата) — это перспектива C / C ++, а последняя (зеленая ошибка) — перспектива отладки .
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-1-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-1-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-open-debug-perspective-1.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
В перспективе Debug Project Explorer вообще не виден, редактор, Outline и панель с различными вкладками ( Console , Problems ,…) перемещены немного ниже, а верхняя часть окна занята вкладкой Debug слева (это здесь будет отображаться стек вызовов), а правая часть зарезервирована для таких вкладок, как переменные , точки останова , регистры , выражения и некоторые другие.
Настройка и запуск OpenOCD
На самом деле это самая сложная часть всего процесса, поскольку точная процедура немного отличается для каждой платы или комбинации отладочного интерфейса с целевой микросхемой. В этом абзаце мы будем использовать плату STM32F4DISCOVERY , поэтому для другой настройки вам необходимо соответствующим образом настроить некоторые конфигурации. Также стоит отметить, что драйверы для интерфейса отладки — так что в случае нашей платы это будет ST-LINK / V2 — должны быть установлены в вашей системе (если еще не установлены), в противном случае действия, описанные далее в этой главе, будут не работать.
OpenOCD работает как удаленный сервер GDB , поэтому по сути является посредником между отладчиком GDB и оборудованием. Всякий раз, когда вы хотите начать сеанс отладки, OpenOCD должен работать в фоновом режиме. Если ваш сеанс отладки завершается, вам не нужно закрывать или перезапускать OpenOCD — он может продолжать работать в фоновом режиме столько, сколько потребуется. OpenOCD также не обязательно запускать через Eclipse — вы можете запустить его вручную в эмуляторе терминала, если хотите. Фактически — OpenOCD даже не нужно запускать на том же компьютере, что и ваш отладчик, если он доступен по сети. Но вернемся к основной теме .
В Eclipse есть функция External Tools , которая позволяет запускать любой исполняемый файл, который вам нравится, прямо из IDE . Это то, что мы будем использовать для запуска OpenOCD . Чтобы создать новую конфигурацию, выберите «Выполнить»> «Внешние инструменты»> «Конфигурации внешних инструментов…» , в списке слева выберите « Программа» и нажмите кнопку « Новая конфигурация запуска» (лист бумаги со знаком плюса, первый слева над списком). В качестве альтернативы вы можете просто дважды щелкнуть элемент « Программа» в левом списке.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-1.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-2.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Выберите программу, которая будет выполняться, с помощью кнопки « Обзор файловой системы…» в группе « Местоположение » на вкладке « Главное ». Перейдите в папку с двоичным файлом OpenOCD (т.е.
для 64-битной Windows ,
для Linux ) выберите исполняемый файл (
для Linux ) и нажмите Открыть, чтобы закрыть окно. Поместите курсор в текстовое поле Аргументы внизу вкладки Main и введите любые аргументы, которые должны быть переданы в OpenOCD — в случае платы STM32F4DISCOVERY это будет просто
. На этом этапе вы также можете изменить имя конфигурации запуска по умолчанию.
к чему-то более информативному. Лично я называю конфигурации либо
, поэтому в данном случае я назвал его
. Вы можете сохранить текущее состояние конфигурации, нажав кнопку Применить .
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-3.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
/>https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-4-300×179.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-4.png 764w» alt=»» width=»150″ height=»90″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-5.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Фактически, на данный момент конфигурация уже может использоваться, но есть лишь несколько незначительных вещей, которые стоит настроить. Перейдите на вкладку « Сборка » и снимите флажок « Сборка перед запуском» . Сборка вашего проекта перед запуском OpenOCD полезна, если вы хотите использовать OpenOCD для программирования чипа, но в случае типичного сеанса отладки здесь нет необходимости (мы вернемся к этому позже — в главе о конфигурациях GDB ). На вкладке « Общие » в группе « Сохранить как » вы можете выбрать, будет ли эта конфигурация запуска сохраняться в конфигурации рабочего пространства Eclipse — это называется локальным файлом. (вводит в заблуждение, если вы спросите меня) — или как обычный файл с именем
где-нибудь в рабочей области — это называется Общий файл . Моя личная практика — использовать второй вариант, сохранить файл в папке проекта и создать резервную копию с помощью системы контроля версий (например, git ). При таком подходе очень легко переносить проект и его конфигурации запуска между разными компьютерами. Также возможно копировать такой файл конфигурации запуска между разными проектами — в 99,666% случаев конфигурации запуска OpenOCD зависят только от оборудования (они не имеют частей для конкретного проекта). Для этого выберите Общий файл в группе « Сохранить как », нажмите кнопку « Обзор…» справа от этого параметра, выберите папку своего проекта ( теств нашем примере) и нажмите ОК . Для облегчения доступа к этой конфигурации запуска вы также можете выбрать пункт « Внешние инструменты» в меню « Отображать в избранном» . Снова сохраните конфигурацию ( кнопка « Применить» ) и нажмите « Выполнить», чтобы протестировать ее.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-6.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-7.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-8-300×243.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-8.png 348w» alt=»» width=»150″ height=»122″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-9.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Если вы являетесь пользователем Windows и запускаете выбранный исполняемый файл OpenOCD впервые , вы можете увидеть окно предупреждения системы безопасности Windows . Просто выберите Разрешить доступ, чтобы OpenOCD мог использовать требуемые сетевые функции.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-10-300×217.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-10.png 527w» alt=»» width=»150″ height=»108″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Если все работает правильно, вы должны увидеть, что ваша конфигурация запуска запущена на вкладке « Отладка » в верхней левой панели окна Eclipse , а также некоторую информацию на вкладке « Консоль » внизу.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-11-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-11-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-11.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Когда имя конфигурации запуска и имя исполняемого файла имеют префикс <terminated> , это означает, что OpenOCD не может успешно запуститься из-за какой-либо проблемы. В этом случае некоторая информация о первопричине такой проблемы будет напечатана на вкладке « Консоль ».
В будущем вы можете легко запустить эту конфигурацию запуска снова, нажав кнопку « Внешние инструменты» в центре панели инструментов Eclipse (белый символ воспроизведения внутри зеленого круга с красным набором инструментов). Само нажатие кнопки запустит последнюю использованную конфигурацию запуска, а расширение списка черным треугольником справа предоставит вам доступ к списку ранее использованных конфигураций запуска и списку избранных конфигураций (тех, для которых вы выбрали флажок в поле Отображать в меню избранного ).
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-12-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-12-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-openocd-12.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Оставьте OpenOCD включенным, так как он нам понадобится в следующей главе.
Настройка и запуск GDB
Этот шаг на самом деле очень похож на настройку OpenOCD , однако обычно он чрезвычайно прост — в основном потому, что обычно нет шагов, зависящих от оборудования.
Щелкните Выполнить> Конфигурации отладки… , в появившемся окне выберите « Отладка оборудования GDB» слева и нажмите кнопку « Новая конфигурация запуска» над списком. Как и раньше, вместо использования кнопки « Новая конфигурация запуска» вы можете дважды щелкнуть элемент « Аппаратная отладка GDB» в списке, чтобы добиться того же эффекта.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-1.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-2.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
В новой конфигурации, которую мы создали, должны быть уже заполнены текстовые поля Project и C / C ++ Application на вкладке Main . Если они пусты — не паникуйте ! Сначала используйте кнопку « Обзор» рядом с полем « Проект», чтобы выбрать наш тестовый проект, а затем нажмите « Поиск проекта…» под приложением C / C ++, чтобы найти
файл, который будет использоваться отладчиком. Обратите внимание — ваш проект должен быть уже построен, иначе не будет
файл, который нужно искать. Перед запуском группы выберите переключатель « Включить автоматическую сборку » в группе « Сборка» (при необходимости) .
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-3.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Перейдите на вкладку отладчик . Поместите курсор в текстовое поле GDB Command и замените значение по умолчанию на
(это имя исполняемого файла отладчика). Вам также необходимо изменить номер порта на 3333.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-4.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
На вкладке « Автозагрузка » есть еще несколько вещей, которые можно отредактировать . Сначала снимите два флажка вверху в группе « Команды инициализации » — « Сброс» и «Задержка (секунды)» и « Остановить» . Эти флажки не имеют никакого эффекта при использовании OpenOCD , поэтому просто отключите их. Однако на самом деле нам нужно сбросить и остановить чип, поэтому поместите курсор чуть ниже этих флажков и введите
там. Если интересно —
— это команда GDB, которая передает свои аргументы удаленному серверу GDB (в данном случае — OpenOCD ), а
— это команда OpenOCD, которая, как ни странно, сбрасывает и останавливает чип (; Прокрутите страницу вниз, установите флажок слева от Установить точку останова в и введите
в текстовое поле справа. Также установите флажок рядом с « Возобновить» .
/>https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5-281×300.png 281w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5-768×821.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-5.png 800w» alt=»» width=»140″ height=»150″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Идея с последней вкладкой — Common — идентична идее для OpenOCD , поэтому повторять здесь описание нет смысла.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-6.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Нажмите « Применить» и нажмите « Отладка». Через короткое время (несколько секунд) вы должны увидеть, что ваш сеанс отладки остановлен в начале
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-7-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-7-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-7.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Как и в случае с конфигурацией запуска OpenOCD , та, которую мы только что создали для GDB , также легко доступна через кнопку Debug в центре панели инструментов Eclipse (зеленый символ ошибки). Поведение кнопки также идентично: при нажатии на кнопку запускается последняя использованная конфигурация запуска, при раскрытии черным треугольником отображается список избранного.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-8-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-8-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-configure-gdb-8.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
Завершение сеанса отладки и OpenOCD
Мы знаем, как запустить инструменты, но как их остановить? Рекомендуется сначала остановить GDB и только затем остановить OpenOCD , так как завершение работы OpenOCD приведет к прерыванию GDB — немедленно или при попытке взаимодействия с ним. На самом деле это логично — если вы выключите удаленный сервер GDB ( OpenOCD ), GDB не сможет продолжить работу без него. Чтобы завершить сеанс отладки, сначала необходимо выбрать его из списка на вкладке « Отладка ». На самом деле не имеет значения, какой из них вы выберете, если он помечен как GDB Hardware Debugging или любой из его дочерних элементов. Затем просто нажмите кнопку « Завершить» вПанель инструментов Eclipse (красный символ остановки).
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-1-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-1-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-1.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-2-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-2-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-gdb-2.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Процедура завершения OpenOCD идентична.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-1-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-1-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-1.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-2-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-2-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-shutdown-openocd-2.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Отладка без программирования микросхемы
Когда вы начинаете сеанс отладки с конфигурацией запуска GDB, созданной в одной из предыдущих глав, приложение сначала записывается во флэш-память чипа. Это очень удобно, однако бывают случаи, когда мы хотели бы пропустить программирование — если мы не изменили источники, но хотим перезапустить сеанс отладки, нет смысла повреждать флеш-память, стирая ее, просто чтобы запрограммировать точно так же изображение снова.
Open Debug Configurations again (Run > Debug Configurations…), select our only debug configuration (test Default if you did not change the name given automatically by Eclipse) in the left list and duplicate it by clicking the second button from the left above the list (two filled sheets of paper). This can be also done by right-clicking the configuration and selecting Duplicate.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-0.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; display: block;» loading=»lazy» />
First thing to do in the newly created configuration is to give it some better name – for example test without load. Next, on the Main tab select Disable auto build radio button in the Build (if required) before launching group to prevent Eclipse from recompiling the application. Switch to Startup tab and deselect Load image from Load image and Symbols group. Click Apply and then Close.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-1.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2-300×225.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2-768×576.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-2.png 800w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Запустите OpenOCD (если он еще не запущен) и запустите нашу новую конфигурацию GDB . Если все работает нормально, вы должны увидеть что-то очень похожее на предыдущее, однако запуск занимает значительно меньше времени — здесь (в VirtualBox )
3 секунды против
9 секунд при программировании.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-3-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-3-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-3.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-4-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-4-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-without-programming-4.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Отладка приложения
Давайте, наконец, посмотрим на какое-нибудь действие! Начните с чего — нибудь простого — Нажмите Step Over кнопку из Затмения панели инструментов (вторая желтая стрелка, тот , который идет вверх-вправо-вниз). Через короткое время вы увидите, что ваша программа действительно продвинулась вперед — зеленое выделение текста и синяя стрелка на краю теперь находятся в строке 33 — той, которая имеет
. Давайте попробуем то же самое еще раз — теперь это займет немного больше времени (в конце концов, вы «перешагиваете» долгую задержку в одну секунду), но в конце концов мы снова попадем в строку 32.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-0-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-0-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-0.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-1-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-1-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-1.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Теперь нажмите кнопку « Шаг с заходом» (первая желтая стрелка, эта идет вправо). Вы увидите, что открыта новая вкладка редактора, и теперь мы внутри
. Если вы снова нажмете « Шаг с заходом» , вы, наконец, окажетесь в
. Нажмите « Перейти», чтобы вернуться к
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-2-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-2-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-2.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-3-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-3-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-3.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-4-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-4-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-4.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Давайте посмотрим, что произойдет, когда вы нажмете кнопку « Возобновить» (желтый прямоугольник с зеленым символом воспроизведения ). Хм… ничего особенного, но вроде приложение действительно запущено. Давайте остановим его, нажав кнопку « Приостановить» (желтый символ паузы ) — мы окажемся в каком-то совершенно случайном месте, скорее всего, где-то в незанятом потоке.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-5-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-5-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-5.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-6-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-6-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-6.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-7-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-7-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-7.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Итак, как нам вернуться к нашему основному потоку? В редакторе перейдите на вкладку с
и поместите точку останова в строку 32, дважды щелкнув клетчатое поле (слева от номеров строк). Если вы все сделали правильно, вы должны увидеть синий кружок с галочкой. Нажмите « Возобновить», и программа будет остановлена внутри.
. Если вы возобновите его снова, он будет останавливаться на том же месте после завершения цикла цикла.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-8-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-8-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-8.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-9-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-9-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-9.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-10-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-10-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-10.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Чтобы удалить точку останова, дважды щелкните ее или перейдите на вкладку « Точки останова » и удалите ее там. Вы можете удалить выбранную точку останова (один серый крестик) или удалить все точки останова, используемые в приложении (два серых крестика). Кроме того, также можно отключить точки останова — все сразу с помощью кнопки « Пропустить все точки останова» (перечеркнутый синий кружок) или одну за другой с их флажками.
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-11.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-12.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-13.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14-300×226.png 300w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14-768×579.png 768w, https://distortos.org/wp-content/uploads/2018/04/eclipse-debugging-application-14.png 1010w» alt=»» width=»150″ height=»113″ style=»box-sizing: inherit; border: 0px; height: auto; max-width: 100%; vertical-align: middle; margin: 0px auto; display: block;» loading=»lazy» />
Это всего лишь краткий обзор отладки в Eclipse , но, надеюсь, он послужит вам хорошей отправной точкой. Отладчик Eclipse очень мощный, поэтому невозможно охватить все сложные темы в одной статье. То же самое и с конфигурацией OpenOCD — тема, которая может легко заполнить несколько статей. Фундамент заложен, отдых придет с практикой и личным опытом.
STM32CubeMX start code -> Eclipse быстрый старт -> отладка в Eclipse через ST-Link Discovery

Наверное в инете есть сотни статей с подобной темой. Но, так как тема относится к опенсорсу, — никто не гарантирует результат. Результат-то как правило бывает, но обычно, вначале, лишь частичный. Что-то, как правило, не работает нормально. Глючит. Пугает кучей ошибок и варнингов. Основная тема, лейтмотив опенсорса, — поиск ответа на вопрос «почему не так работает?». В этот момент начинаешь понимать, почему за готовую к работе, из коробки, IDE — просят денюшку, и немаленькую.
Когда начинал знакомится с микроконтроллерами, ограничение кода в 32 кБ казались такими недосягаемыми, а в современное время одно подключение какой-либо библиотеки может съесть значительную часть лимита кода, а ещё хочется и ВЭБ интерфейс к соей домашней поделке приделать, а недавно решил «пощупать» библиотеку libMAD, так код вообще сразу выскочил за 120 кБ…
Основная задача — допилить Eclipse до такого состояния, когда внутри будет весь цикл, от написания кода до отладки. Для генерации начального кода очень хотелось использовать STM32CubeMX, так как кроме свежих библиотек HAL имеется поддержка современной версии CMSIS, уже интегрированная FreeRTOS (в составе куба идет порт FreeRTOS, сделанный по правилам нового CMSIS v3.20), и много других «вкусняшек», а используемая среда Eclipse, не накладывает ограничения на размер кода, да и просто имхо удобней.
У меня получилось. Конечно есть в отладчике Keil’a фишки, которые больше нигде не повторяются. Да и в используемом отладчике OpenOCD реализованы не все функции, которыми может похвастаться Eclipse, но это плата за простоту установки и настройки. Полученным результатом оказался доволен. Во время поиска приемлемого варианта установки, подбора плагинов и других компонентов возникла необходимость сохранить результаты проделанной работы. В основном — что бы не забыть.
- Установка и настройка Eclipse.
- Генерация начального кода проекта в STM32CubeMX и адаптация проекта для использования в Eclipse.
- Настройка отладки и отладка созданного проекта в Eclipse.
Теперь по поводу самой инструкции. Eclipse — плод коллективного труда. Сама программа написана на Java и имеет внутри много-много других компонентов, чаще всего оформленных как плагины. Система чувствительна к версиям устанавливаемых Вами плагинов. Самое правильное — перед установкой какого — либо плагина найти в интернете страничку автора(ов) плагина и внимательно прочитать. Как правило там будет и инструкция по использованию, установке и указания на проверенные совместимые версии Eclipse. Стараемся не ставить лишних плагинов — особенно тех, что ругаются на непроверенную совместимость — можно получить эффект глюка и неправильной работы того, что без проблем раньше хорошо работало, причем без явного проявления причинно-следственной связи.
- Java JDK
у меня: «jdk-8u25-windows-x64.exe»
Удаляем все другие версии Java(возможно и не надо), установленные ранее и устанавливаем в пути по умолчанию.
- Eclipse
у меня: «eclipse-cpp-luna-SR1-win32-x86_64.zip»
Eclipse поставляется в виде архива и устанавливается распаковкой в рабочий каталог.
Распаковываем в папку «C:\eclipse», причем исполняемый файл должен быть в этой папке. Отправляем ярлык для «eclipse.exe» на рабочий стол, не запускаем!
Проверяем настройку языковых параметров, у Вас должен стоять английский по умолчанию. Т.е. при запуске программ язык ввода должен быть обязательно английский. Если стоит язык, отличный от английского и вы В ПЕРВЫЙ раз запускаете Eclipse, то в дальнейшем будете в консоли любоваться на кракозябрики и искать вариант борьбы с кодировками…
Идем в панель управления Windows и устанавливаем первым языком английский, перезагружаем компьютер. Если Вы уже запускали Eclipse с языком ввода по умолчанию, отличным от английского — удаляем всё из папок «C:\eclipse» и папки рабочего каталога «C:\stm32prg» и продолжаем.
Запускаем Eclipse. Вначале программа спросит расположение рабочего каталога — вводим «C:\stm32prg», ставим галочку запомнить и подтверждаем свой выбор:

видим запущенный Eclipse:

и пока закрываем — необходимо установить остальные компоненты.
- GNU Tools for ARM Embedded Processor
Далее посещаем страничку launchpad.net/gcc-arm-embedded и скачиваем установщик (.exe) gcc-arm-none-eabi последней версии. Этот комплект программ будет из текста на Си делать исполняемый файл для микроконтроллера.
Мой выбор именно этого пакета: — он поддерживается сотрудниками ARM. Остальные доступные компиляторы в большинстве случаев сделаны на основе исходников этого. Почитайте на страничке.
у меня: «gcc-arm-none-eabi-4_8-2014q3-20140805-win32.exe»
Создаем на диске«C:» папку с именем «ToolsARM», в ней подпапку «gcc_arm» и устанавливаем в папку «C:\ToolsARM\gcc_arm», папка «bin» должна оказаться тут. Важное замечание: на последней странице установщика снимаем все галочки, чтоб путь нигде в системе не прописывался.
Данный пакет не содержит утилит типа «Make.exe», их придется поставить отдельно, устанавливать их будем в папку «C:\ToolsARM\».
Такой выбор, в отличие от первоисточника в начале статьи, основан на опыте первоначального использования Eclipse. Мне пришлось несколько раз его переустанавливать. При создании подпапок в папке Eclipse их можно случайно удалить, что не есть гуд.
- Make и CoreUtils for Windows
В папке «C:\ToolsARM» создаем подпапку «GnuWin32» и устанавливаем оба комплекта программ в папку «C:\ToolsARM\GnuWin32» (можно при установке утилит просто указать папку «C:\ToolsARM», а «GnuWin32» — родная папка утилит — создастся при установке).
- STM32 ST-LINK utility
www.st.com/web/en/catalog/tools/PF258168 скачиваем внизу страницы через кнопку «Download», распаковываем скачанный архив и устанавливаем в пути установки, предложенные программой по умолчанию. В случае нерабочей ссылки ищем в инете «STM32 ST-LINK utility» на сайте «www.st.com/», ссылка может измениться при изменении версии выложенной версии утилиты.
В моем случае «STM32 ST-LINK Utility_v3.5.exe».
При помощи этой утилиты можно читать-записывать STM-овские микроконтроллеры и много чего ещё. Эта утилита, кроме всего прочего, устанавливает драйвер для ST-link на плате Discovery. Понадобится при отладке.
- STM32CubeMX
Для меня Куб — самая прикольная программа в пакете…
Запускаем STM32CubeMX.exe(в дальнейшем — просто Куб) и через меню «Help->Install New Libraries» запускаем обновление библиотек. Выбираем необходимые библиотеки и жмем «Install Now». У меня сейчас имеется только Discovery c STM32F051R8, поэтому я выбрал библиотеки для STM32F0 и STM32F4, опишу оба варианта. (судя по тому, что в Кубе нет библиотек HAL для семейства STM32F1 думается, что ST сворачивает поддержку данной линейки,… логичная замена, по-моему, — это линейка STM32F2… а где Discovery с STM32F2 на борту?). Пока библиотеки обновляются продолжаем. После обновления — Куб пока закрываем.
- OpenOCD
На сайте «openocd.sourceforge.net/» ищем ссылку на последнюю версию OpenOCD, скомпилированную под Windows. В моем случае — на странице «www.freddiechopin.info/en/download/category/4-openocd» ссылка на «OpenOCD 0.8.0», скачался архив «openocd-0.8.0.7z».
Скачанный 7z архив распаковываем и копируем папу «openocd-0.8.0»(в которой папка «bin») в «C:\ToolsARM». После копирования — переименовываем папку «openocd-0.8.0» в «openocd», сам исполняемый файл в папке «bin» — тоже переименовываем в «openocd.exe».
В результате в папке «C:\ToolsARM» должна сформироваться следующая структура папок:

- Установка плагинов и настройка Eclipse
- GNU ARM Eclipse Plug-ins
Страничка плагина gnuarmeclipse.livius.net/blog/ — там можно почитать про использование данного плагина, и последние новости разработчиков. Например там написано, что на Eclipse luna первых релизов данный плагин может работать нестабильно…
Адрес для установки плагина: «gnuarmeclipse.sourceforge.net/updates»
Плагины устанавливаются через меню «Help ->Install new software». В открывшемся окне в верхнюю строчку или вводим (копипастим) адрес сервера обновлений, или через кнопку «Add» указываем на папку с распакованным плагином, или указываем на архив с плагином.
В нашем случае — в верхнюю строчку вводим адрес плагина и жмем клавишу «Enter» на клавиатуре компьютера для обновления информации из источника. Видим информацию о списке устанавливаемых компонентов:

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

Опять «Next», видим окно с лицензионным соглашением, выбираем принять и жмем «Finish»
(без картинки) и наблюдаем за полоской установки плагина. В случае, если данный плагин может вызвать нестабильную работу системы — выскакивает окно:

Соглашаемся, что мы в курсе возможных предстоящих проблем — «OK», после этого выскакивает окно с предложением перезапустить Eclipse — жмем «OK», Eclipse перезапускается. Всё, плагин установлен.
- EmbSysRegView Plug-ins
Данный плагин позволяет добавить в отладчик просмотр регистров периферии микроконтроллера. Очень полезная штука, приближающая отладчик Eclipse к профессиональным IDE.
Устанавливаем аналогично предыдущему плагину.
Процедура установки на этом может считаться законченной. Дальше предстоит настроить Eclipse для использования GNU_ARMEclipse плагина. Мы не будем использовать возможность данного плагина генерировать начальный код, а вот возможность отладки через OpenOCD — пригодится полностью.
- Настройка Eclipse
Начальная настройка закончена, Eclipse готов к работе. Только если сейчас открыть проект, созданный ранее, как сделал я на этом шаге — он не соберется с ошибкой, что не может найти компилятор C++. Если открываете проект, созданный в другой системе (у меня проект был сделан на другом компьютере), то следует в настройках проекта «C/C++_Build ->Setting» вкладка «Toolchains» в переменную «Global path» записать «C:\ToolsARM\gcc-arm\bin».
- Начальный код в STM32CubeMX для Eclipse

Нажимаем «OK» и видим окно конфигурации ввода-вывода по «ножкам» микроконтроллера:

В этом окне ничего не трогаем, щелкаем по вкладке «Clock Configuration» и проверяем настройку — у меня по умолчанию она не была дефолтной, ставим как должно быть:

В меню выбираем «Project -> Settings . », из списка «Toolchain / IDE» выбираем «TrueSTUDIO», в верхнее окно вводим название проекта (у меня — «DiscoF0»), через кнопку «Browse» указываем на папку рабочего каталога Eclipse — «C:\stm32prg»:

Проверяем, чтоб на второй закладке всё было настроено по умолчанию:

Подтверждаем, что всё верно — «OK».
В меню выбираем «Project ->Generate Code», ждем окончания генерации кода и в окне:

Выбираем «Close», закрываем сам Куб — он своё дело сделал.
В проводнике Windows открываем папку рабочего каталога Eclipse и, среди прочих, видим папку с тем именем проекта, что задавали в настройках Куба (у меня — «DiscoF0»). Открываем её, и в этой папке (в «DiscoF0») создаем папку «System». Далее — из папки «DiscoF0\Projects\TrueSTUDIO\DiscoF0 Configuration» копируем в папку «System» файлы: линкера «STM32F051R8_FLASH.ld» и ".cproject". На других платах — будет файл с наименованием Вашего контроллера и расширением ".ld". Из второго файла — возьмем настройки путей и define. После этого папку «Projects» можно удалить.
Аналогично удалил в папке «DiscoF0» созданные Кубом файлы ".mxproject", «DiscoF0.ioc». Будете Вы их удалять или нет — решать Вам.
В папке «DiscoF0\Drivers\CMSIS\Device\ST\STM32F0xx\Include» удаляем все ".h" файлы, не имеющие отношение к микроконтроллеру на Вашей плате:

В папке «DiscoF0\Drivers\CMSIS\Device\ST\STM32F0xx\Source\Templates\gcc» меняем расширение у файла для Вашего микроконтроллера с ".s" на ".asm", так как используемый нами пакет утилит не понимает расширение ".s":

Подготовка закончена, теперь создаем проект в Eclipse.
- Создание проекта в Eclipse

Жмем «Next», на странице «Select Configurations» — ничего не трогаем, жмем опять «Next».
На странице «Gross GNU ARM Toolchain» в окне «Toolchain path» указываем на «C:\ToolsARM\gcc-arm\bin» и жмем «Finish»:

Между этими окнами при первом запуске создания проекта будет ещё одно окно с опциями (ключами) — его не трогаем, тоже жмем «Next»(а может это будет «Finish»), при создании проекта второй раз — это окно не появляется.
- Настройка проекта в Eclipse
Name=«USE_HAL_DRIVER» без параметров
Name= «STM32F051x8» без параметров
$
$
$
$
Name=«USE_HAL_DRIVER» без параметров
Name= «STM32F407xx» без параметров
$
$
$
$
Запускаем Eclipse, выбираем перспективу «C/C++»:

Заходим в свойства созданного проекта — щелчок правой кнопкой мыши на папке проекта и пункт выпадающего меню «Properties». В левом списке выбираем«C/C++ General -> Path and Symbols», на вкладке «Includes» нажимаем кнопку «Add» и добавляем последовательно все пути, необходимые для сборки проекта. При добавлении обязательно отмечаем галочки «Добавить во все конфигурации» и «Добавить для всех языков»:

Должно получиться так:

Переходим на вкладку «Symbols» и аналогичным образом добавляем define:

После этого идем в «C/C++ Build ->Settings» в верхнем меню выбираем «для всех конфигураций», и настраиваем параметры для целевого микроконтроллера:

а для STM32F4DISCOVERY:

Щелкаем по вкладке «General» линкера и нажимаем на кнопку папки с плюсом, в открывшемся окне — кнопку «Workspace» и добавляем ссылку на файл линкера в папке «system»:


Нажимаем на кнопки «Apply» и «OK».
В дереве проекта открываем файл «main.c» и нажимаем на иконку с молоточком. Проект должен без ошибок собраться как в режиме «Debug» так и в режиме «Release». У меня, например, выдало ошибку на двойное объявление функций в файлах «stm32f0xx_hal_msp_template.c» и «stm32f0xx_hal_msp.c». Я открыл свойства файла «stm32f0xx_hal_msp_template.c» и поставил галочку вот тут:

тем самым исключив файл из сборки проекта, и пришлось удалить папку «DSP_Lib» — ругалось на что-то внутри, не успел разобраться, а использовать DSP библиотеку пока не собирался.
Касперский почему-то иногда начал блокировать нормальную работу «make.exe» и в окне консоли было непонятно что со ссылкой, что ждет ответа от make .
В этом месте у Вас должен получиться проект — заготовка. Именно то, что выдал Куб. Ни ошибок ни варнингов быть не должно, а в консоль должна выдать параметры распределения памяти в микроконтроллере:

Через меню проекта закрываем его, идем проводником Windows в рабочий каталог Eclipse и архивируем результат своей работы. У нас получился проект — заготовка и дальше с ним можно делать что угодно — например — поморгать светодиодом и посмотреть на это в отладчике.
- Добавляем свой код
В файле «main.c» в начале файла, добавляем код, что бы получилось как ниже:
Бесконечный цикл в функции main изменяем следующим образом:
Нажимаем на кнопку с молоточком, и если нет ошибок — смотрим как работает в отладчике.
- Настройка отладки

Вы — настраиваете под свой микроконтроллер и плату, потом — «OK».
Открываем меню «Window -> Show View -> Debug» — открываем перспективу отладки. Щелкаем по нижней части окна, перебираем вкладки рядом с «Console», можно и её щелкнуть — так указывается место, куда вставим окно плагина. Открываем меню «Window -> Show View ->Other» и далее «Debug ->EmbSys Register» жмем кнопку «OK» — и окно с регистрами периферии вставляется куда указали. У Вас может быть другое место — кому как нравится.
Теперь предстоит настроить плагин OpenOCD для корректной работы отладки. Для представления, как это правильно делается в «оригинале», заглядываем к разработчикам:
gnuarmeclipse.livius.net/blog/openocd-debugging/, откуда узнаем что первым делом надо переименовать файл в папке установки «C:\ToolsARM\openocd\bin» так, чтоб исполняемый файл имел имя «openocd.exe» — переименовываем.
Открываем меню «Window ->Preferencec» далее «Run/Dedug ->String Substitution» и изменяем настройку переменных согласно рисунку:

Переключаемся на перспективу «C/C++» и открываем файл «main.c» того проекта, для которого будем настраивать отладку — обязательно надо иметь фокус на необходимом проекте.
Открываем меню «Run ->Debug Configurations», выбираем «GDB OpenOCD Debugging» и через правую кнопку мыши выбираем «New»:

Проверяем соответствие рисунку и щелкаем следующую вкладку:

Если надо — корректируем путь к исполняемому файлу «openocd» и в нижнем окне прописываем имя скрипта к своей плате, имя скрипта находим в папке «C:\ToolsARM\openocd\scripts\board».
Проверяем последнюю вкладку:

Тут необходимо переключить, где отмечено и выбрать папку проекта. После этого нажимаем кнопку «Apply».
Подключаем плату к компьютеру и нажимаем кнопку «Debug». Если проблем нет — то увидим моргание светодиода отладчика на плате и кнопки для шагов по программе в верхней части окна перспективы Debug:

В настройках отладчика по умолчанию задано несколько точек остановки, поэтому несколько раз нажимаем на кнопку «плей» и видим моргающий светодиод на плате.
Жмем красный стоп. Пока всё в порядке, если кнопок не увидели — то следуем по цепочке — обновляем драйвера -> проверяем настройки OpenOCD. Именно по этой инструкции без проблем запустилась отладка в Win 7 x86, Win 7 x64, и Win 8.1 x64.
Конфигурация среды Eclipse/GCC для разработки программ STM32
Это первая из статей, описывающих технологию разработки и отладки прикладных программ для микроконтроллеров семейства 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.

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 — имя директории установки пакета. После этого инструменты командной строки должны стать доступными для использования. Проверить это можно командами:
Если все в порядке, то в ответ будут выведены номера установленных версий компонентов (см. рис. 2).
Установка драйвера для эмулятора Olimex ARM-USB-OCD ничем не отличается от установки драйверов для большинства USB-устройств — при первом подключении устройства операционная система сообщит о попытке добавления нового устройства и попросит указать расположение драйверов, которые заблаговременно имеет смысл распаковать в любую временную папку.

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

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

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

Создание/импорт проекта
Создание проекта (см. рис. 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 а, б).




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

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


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



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


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