Статья для тех кто любит микроконтроллеры, слышал про 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

Если нужно стереть флеш:

./st-flash erase

Второй шаг. Нам нужен компилятор. Тот, что будет из исходника делать прошивку. С этим проще всего. Качаем GCC ARM toolchain версию для линукса. Кто когда либо пробовал устанавливать кокос под винду, то уже знает про него.
arm-none

Просто распаковываем куда удобно и переходим в папку содержащую arm-none-eabi-gcc, запускаем терминал и выполняем команду

arm-none-eabi-gcc --version

Если все правильно, то терминал выдаст номер версии.

arm-none

Третий шаг. Так как все тулзы выше консольные и не имеют никакого гуя, то нужно где то писать код. 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. Первый нужно просто добавить в проект, а второй добавить через настройки проекта
linker

Там же в настройках нужно указать, чтобы генерился bin файл вместо hex
raw

Далее настраиваем st link
ext

И наконец пишем исходник. Проверял на Nucleo 411, исходники прикрепляю

Если подытожить. Даже хорошо понимая процесс создания проекта с нуля и имея тонну мануалов, пришлось попотеть с эклипсом. В целом мне довелось уже работать с CoIDE поэтому глобальной разницы нет, весь гемор в мелочах. Абсолютно аналогично и с остальными вещами, если вы пользуетесь бесплатным open source софтом под винду, ничего нового в принципе не будет. Немного пообвыкнуться и нормально. Может желание будет, сдую пыль с малины и чего нибудь напишу еще на эту тему.

3 комментария: Старт в Linux. Настройка Eclipse для STM32.

  •  Тонкие настройки Eclipse спрятаны так глубоко, что для их поиска может понадобиться помощь проктолога.

  • Осталось чуство неудовлетворённости?Да автор просто дрочер :mrgreen: нормальный человек всегда с хорошим чувством внутренней наполнености и самосчастья :grin:

  • есть маленько :)

Добавить комментарий

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Свежие записи
Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика