Настройка линукс для программиста

Настройка рабочего окружения в Linux для программирования микроконтроллеров AVR

В этой статье мы рассмотрим шаги, которые нужно предпринять, чтобы получить рабочую среду для программирования микроконтроллеров архитектуры Atmel AVR на языке Си в Linux. Мы адресуем эту статью в большей степени новичкам в Linux, поэтому обратим внимание на некоторые моменты, которые продвинутым пользователям могут показаться элементарными.

Дистрибутивов Linux существует огромное количество, мы будем исходить из того, что вы используете Debian или один из дистрибутивов, основанных на Debian, например популярный дистрибутив Ubuntu. В дистрибутивах, основанных не на Debian, изменится только процедура установки программных пакетов. Мы будем использовать только свободное программное обеспечение, с открытым исходным кодом и, разумеется, полностью бесплатное.

Без чего не обойтись

Необходимый минимум программного обеспечения, которое нам понадобится:

gcc-avr — это та часть мощной GNU Complier Collection (GCC), которая будет осуществлять кросс-компиляцию для целевой архитектуры микроконтроллеров AVR. GCC используется для сборки самого Linux, он поддерживает стандарты языка Си ISO C90 (ANSI-C), ISO C99, а также собственные расширения языка Си. GCC поддерживает огромное количество архитектур процессоров. Код, скомпилированный с помощью GCC для одной из платформ, потребует минимальных правок (или не потребует правок вообще) при компиляции для другой целевой платформы.

binutils-avr — ассемблер, компоновщик и некоторые полезные утилиты.

avr-libc — стандартная библиотека Си для Atmel AVR.

avrdude — утилита для работы с программаторами.

Это необходимый минимум для создания приложений для AVR и прошивки микроконтроллеров. Для отладки пригодятся следующие пакеты:

gdb-avr — отладчик для AVR.

avarice — интерфейс между avr-gdb и AVR JTAG ICE.

simulavr — симулятор Atmel AVR.

Чтобы установить нужные программные пакеты, откроем терминал и выполним следующую команду:

sudo apt-get install gcc-avr binutils-avr avr-libc avrdude gdb-avr avarice simulavr

Подождем некоторое время, пока пакеты будут загружены из репозитория и установлены и посмотрим, что теперь есть хорошего в нашей системе:

ls /usr/bin | grep avr

Это список программ, которые мы получили. Удобство использования Linux заключается не только в том, что все необходимое мы загрузили и установили одной командой, но и в том, что у нас теперь есть исчерпывающа справка по использованию этих инструментов. Чтобы воспользоваться этой справкой, достаточно набрать в терминале

man

Пробегите глазами, например, man avr-gcc, man avr-objdump, man avrdude. Нажмите клавишу ‘h’, когда находитесь внутри команды man, чтобы получить список клавиш для перемещения по странице справки.

В принципе, того, что у нас есть сейчас, достаточно для того, чтобы заниматься разработкой для AVR, используя любой текстовый редактор. Тем, кто хорошо знает Linux и способен написать удобные псевдонимы команд или скрипты, чтобы не писать каждый раз изрядное количество опций к командам, возможно, больше ничего и не понадобится. Но большинству пользователей, думаю, хотелось бы использовать удобную графическую среду разработки, позволяющую писать код, компилировать, отлаживать и загружать его в микроконтроллер.

Интегрированная среда разработки

Мы установим мощную IDE Eclipse, которую сможем использовать не только для программирования микроконтроллеров, но и при желании, для написания программ практически на любом языке для host-платформы. Eclipse — это кросс-платформенный инструмент для построения интегрированных сред разработки, реализуемых в виде плагинов, написанный на Java. Вы можете использовать Eclipse не только на Linux, но и в других операционных системах. Единственный минус этого решения — требовательность к объему оперативной памяти в некоторых случаях. Если на вашей машине меньше 2 Gb оперативной памяти, то мы рекомендовали бы добавить планочку, на всякий случай.

Не будем бегать по сети в поисках Eclipse, посмотрим, что доступно в репозитории:

apt-cache search eclipse

Нам понадобится базовый пакет eclipse и инструменты разработчика на C/C++ eclipse-cdt. Устанавливаем, особо не рефлексируя:

sudo apt-get install eclipse eclipse-cdt

Запустим Eclipse и добавим плагин для удобной работы с AVR, который, помимо всего прочего, обеспечит нам возможность работать с различными моделями программаторов. При запуске Eclipse попросит указать директорию, где будут храниться исходники проектов, выбирайте любое имя на свое усмотрение (директория не должна существовать, Eclipse создаст ее самостоятельно). После того, как Eclipse запустился, пройдем по меню

Help -> Install new software. -> Add.

Нам предлагают ввести URL репозиторя, содержащего нужный нам плагин. Узнать URL можно, посетив сайт marketplace.eclipse.org. Забьем в строку поиска «AVR» и найдем AVR Eclipse Plugin, распространяемый под свободной лицензией. На странице плагина нужно догадаться кликнуть по зеленой стрелочке, чтобы получить URL репозитория: http://avr-eclipse.sourceforge.net/updatesite/.

Копируем этот URL в поле «Location» в оконе «Add repository» Eclipse, жмем «Ok». Eclipse подгрузит список доступного ПО из репозитория, отмечаем чекбокс напротив AVR Eclipse Plugin и жмем «Next». Последующие шаги мастера установки проходим, ни от чего не отказываясь. После установки плагина Eclipse захочет перезапуститься, в наших интересах ему это позволить. IDE готова к работе. Теперь разберемся с программатором.

Читайте также:  D250 acer aspire one driver windows

Подключаем программатор

Для начала воткнем в машину тот программатор, который есть под рукой. Допустим, у нас оказался AVR-910. Для этого программатора понадобится драйвер Prolific, этот драйвер уже присутствует в стандартном ядре Linux и дополнительных телодвижений не потребуется. Если же под рукой оказался популярный программатор AVR910 by PROTTOSS, то возможно, придется его немного допилить.

После втыкания программатора в разъем USB, у нас появится новое устройство. В Linux устройства отображаются в файловую систему и мы можем читать, писать в них и изменять права доступа так же, как мы делаем это с обычными файлами. Устройств в каталоге /dev довольно много, поэтому, чтобы быстро обнаружить новое, воспользуемся стандартными консольными утилитами в терминале:

ls /dev > /tmp/dev1 # сохраним список устройств в /dev во временный файл /tmp/dev1
# присоединим программатор
ls /dev > /tmp/dev2 # сохраним список устройств в /dev во временный файл /tmp/dev2
comm -3 /tmp/dev1 /tmp/dev2 # найдем различия в списках устройств

Мы обнаружили, что в каталоге /dev появилось устройство ttyUSB0. Посмотрим, сможем ли мы с ним работать, хватит ли у нас прав:

ls -l /dev/ttyUSB0

crw-rw—- 1 root dialout 188, 0 окт. 22 14:49 /dev/ttyUSB0

Мы видим, что для устройства заданы разрешения на чтение и запись для пользователя root и группы dialout. Пользователи, не входящие в эту группу, работать с устройством не смогут. Проверим список групп, в которые мы входим:

groups

owlet adm cdrom sudo dip plugdev lpadmin sambashare vboxusers

Так как группы dialout мы не видим, то придется добавить себя в эту группу:

sudo usermod -a -G dialout `whoami` # команда whoami — в обратных кавычках

Теперь нужно выйти из системы и войти снова, чтобы вхождение в группу стало актуальным. Перезагружать систему не обязательно, просто завершим текущий пользовательский сеанс и войдем снова. Проверим принадлежность к группе:

groups

owlet adm dialout cdrom sudo dip plugdev lpadmin sambashare vboxusers

Все в порядке, запускаем Eclipse и.

Настройка Eclipse и первый проект

. попробуем создать проект:

File -> New -> C Project

Придумаем имя проекта и выберим тип — AVR Cross Target Application -> Empty Project. Жмем «Finish», и переходим к настройкам проекта — в панели Project Explorer жмем правой кнопкой мыши на нашем проекте и выбираем «Properties» в выпавшем меню. Чего тут только нет. Нас интересуют вкладки «AVR» и «C/C++ Build».

Сначала идем в AVR -> AVRDude -> Programmer -> Programmer Configuration -> New. . Придумываем имя нашему программатору (например, AVR-910). Теперь нужно выбрать тип программатора. В списке доступных типов мы не находим ничего, похожего на 910. Поэтому кликаем все подряд. Когда доберемся до «Atmel Low Cost Serial Programmer», то увидим в окошке справа:

id = «avr910»;
desc = «Atmel Low Cost Serial Programmer»;
type = avr910;

Это то, что нужно, оставляем этот выбор. Теперь выберем устройство, как мы помним, у нас это /dev/ttyUSB0. Записываем это в поле «Override default port». Это все, жмем «Ok». И устанавливаем только что созданный профиль в качестве значения в поле «Programmer configuration». Идем дальше.

AVR -> Target Hardware -> MCU Type. Если программатор подключен к макетной плате с микроконтроллером (или микроконтроллер воткнут в программатор), то пробуем нажать «Load from MCU». Если MCU Type прочитался и установился корректно, то скорее всего, тип программатьора на предыдущем шаге мы выбрали верно. Если это не так, то нужно еще раз проверить тип программатора, его работоспособность, наличие контакта на макетке. Устанавливаем MCU Clock Frequency в то значение, которое у нас имеется.

Можно еще походить по вкладкам AVR -> AVRDude -> . и обнаружить настройки чтения и записи Fuse и Lock-битов и некоторые другие опции, но пока нам это не нужно и мы идем дальше.

Вкладка C/C++ Build -> Settings -> AVR Compiler -> Miscellaneous -> Other flags — добавляем опцию -g для того, чтобы в ассемблерном листинге мы смогли видеть исходные строки на Си. Посмотрите другие разделы C/C++ Build -> Settings -> AVR Compiler — тут можно установить настройки оптимизации компилятора и другие полезные параметры.

Сохраняем изменения в параметрах проекта и добавим одно полезное сочетание клавиш в нашу IDE: Window -> Preferences -> General -> Keys ищем команду Upload Progect и назначаем сочетание клавиш (например, Ctrl+Alt+U). И там же мы видим, что на комаду Build All уже назначено сочетание Shift+Ctrl+B. Эти две комбинации мы будем вызывать для перекомпиляции исходников и прошивки микроконтроллера.

Теперь нам осталось создать файл main.c (жмем правой лапкой мышки на проекте, New -> File), написать тестовую программу скомпилировать ее и прошить железку. Можно посмотреть ассемблерный листинг получившегося кода, открыв файл .lss, который появится в директории «Debug» или «Release» в проекте (в зависимости от текущего профиля) после компиляции.

Если все прошло удачно, скорее сносите проприетарные операционные системы со своей машины и будьте свободны. О средствах отладки для AVR под Linux мы напишем в следующей статье.

Читайте также:  Linux mint подключение сканера

Источник

11 лучших дистрибутивов Linux для программиста

О том, какая операционная система лучше, можно спорить бесконечно — у противоборствующих лагерей полно разумных аргументов. Сегодня мы поговорим про линуксовые системы — в отличие от конкурентов, они дают больше свободы, позволяют конфигурировать их под свои задачи и возможности машины. Формат open-source — ещё один их плюс. Это именно то, что так любят программисты. Если подумываете отказаться от «родных» Windows или MacOS — ловите подборку лучших дистрибутивов Linux-систем.

Ubuntu

Ubuntu считается лучшей системой для новичков, переход на неё с Windows и MacOS не уничтожит ни единой нервной клетки. Установка программ и пакетов предельно проста: базовое знакомство — и вы не почувствуете неудобств. Для разработчиков и программистов эта линуксовая ОС привлекательна стабильностью и надёжностью.

Ubuntu постоянно растёт и обновляется, в этом она схожа со «старшими» конкурентами. Как у Windows, у неё есть несколько дистрибутивов (Lubuntu, Xubuntu, Kubuntu), которые сохраняют функциональность, требуя меньше ресурсов. Это весомый аргумент для старых машин или задач, где нужна высокая производительность.

Бонус — отличная поддержка ОС. Все недочёты в Ubuntu устраняются молниеносно, техническая поддержка отвечает на вопросы постоянно, перечень дистрибутивов программ огромный и постоянно пополняется.

Pop!_OS

Американский производитель компьютеров и серверов System76 в прошлом году выпустил операционную систему Pop!_OS. Формально это та же Ubuntu, но изменения в графической оболочке GNOME и подключение собственных пакетов юридически сделали её новой системой.

По факту, для российского пользователя Pop!_OS — это Ubuntu с изменённым интерфейсом и улучшенной функциональностью. Если у вас есть претензии к внешнему виду первого фигуранта нашего списка — попробуйте Pop!_OS.

Debian

Debian — базовая ОС как для вышеупомянутых Ubuntu и Pop!_OS, так и менее раскрученных SteamOS, Linux mint, Knoppix. Исключительная стабильность делает Debian надёжным фундаментом для надстроек. Если захотите сделать свою операционную систему с блэкджеком и прочими приложениями — кастомизируйте Debian.

CentOS

Red Hat Enterprise Linux (RHEL) — одна из известнейших корпоративных ОС на базе Linux. CentOS — её ближайшая альтернатива, позволяющая запускать большинство приложений от RHEL и пользоваться менеджером загрузок YUM. Ещё одно преимущество — CentOS имеет доступ к репозиторию Red Hat Software Collections (RHSCL), расширяющему возможности по использованию языков и баз данных.

CentOS подходит для профессиональной разработки, позволяя не тратить время на организацию взаимодействия с коллегами и поиск свежих дистрибутивов.

Fedora

Альтернатива RHEL для корпоративного использования. Обновления выходят каждые полгода, все необходимые пакеты включены в базовую сборку, конфигурация автоматическая. Факт (почти реклама): Fedora использует сам Линус Торвальдс, оценивая эту ОС выше Ubuntu и Debian.

Kali Linux

Операционная система, предназначенная для программистов в области кибербезопасности. Если вы видели сериал «Мистер Робот», то наверняка приметили там Kali Linux. Она основана на Debian и содержит множество инструментов для взлома и защиты системы. К примеру, «из коробки» поставляются John the Ripper — утилита для восстановления паролей из хэшей, Aircrack-ng — улавливатель беспроводных сетей и перехватчик трафика, а также сканер OWASP ZAP. Такой набор будет интересен каждому разработчику, и это только малая часть возможностей.

Ещё одна фича — возможность полноценно установить ОС на Raspberry Pi в качестве альтернативы Raspbian.

Arch Linux

Если вам нужна легковесная операционная система с гибкими возможностями настройки (в том числе ядра), обратите внимание на Arch Linux. ОС поставляется с голым «фундаментом» и Pacman — менеджером пакетов. Графический интерфейс идёт как опция, а не необходимая составляющая, что ценят тру-программисты.

Gentoo

У Gentoo те же преимущества и недостатки, что у Arch. К первым можно отнести тотальный контроль над сборкой: буквально каждый элемент будет установлен только с вашего разрешения. Отсюда и недостатки — без опыта в линуксовых системах собрать удобную ОС будет затруднительно.

NuTyX

Вариация Linux ОС для профессиональных программистов. Ядро Kernel и менеджер пакетов — чтобы создать надёжную систему для личного пользования. Настройка здесь чуть удобнее, чем в предыдущих дистрибутивах, но лучше запаситесь кофе и терпением — установка займёт много времени.

OpenSUSE

Вернёмся к «дружелюбным» системам, на которые стоит обратить внимание Linux-новичку. OpenSUSE — достойная альтернатива Ubuntu. Удобна для разработчиков благодаря множеству доступных сред и приложений, загружаемых с помощью менеджера пакетов YaST. С ним вы забудете о стандартных приложениях Windows и MacOS — здесь тоже всё на высшем уровне.

Elementary OS

Завершим обзор самой понятной системой для новичков. В Elementary масса графических надстроек, так что перейти на нее с привычной ОС будет легко. Возможностей для разработчика здесь немного, зато пользователь оценит множество эксклюзивных GUI и приложений.

Если понравилась Elementary OS, обратите внимание на ChaletOS и Manjaro. Это схожие по устройству системы, которые подойдут для повседневного использования: просмотра почты, фотографий, видео. С их помощью можно дать вторую жизнь старому ноутбуку.

Сборок и кастомных систем Linux значительно больше перечисленных одиннадцати. Но именно они на сегодняшний день наиболее популярны и стабильны. Познакомьтесь с ними, «набейте руку», оцените преимущества и недостатки и обязательно расскажите о своем опыте в комментариях!

Читайте также:  Свойства окон windows 10

О том, какая операционная система лучше, можно спорить бесконечно — у противоборствующих лагерей полно разумных аргументов. Сегодня мы поговорим про линуксовые системы — в отличие от конкурентов, они дают больше свободы, позволяют конфигурировать их под свои задачи и возможности машины. Формат open-source — ещё один их плюс. Это именно то, что так любят программисты. Если подумываете отказаться от «родных» Windows или MacOS — ловите подборку лучших дистрибутивов Linux-систем.

Ubuntu

Ubuntu считается лучшей системой для новичков, переход на неё с Windows и MacOS не уничтожит ни единой нервной клетки. Установка программ и пакетов предельно проста: базовое знакомство — и вы не почувствуете неудобств. Для разработчиков и программистов эта линуксовая ОС привлекательна стабильностью и надёжностью.

Ubuntu постоянно растёт и обновляется, в этом она схожа со «старшими» конкурентами. Как у Windows, у неё есть несколько дистрибутивов (Lubuntu, Xubuntu, Kubuntu), которые сохраняют функциональность, требуя меньше ресурсов. Это весомый аргумент для старых машин или задач, где нужна высокая производительность.

Бонус — отличная поддержка ОС. Все недочёты в Ubuntu устраняются молниеносно, техническая поддержка отвечает на вопросы постоянно, перечень дистрибутивов программ огромный и постоянно пополняется.

Pop!_OS

Американский производитель компьютеров и серверов System76 в прошлом году выпустил операционную систему Pop!_OS. Формально это та же Ubuntu, но изменения в графической оболочке GNOME и подключение собственных пакетов юридически сделали её новой системой.

По факту, для российского пользователя Pop!_OS — это Ubuntu с изменённым интерфейсом и улучшенной функциональностью. Если у вас есть претензии к внешнему виду первого фигуранта нашего списка — попробуйте Pop!_OS.

Debian

Debian — базовая ОС как для вышеупомянутых Ubuntu и Pop!_OS, так и менее раскрученных SteamOS, Linux mint, Knoppix. Исключительная стабильность делает Debian надёжным фундаментом для надстроек. Если захотите сделать свою операционную систему с блэкджеком и прочими приложениями — кастомизируйте Debian.

CentOS

Red Hat Enterprise Linux (RHEL) — одна из известнейших корпоративных ОС на базе Linux. CentOS — её ближайшая альтернатива, позволяющая запускать большинство приложений от RHEL и пользоваться менеджером загрузок YUM. Ещё одно преимущество — CentOS имеет доступ к репозиторию Red Hat Software Collections (RHSCL), расширяющему возможности по использованию языков и баз данных.

CentOS подходит для профессиональной разработки, позволяя не тратить время на организацию взаимодействия с коллегами и поиск свежих дистрибутивов.

Fedora

Альтернатива RHEL для корпоративного использования. Обновления выходят каждые полгода, все необходимые пакеты включены в базовую сборку, конфигурация автоматическая. Факт (почти реклама): Fedora использует сам Линус Торвальдс, оценивая эту ОС выше Ubuntu и Debian.

Kali Linux

Операционная система, предназначенная для программистов в области кибербезопасности. Если вы видели сериал «Мистер Робот», то наверняка приметили там Kali Linux. Она основана на Debian и содержит множество инструментов для взлома и защиты системы. К примеру, «из коробки» поставляются John the Ripper — утилита для восстановления паролей из хэшей, Aircrack-ng — улавливатель беспроводных сетей и перехватчик трафика, а также сканер OWASP ZAP. Такой набор будет интересен каждому разработчику, и это только малая часть возможностей.

Ещё одна фича — возможность полноценно установить ОС на Raspberry Pi в качестве альтернативы Raspbian.

Arch Linux

Если вам нужна легковесная операционная система с гибкими возможностями настройки (в том числе ядра), обратите внимание на Arch Linux. ОС поставляется с голым «фундаментом» и Pacman — менеджером пакетов. Графический интерфейс идёт как опция, а не необходимая составляющая, что ценят тру-программисты.

Gentoo

У Gentoo те же преимущества и недостатки, что у Arch. К первым можно отнести тотальный контроль над сборкой: буквально каждый элемент будет установлен только с вашего разрешения. Отсюда и недостатки — без опыта в линуксовых системах собрать удобную ОС будет затруднительно.

NuTyX

Вариация Linux ОС для профессиональных программистов. Ядро Kernel и менеджер пакетов — чтобы создать надёжную систему для личного пользования. Настройка здесь чуть удобнее, чем в предыдущих дистрибутивах, но лучше запаситесь кофе и терпением — установка займёт много времени.

OpenSUSE

Вернёмся к «дружелюбным» системам, на которые стоит обратить внимание Linux-новичку. OpenSUSE — достойная альтернатива Ubuntu. Удобна для разработчиков благодаря множеству доступных сред и приложений, загружаемых с помощью менеджера пакетов YaST. С ним вы забудете о стандартных приложениях Windows и MacOS — здесь тоже всё на высшем уровне.

Elementary OS

Завершим обзор самой понятной системой для новичков. В Elementary масса графических надстроек, так что перейти на нее с привычной ОС будет легко. Возможностей для разработчика здесь немного, зато пользователь оценит множество эксклюзивных GUI и приложений.

Если понравилась Elementary OS, обратите внимание на ChaletOS и Manjaro. Это схожие по устройству системы, которые подойдут для повседневного использования: просмотра почты, фотографий, видео. С их помощью можно дать вторую жизнь старому ноутбуку.

Сборок и кастомных систем Linux значительно больше перечисленных одиннадцати. Но именно они на сегодняшний день наиболее популярны и стабильны. Познакомьтесь с ними, «набейте руку», оцените преимущества и недостатки и обязательно расскажите о своем опыте в комментариях!

Источник

Оцените статью