- stm32: работа с st-link в linux
- Программирование микроконтроллеров stm32 при помощи stlink
- Отладка программы для stm32 при помощи st-link
- ABUKSIGUN
- Eclipse + gcc + stlink
- Общая схема
- ST-LINK
- Eclipse
- Прошивка и отладка
- Возможные проблемы
- Старт в Linux. Настройка Eclipse для STM32.
- 3 комментария: Старт в Linux. Настройка Eclipse для STM32.
stm32: работа с st-link в linux
Микроконтроллеры stm32 прошиваются разными способами, например, через COM порт, или по USB, используя режим dfu. Также прошивку можно заливить по интерфейсу SWD.
Для подключения к SWD используется или отдельное устройство st-link, или st-link, входящий в отладочные платы семейства discovery.
Программирование микроконтроллеров stm32 при помощи stlink
Для того чтобы залить прошивку на микроконтроллер stm32 из под linux потребуется утилита st-flash. Готовых пакетов с этой утилитой нет, поэтому её надо собирать из исходников.
Скачиваем исходники st-link:
Добавляем правило для udev, чтобы к st-link был доступ не только у root’a:
Теперь можно прошивать:
Отладка программы для stm32 при помощи st-link
Используя st-link можно не только заливать прошивку но и отлаживать её. Для этого запускаем gdb сервер st-util.
Затем запускаем arm-none-eabi-gdb и в нем выполняем команды.
Подключаемся к gdb серверу:
Загруженный файл заливаем в микроконтроллер:
Устанавливаем breakpoint на функцию main:
Запускаем выполнение программы:
Поле того, как отладчик остановится на функции main, можно выполнять пошаговую отладку:
В арсенале отладчика gdb есть ещё куча полезных команд. А если связать gdb c eclipse, то получиться довольно удобная среда с графическим интерфейсом.
Источник
ABUKSIGUN
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
./autogen.sh
./configure
make && sudo make install
Эта команда запустить st-util в цикле, в фоновом режиме и не будет беспокоить вас вводом пароля. Завершить цикл можно удерживанием сочетания клавиш Ctrl+C.
sudo apt-get install arm-none-eabi-gcc
Eclipse
Процесс настройки Eclipse для отладки через stlink.
1) Качаем Eclipse Kepler тут
1.1) Распаковываем архив командой tar -xvf
1.2) В архиве запускаем исполняемый файл eclipse
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. Главное, не забывать запускать отладчик.
Возможные проблемы
gcc-arm-none-eabi 4-8-2014q2-0saucy9
linux-libc-dev 3.13.0-32.57
Источник
Старт в Linux. Настройка Eclipse для STM32.
Статья для тех кто любит микроконтроллеры, слышал про Linux, но никогда его не ковырял. Впечатления, размышления.
Все началось с одноплатников. Тема модная и я не мог пройти мимо. Взял себе raspberry. Поставил ось поигрался пару дней и забросил, пока нет конкретной цели. Но осталось чувство неудовлетворенности, хотелось больше Linuxа 🙂 Тут помогли коллеги — снабдили книгами, про устройство операционной системы. Что то уже знал из микроконтроллеров, что то было новое, кое что было очень даже полезным, но хотелось еще больше.
Далее я пробовал ставить Ubuntu на виртуалку, работать в ней. Смотрел онлайн курсы как работать в консоли. Смотрел форумы с чего советуют начать. Читал статейки. Все в общем то мимо, на это не стоило тратить время. Наконец, добрый люди направили мой пыл в новое русло — все рекомендовали установить Gentoo. Времени было угроблено уйма. Моего терпения хватило только на базовую установку. Но этого хватило, чтобы наиграться.
С одной стороны, полученный процент полезных знаний не так велик, как хотелось. С другой стороны сложно представить себе лучшую задачу для новичка — есть цель собрать свою систему, вся работа в консоли, фейлы не страшны, ибо можно все делать на виртуалке. Как минимум вы будете уверенно себя чувствовать в консоли.
После сего уже было принято решение поставить какую нибудь сборку в качестве второй системы. Побочный вопрос, который меня интересовал стал ли Linux настоящим конкурентом винды. Мое первое знакомство свершилось около 7 лет назад. Закончилось оно довольно быстро, если какие то проблемы с софтом можно было пережить, то проблемы с дровами было не решить. Увы в прошлый раз на этом все и закончилось.
Ну и чтобы не томить, мое субъективное мнение за 2 месяца ежедневного использования. Я не осилил бубунту, постоянное ощущение что все тормозит. Мне не хотелось напрягаться и лезть в дебри, поэтому выбор в пользу Mint с кедами(KDE). Вроде как это одно и тоже, но минт все равно роднее. Поэтому дальнейшие суждения про него.
Все довольно сильно изменилось. Куча плюсов и минусов. Из коробки можно посмотреть видео, послушать музыку, посидеть в инернетике, попечатать в офисе. Софта стало больше. Пользуюсь lte модемом, всегда считал что он говнище, ибо видосы под виндой нормально можно смотреть только в 360p и он постоянно перегревался и отваливался. Был слегка удивлен, когда тот же модем стал гнать 720p без напряга. Проблемы с перегревом магическим образом пропали. Есть и другие основания говорить, что в минте некоторые вещи действительно работают быстрее и это не миф.
Однако есть и минусы. Стоит сделать шаг влево, то танцы с бубном обеспечены, система так и осталась гиковской. Настройки системы распиханы так, что не догадаешься никогда. Не могу сказать что являюсь большим поклонником работы в консоли, но тут она у меня никогда не закрывается, ибо нужна постоянно. Неприятный момент, при большой загрузке проца звук выпадает, хотя полагаю это решаемо. Установщик программ бесполезный, ибо большинство программ или устаревшие, или их вообще нет. Приходится все равно гуглить, чтобы качать свежак. Бывает так что софт имеется, но он недопилен, и увы надежды что кто то поправит багу нет.
Все это на самом деле мелочи, по сравнению с самым жирным минусом. Дело в том, что проблемы решаются только чтением документации. А так как большинство программ open source, то нет никакой ответственности. Например, написал сегодня Вася программу, даже выложил документацию. А завтра Вася решил исправить свой говнокод и в итоге переписал программу чуть менее чем полностью. Изменил интерфейс, команды, а документацию не переписал. Не было времени или желания, или переписал только на английском языке. Поэтому довольно не редки ситуации, когда вы скачали прогу, пытаетесь разобраться как ей пользоваться, а актуального описания нет. В принципе к этому быстро привыкаешь, да и для винды проблема тоже имеет место быть.
И пример. Захотелось мне посмотреть реально ли разрабатывать ПО для микроконтроллеров. Вы найдете тонны мануалов, по настройке Eclipse. Тем не менее, мне пришлось потратить прилично времени, чтобы таки написать прошивку и залить ее. Поэтому пусть будет одним мануалом больше.
Первая часть: нужно запустить прошивайку. Работает она из терминала, шьет только бинарные файлы.
Чтобы заполучить сей продукт, нужно скачать сырцы с git, а для это нужно поставить сам git
sudo apt-get install git
Далее сливаем сырцы
git clone git://github.com/texane/stlink.git
Теперь нужны всякие зависимые либы и тулзы. Среди них либа для работы с USB, тулза позволяющая получить информацию об установленных библиотеках. Назначение остальных не понятно.
sudo apt-get install libusb-1.0-0-dev pkg-config autotools-dev dh-autoreconf
Далее переходим в папку скачанных исходников. В папку /etc/udev/rules.d/ нужно копирнуть 3 файла правил, иначе каждый раз при попытке прошить, будет запрашиваться пароль.
sudo cp 49-stlinkv2.rules /etc/udev/rules.d sudo cp 49-stlinkv1.rules /etc/udev/rules.d sudo cp 49-stlinkv2-1.rules /etc/udev/rules.d
После этого можно компилить проект.
./autogen.sh ./configure make
Теперь прошивайка установлена. Можно подключить st-link и закинуть какую нибудь прошивку. Hex не подойдет!
./st-flash write out.bin 0x8000000
Если нужно стереть флеш:
Второй шаг. Нам нужен компилятор. Тот, что будет из исходника делать прошивку. С этим проще всего. Качаем GCC ARM toolchain версию для линукса. Кто когда либо пробовал устанавливать кокос под винду, то уже знает про него.
Просто распаковываем куда удобно и переходим в папку содержащую arm-none-eabi-gcc, запускаем терминал и выполняем команду
Если все правильно, то терминал выдаст номер версии.
Третий шаг. Так как все тулзы выше консольные и не имеют никакого гуя, то нужно где то писать код. Eclipse вроде продвинутого блокнота, качаем тот, что называется IDE for C/C++ developers. Также распаковываем куда удобно.
В самом эклипсе нужно установить GNU ARM Eclipse plug-ins. Делается это из меню help.
Создаем проект New — C project. Я предпочитаю не пользоваться темплейтами, поэтому беру empty project с использованием Cross ARM GCC.
С сайта arm.com нужно скачать CMSIS и найти два файла startup_ARMCM4.c и gcc_arm.ld. Первый нужно просто добавить в проект, а второй добавить через настройки проекта
Там же в настройках нужно указать, чтобы генерился bin файл вместо hex
Далее настраиваем st link
И наконец пишем исходник. Проверял на Nucleo 411, исходники прикрепляю
Если подытожить. Даже хорошо понимая процесс создания проекта с нуля и имея тонну мануалов, пришлось попотеть с эклипсом. В целом мне довелось уже работать с CoIDE поэтому глобальной разницы нет, весь гемор в мелочах. Абсолютно аналогично и с остальными вещами, если вы пользуетесь бесплатным open source софтом под винду, ничего нового в принципе не будет. Немного пообвыкнуться и нормально. Может желание будет, сдую пыль с малины и чего нибудь напишу еще на эту тему.
3 комментария: Старт в Linux. Настройка Eclipse для STM32.
Тонкие настройки Eclipse спрятаны так глубоко, что для их поиска может понадобиться помощь проктолога.
Осталось чуство неудовлетворённости?Да автор просто дрочер нормальный человек всегда с хорошим чувством внутренней наполнености и самосчастья 😀
Источник