Наверное каждый кто задумался начать программировать микроконтроллеры AVR под голым линуксом задает себе вопрос: "А с чего собственно начать?". Эта статья прояснит базовые вопросы для желающих начать программировать AVR из командной строки.
Какие программные продукты потребуются?
- gedit - или любой тестовый редактор, в нем мы будем писать исходные коды.
- avra - компилятор языка Ассемблер для AVR, он почти полностью совместим с Атмеловским ассемблером AVRASM32.
- gcc-avr - компилятор языка Си для AVR.
- avrdude - прошивальщик который поддерживает кучу разных программаторов и контроллеров.
- Архив аппноутами для каждого микроконтроллера.Вообще-то аппноуты можно взять из недр AVRstudio для windows, но там в дефайнах используется символ '#' а синтаксис avra требует использовать'.', поэтому выкладываю архив с "исправленными" дефайнами.
Подготавливаем рабочее пространство
- Устанавливаем пакеты gcc-avr и avrdude:sudo apt-get install gcc-avr avrdude
- К сожалению в репозитории Ubuntu пакет avra старый, версии 1.2.3 от 2007 года. Он не даст нам скомпилировать программу "без работы напильником", поскольку там есть некие директивы pragma и кое-что другое, мешающее нам.Не проблема, на sourceforge.net лежит avra версии 1.3.0, скачаем и установим её.wget http://sourceforge.net/projects/avra/files/1.3.0/avra-1.3.0.tar.bz2tar -xf avra-1.3.0.tar.bz2
cd avra-1.3.0/srccp ../AUTHORS ../README ../srctouch ChangeLog NEWS
Комментарий к последним двум командам:
Для сборки программе очень нужно, чтобы в папке src лежали файлы NEWS, README, AUTHORS иChangeLog, которых там нет. AUTHORS и README лежат в соседней папке, мы их копируем. Файлов ChangeLog NEWS нет, поэтому создадим их пустыми.Оставим его пустым и сохраним.Теперь выполняем сборку пакета:
aclocal && autoconf && automake -a && ./configure && sudo make && sudo make install
Все готово. Проверяем:
avra --version
Получаем:
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010) Copyright (C) 1998-2010. Check out README file for more info
Теперь перенесем содержимое папки includes содержаей APPNOTES в /usr
cd ..
sudo mv /includes/ /usr/share/avra - Создаем в домашней директории папку Projects - в ней мы будем хранить все файлы в той или иной степени необходимые для будущих проектов.mkdir ~/Projects
- Создадим папку для первого проекта, назовем его Example.mkdir ~/Projects/Example
Таким образом путь, скажем, к исходному коду проекта Example будет таков:
~/Projects/Example/Example.asm
Все дальнейшее в статье будет изложено исходя из такой структуры.
Програмирование из командной строки
- В папке нашего проекта создаем .asm файл с исходным кодом программы
gedit ~/Projects/Example/Example.asmПишем код программы, редактируем, сохраняем... - Компилируем
avra --includepath ~/Projects/APPNOTES Example.asmОпция --includepath указывает путь к папке, из которой будут браться все инклуды по умолчанию. Примечательно, что в справке к avra эта опция значится как --includedir, но если начать использовать её, то avra начинает на это ругаться :) так что пишем именно --includepath
Если в коде будут встречены ошибки, avra напишет нам об этом в консоль, с указанием номеров строк с ошибками. Если компиляция прошла успешно, то мы получим файл Example.hex который и потребуется залить в контроллер. - Прошиваем программу в микроконтроллер
sudo avrdude -p t2313 -c usbasp -U flash:w:Example.hexОпции:
-p - указывем тип контроллера, например для Tiny2313 именно t2313 -c - указываем используемый программатор, например usbasp -U - указываем файл для прошивки и Модификаторы
flash:w: - модификаторы уточняют куда производить запись, во flash.
Мы использовали sudo, потому что при запуске avrdude с правами пользователя выводится ошибка:
avrdude: usb_open(): cannot read serial number "error sending control message: Operation not permitted"
Есть элегантное решение данной проблемы... Дело в том, что udev (линуксовый менеджер устройств), исходно не дает кому попало писать на какое попало устройство. Нам нужно подружить USBasp с udevом.
Найдем USBasp в списке подключенных устройств командой lsusb :
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305
Bus 003 Device 025: ID 16c0:05dc VOTI shared ID for use with libusb
Последняя строка - наша цель. 16с0 - это код производителя, а 05dc - это код устройства.
Создадим файл с правилом для udev:
sudo gedit /etc/udev/rules.d/10-usbasp.rules
sudo gedit /etc/udev/rules.d/10-usbasp.rules
Запишем в него такую строку:
SUBSYSTEM=="usb", SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="users", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="users", MODE="0666"
Она означает, что мы дали пользователям, входящим в группу users, права доступа 666 (запись и чтение) к устройству 16c0:05dc. (Впрочем, место users в правиле вы можете прописать любую другую группу, в которой вы уже состоите.)
Чтобы добавить себя в группу users, воспользуйтесь командой useradd, сделайте так:
useradd -G users ваше_имя
Последний штрих. Отсоедините USBasp от порта, выйдите из учетки, потом зайдите и подсоедините снова. Все должно заработать. Теперь можно запускать avrdude без sudo.
Собственно это всё...
Согласитесь, что один раз скомпилировать и прошить отлаженную программу таким методом совсем не утомительно, но отлаживать вновь разрабатываемую программу - крайне неудобно. Как автоматизировать рутинную работу? Легко, например нужно перейти на использование Geany - это специализированной Среды Разработки.
Правильно настроив его, мы сможем в один клик мышки (или нажатие одной кнопки) запускать Компиляцию, Прошивку и Правку фьюзов. Но об этом в следующей статье.
Файлы:
Архив с аппноутами для avra
___
Использованные материалы:
http://radiokot.ru/articles/52/
http://greenoakst.blogspot.ru/2012/08/avr-ubuntu-geany-avra.html - Установка AVRA , Установка и настройка Geany
???? - ссылка как починить работу без sudo
http://greenoakst.blogspot.ru/2012/08/avr-ubuntu-geany-avra.html - Установка AVRA , Установка и настройка Geany
???? - ссылка как починить работу без sudo
Комментариев нет:
Отправить комментарий