Eclipse + gcc + stlink


Долгое время пользовался IAR'ом и сложности настройки среды Eclipse останавливали меня с него соскочить. А потом, я вырос и настроил Eclipse + gcc + stlink под Windows. И сейчас, спустя много лет сожительства Ubuntu и Windows на моем компьютере, я наконец отдал предпочтение Linux-системе и настройка среды потребовалась вновь. И так, я снес винду, обновил Ubuntu до 13.10 и настроил среду для программирования STM32. По общим впечатлениям, глюков и проблем при настройке среды под Linux было меньше чем при настройке под Windows. Возможно, дело в опыте.
Ниже я описываю процесс установки и настройки среды под Ubuntu. 



Общая схема

Перед тем началом установки, представим, к чему мы должны прийти в конечном итоге. Ниже приведена схема процесса прошивки и отладки с использованием Eclipse, gcc, stlink.

Рис 1. Схема работы
На схеме,

  • Eclipse - открытая, широко известная IDE.
  • arm-none-eabi-gdb - Клиентская часть отладчика для исполняемых файлов платформы ARM, без eabi.
  • arm-none-eabi-gcc - Кросскомпилятор. На выходе исполняемые файлы для ARM без eabi.
  • st-util - Программа из набора stlink, которая подключается к ST-LINK по USB и работает как серверная часть отладчика. Таким образом, arm-none-eabi-gdb подключается к st-util по TCP/IP и обменивается с ним отладочной информацией.

Теперь, в чем плюсы и минусы, в сравнении с другими средствами прошивки и отладки.
Начну с минусов:
  • Приходится запускать st-util перед тем, как станет возможной прошивка.
  • Периодические глюки разных элементов системы.
  • Нет возможности смотреть состояние переменных без остановки отладки. 
Теперь, плюсы:
  • Разумеется, абсолютная бесплатность решения.
  • Возможность отладки платы, подключенной к удаленному компьютеру. Для этого, нужно просто запустить st-util на удаленной машине.
  • Среда Eclipse с плагином CDC имеет очень удобную подсветку синтаксиса, ошибок и систему автодополнения кода. Такого нет в IAR.
  • Кроссплатформенное решение, может работать под ARM. STLINK можно скомпилировать под любую Windows и Linux систему (в том числе, Android).
  • Возможность параллельной отладки нескольких программ, запущенных на разных платформах.

ST-LINK

Начнем с st-link. Качаем исходники тут. Устанавливаем зависимости, их немного:
  • libusb-1.0
  • pkg-config
  • autoconf
  • automake
 Затем, распаковываем архив с исходниками и:
./autogen.sh
./configure
make && sudo make install
Для запуска gdb сервера используйте команду:
sudo st-util
После сеанса отладки программа автоматически завершится, потому я делаю так:
sudo -s && while [ 0 ];do st-util;done& 
Эта команда запустить st-util в цикле, в фоновом режиме и не будет беспокоить вас вводом пароля. Завершить цикл можно удерживанием сочетания клавиш Ctrl+C.

GCC

В дебиан системах самый простой способ установки gcc для arm - установить пакет arm-none-eabi-gcc.
Идем сюда добавляем себе подходящий репозиторий и устанавливаем пакет arm-none-eabi-gcc.
sudo apt-get install arm-none-eabi-gcc

Eclipse

Процесс настройки Eclipse для отладки через stlink.

1) Качаем Eclipse Kepler тут
1.1) Распаковываем архив командой tar -xvf <имя архива>
1.2) В архиве запускаем исполняемый файл eclipse

2) Help->Install New Software.
Жмем Add
Заполняем поля:
Name: CDT
Location: http://download.eclipse.org/tools/cdt/releases/kepler.

4) Отмечаем галочками (некоторые пакеты могут быть уже установлены в версии Eclipse для C++)
    C/C++ Development Tools
    C/C++ Development Tools SDK
    C/C++ GCC Cross Compiler Support
    C/C++ GDB Hardware Debugging
Жмем Next и устанавливаем.

5) Help->Install New Software.
Жмем Add
Name: arm-plugin
Location: http://gnuarmeclipse.sourceforge.net/updates
Отмечаем галочками все
Жмем Next и устанавливаем.

6) File->New->Other
Выбираем C++ Project
Шаблон проекта выбираем в зависимости от версии контроллера.
Все настройки в соответствии с вашей версией контроллера. Еще, вас попросят указать путь к тулчейну и решить, что сделать с библиотеками.
Мой тулчейн находится тут: /usr/arm-none-eabi.
На счет библиотек, если не знаете, что выбирать - выбирайте libnosys. libnosys - это заглушка для функций стандартной библиотеки.

Рис 2. Окно настройки микроконтроллера


Все! Проект создан.

Теперь вы можете скомпилировать проект.

Прошивка и отладка

Идем Run->Debug Configurations
Дважды кликаем на GDB Hardware Debugging.
И настраиваем все как на скришотах (За исключением поля C/C++Application. Тут должен быть путь к бинарнику с расширением .elf):

Рис 3. Окно настройки отладчика.

Рис 4. Окно настройки отладчика.

На этом все. Дальше, вы работаете только с Eclipse. Главное, не забывать запускать отладчик.

Возможные проблемы

Так как статье уже пол года, и я уже успел сменить Ubuntu на Mint (и остался очень доволен), я разумеется, опробовал инструкцию на себе. В процессе выявились проблемы с новой версией тулчейна, потому я остался на более ранней . Я, к сожалению не записал ошибки в процессе установки, но на данный момент у меня установлены пакеты:
gcc-arm-none-eabi 4-8-2014q2-0saucy9
linux-libc-dev 3.13.0-32.57
Я искренне надеюсь, что в новых версиях все проблемы решены и проблем ни у кого не возникнет.

Комментарии

Популярные сообщения из этого блога

Siege Up! Editor (beta)

STM32F4 и программный выход в DFU

Git и Yandex.Disk