Статья для тех кто любит микроконтроллеры, слышал про 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-eabi-gcc, запускаем терминал и выполняем команду
arm-none-eabi-gcc --version |
Если все правильно, то терминал выдаст номер версии.
Третий шаг. Так как все тулзы выше консольные и не имеют никакого гуя, то нужно где то писать код. 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
И наконец пишем исходник. Проверял на Nucleo 411, исходники прикрепляю
Если подытожить. Даже хорошо понимая процесс создания проекта с нуля и имея тонну мануалов, пришлось попотеть с эклипсом. В целом мне довелось уже работать с CoIDE поэтому глобальной разницы нет, весь гемор в мелочах. Абсолютно аналогично и с остальными вещами, если вы пользуетесь бесплатным open source софтом под винду, ничего нового в принципе не будет. Немного пообвыкнуться и нормально. Может желание будет, сдую пыль с малины и чего нибудь напишу еще на эту тему.
Тонкие настройки Eclipse спрятаны так глубоко, что для их поиска может понадобиться помощь проктолога.
Осталось чуство неудовлетворённости?Да автор просто дрочер нормальный человек всегда с хорошим чувством внутренней наполнености и самосчастья 😀
есть маленько 🙂