![]() |
![]() |
|||||||||||||||
Программирование AVR под Linux
Автор: ANALOG, pletnevroma@mail.ru Предисловие: Наверное каждый кто пишет программы под AVR микроконтроллеры и имеет на компе Linux задумывался о том чтобы писать именно на нем. И часто это оказывается не так просто. Проблема тут в отсутствии единого подхода. Каждый выкручивается как может. В отличии от Windows, где поставил AVRstudio и все готово. (конечно и под винду есть другие варианты, но статья не об этом). Лично для меня этот вопрос был одной из главных трудностей при переходе на Linux. И даже когда я уже по большей части сидел только на нем, все равно частенько приходилось загружать Windows чтоб запустить родную студию :) Поэтому я решил написать статейку на эту тему. Надеюсь она снимет некоторые вопросы у желающих писать программки для AVR под линуксом. Статья ориентирована скорее на начинающих, поэтому все будет подробно разжевано, а все консольные команды с пояснениями. Используется дистрибутив Linux Ubuntu, но все прокатит и на любом другом. Что нам для этого понадобится: geany - прокачанный текстовый редактор с кучей вкусностей о которых ниже, в нем мы будем писать исходные коды. sudo apt-get install geany Возможно, некоторых программ не будет в стандартных репозиториях - тогда репозитории с ними нужно подключить, отредактировав файл /etc/apt/sources.list (после этого не забываем sudo apt-get update) или собрать из исходников. Короче, если что-то из этого на ваш дистрибутив не поставится - погуглите. Теперь нам понадобится папка с аппноутами для каждого микроконтроллера. Можно взять из недр AVRstudio у кого она есть, но там в дефайнах используется символ '#' на который ругается avra, так что во вложениях к статье есть архив с "хорошими" дефайнами. В эту же папку я кладу свои файлики с макросами которые я использую. Когда все это есть можно уже в принципе приступать к написанию кода. У меня в домашней директории есть папка Projects, а в ней папка AVR, в которой у меня лежит папка APPNOTES а так же все проекты (каждый в отдельной папке). Итак, приступим: 1. Создаем в Geany файл Example.asm с исходным кодом 2. Компилируем его с помощью avra: 3. прошиваем контроллер через avrdude Все, в принципе тут можно и остановиться, но ведь это неудобно до жути - каждый раз руками лапами вбивать всю эту лабуду в консоль. Да еще и в голове держать синтаксис команд, а она-то не резиновая. Вот тут то и настало время "вкусностей" Geany, из-за которых мы именно его и выбрали. Geany задуман как редактор именно для программистов, поэтому в нем есть три абстрактных действия с файлами: компиляция, сборка и запуск. При этом пользователь может сам определить какие команды должны выполняться в этих действиях. В поля "Скомпилировать" и "Выполнить" (на скрине подсвечено оранжевеньким) вводим соответственно команды для компиляции и прошивки в кристалл программы. avra --includepath ~/Projects/AVR/APPNOTES %f А для прошивки: sudo avrdude -p t2313 -c usbasp -U flash:w:%e.hex Теперь для того чтобы программа скомпилировалась достаточно нажать F8 (или кнопочку с треугольником и кружочком в самом верху), а чтобы прошилась в контроллер - F5 (или кнопочку с шестеренками). Так гораздо удобнее, но все еще не идеально - avrdude требует запуска через sudo, поэтому нужно каждый раз вводить пароль при прошивке. Для устранения этой досадной несправедливости откроем терминал и введем: sudo chmod +s /usr/bin/avrdude Этим мы открываем права на запуск avrdude. Теперь можно запускать avrdude без sudo: avrdude -p t2313 -c usbasp -U flash:w:%e.hex Но и теперь процесс не полностью автоматизирован - если мы вдруг решили написать прогу для другого контроллера, то по прежнему нужно лезть в настройки и менять опцию -p у avrdude. Как заставить Geany самому распознавать контроллер? А например по строчке .include "m8def.inc" которая есть в каждой программе. WARNING!!! В статье не отображаются бекслэши, поэтому они заменены обычными слешами красного цвета: / PART=`grep -m 1 "/.include /".*def/.inc/"" %f | grep -o "/(tn/|m/)[0-9]/+" | sed "s/tn/t/g"` && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit (В конце статьи есть файлик filetypes.asm, в котором все это есть. Можно вместо переписывания скриптов просто закинуть его куда надо (~/.config/geany/filedefs/filetypes.asm)) Всю эту здоровенную строку нужно вбить в поле "Выполнить" Ну вот, теперь все совсем уж замечательно и в конечном виде команды компиляции и прошивки выглядят так: avra --includepath ~/Projects/AVR/APPNOTES %f PART='grep -m 1 "/.include /".*def/.inc/"" %f | grep -o "/(tn/|m/)[0-9]/+" | sed "s/tn/t/g"' && echo "target device: $PART" && avrdude -p $PART -c usbasp -U flash:w:"%e.hex" && exit Осталась последняя маленькая деталь, которую стоит обсудить - фьюзы. При первом запуске ее нужно настроить. Переходим во вкладку Settings - AVRDUDE Сюда нужно ввести путь к avrdude, к файлу с ее настройками, тип вашего программатора и порт к которому он подключен. В общем, ставим все как на скрине. Перед исправлением фьюзов сначала обязательно их считывайте с кристалла! Да и вообще, поаккуратней с ними :) Можно даже запуск avr8-burn-o-mat повесить на оставшееся свободным действие "Сборка". Тогда вообще все просто замечательно выходит: F8 - скомпилировать, F5 - прошить, F9 - поправить фьюзы. Ну вот и все, теперь вы сможете с легкостью писать AVR программки из-под вашего любимого линукса.
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |