Страница 1 из 1

Программирование AVR в Linux

Добавлено: Пт июл 26, 2013 17:23:16
Castiel
Здравствуйте форумчане.
Решил хоть как-то слепить информацию о программировании AVR в Linux.
Так сказать показать путь который я прошел со своей Убунтой 8)

1. Язык программирования
Языком программирования был выбран язык си. С ASM пока не особо дружу.
Использовал компилятор GNU Complier Collection (GCC).

Вот необходимые пакеты для установки:
gcc-avr - это та часть мощной GNU Complier Collection (GCC), которая будет осуществлять кросс-компиляцию для целевой архитектуры микроконтроллеров AVR.
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

2. Среда разработки
Средой разработки выбрана Eclipse

Изображение

Открываем любимый терминал и копипастим строчку
sudo apt-get install eclipse eclipse-cdt

Теперь у нас есть среда разработки, но для работы с нашим камнем нужен плагин AVR Eclipse Plugin
Запускаем нашу среду разработки Выбираем Хелп->Установка нового софта->Копипастим ссылку ниже->Жмем добавить.
http://avr-eclipse.sourceforge.net/updatesite/
Выбираем AVR Eclipse Plugin и жмем далее.

Изображение

Собственно теперь мы можем создавать проект, там выбираем камень и частоту.

Изображение

Можно прошивать прямо из Eclipse, но мне удобней отдельно.

3. Программатор
Программатором был выбран самый банальный USBasp
Он простой и для USB, так что паяем :solder:
Печатку и прошивку и полезности брал здесь.
Получаем такую штуку

Изображение

Дрова уже сидят в ОС, так что заморачиваться не нужно.
Если что не так :cry: вот это может помочь.

Теперь мы можем зашить простую программу в камень
Используем avrdude.
sudo avrdude -c usbasp -p t13 -U flash:w:Tiny.hex
где:
usbasp - это наш программатор (вводим avrdude -c ? чтобы узнать с какими программаторами мы можем работать, аналогично можно посмотреть камни)
t13 - наш камень (В даном случае Тинька13)
Tiny.hex - Файл прошивки

4. Прошиватор :))
Терминал это гуд, но иногда нужен и графический интерфейс.
Для avrdude есть такая замечательная программа AVR8 Burn-O-Mat
Скачиваем с сайта и ставим. Если возникнет косяк с установкой, то следует разобрать пакет и исправить номер версии, ну у собрать обратно.
Запускаем настройки.

Изображение

В настройках выбираем путь к Аврчуваку и к его конфигу. У меня эти пути такие
/usr/bin/avrdude
/etc/avrdude.conf
Далее выбираем программатор и порт:
usbasp(USBasp,http://...)
Можно добавить дополнительние опции в поле additional options.
Соглашаемся. Теперь можно что-то и залить))

Выбираем тип нашего камня. Далее выбираем файлы Flash и EEPROM и жмем на запись.
Внизу будет виден ход работы.

Изображение

Если пишет что устройство не отвечает, проверьте чтобы все было подключено.
Для настройки фьюзов нажимаем кнопку Fuses настраиваем и записываем.
Не забываем проверить инверсные или нет!!!

Изображение

На этом собственно все. Удачи в нашем нелегком деле :beer:

Re: Программирование AVR в Linux

Добавлено: Пт июл 26, 2013 20:54:18
Kavka
До кучи для openSUSE.
Подключаем репозитарий для соответствующей версии дистрибутива отсюда (или с зеркала)
http://download.opensuse.org/repositori ... hain:/avr/
Там есть avrice, avr-gcc (разных версий), avr-gdb, avr-binutils, avr-insight, avr-libc, simulavr, avrdude, uisp и даже arduino.

Eclipse ставил вот отсюда http://www.eclipse.org/downloads/
Распаковал в /opt , поправил права и всё.
Установка дополнения для AVR так же как описано выше.

По поводу ассемблера. В составе пакета avr-gcc есть avr-as, это GNU ассемблер для AVR (компилятор из командной строки).

Если используете программаторы на COM-порту, то чтобы не запускать avrdude из под root-а добавьте своего пользователя в группу dialout. Для программатора на LPT-порту пользователя надо добавить в группу lp. Не забудьте выйти и зайти в систему после добавления в группу, перезапустить терминал не достаточно, надо завершить сеанс и зайти заново.

Как-то так. :)

Re: Программирование AVR в Linux

Добавлено: Пт июл 26, 2013 21:09:17
phenomen
Castiel писал(а):Открываем любимый терминал и копипастим строчку
sudo apt-get install eclipse eclipse-cdt
Это не очень удачный способ установить еклипс на убунту.
В ее репозиториях старая версия.

Тут хорошо описан процесс установки свежей версии.
Если кто будет ставить так, учтите, что есть проблемма с иконкой. Лечится изменением ее адреса Icon=/opt/eclipse/icon.xpm в файле /usr/share/applications/eclipse.desktop. На какой менять - не помню... :oops:
Вместо nano приятней использовать gedit.
Ну и не забыть поменять eclipse-SDK-3.7-linux-gtk-x86_64.tar.gz на скачанный.

А вообще - Молодец!!!

Re: Программирование AVR в Linux

Добавлено: Пт июл 26, 2013 21:21:40
zöner
еще один вариант, попроще: http://playground.arduino.cc/learning/linux

Re: Программирование AVR в Linux

Добавлено: Пн июл 29, 2013 20:56:14
mrFox
программирование XMega:
программатор avrdude
железо - любой прошрамматор из темы "AVRISP mkII новый клон (поддерживает XMEGA)" у которого выведенн PDI
команда
sudo /usr/bin/avrdude -c avrispmkii -p x256a3 -P usb -e -U flash:w:./Release/test_xmega.hex

программирование STM32 по USART
программатор stm32flash
железо - преобразователь USB->RS232
команда
sudo ../stm32flash -w ./Release/test_stm32.hex -v -b 115200 /dev/ttyUSB0

Re: Программирование AVR в Linux

Добавлено: Пн ноя 11, 2013 20:45:54
xVekx
Вот кстати интересный вопрос, есть программатор STK600, как в линуксе можно управлять его задающим генератором, AREF0, AREF1 ? :(

Re: Программирование AVR в Linux

Добавлено: Пн ноя 18, 2013 11:03:11
Kavka
STK600 Communication Protocol - Как-то управлять можно.
А есть ли готовая программка - не знаю. Может кто-то другой подскажет.