Программирование AVR микроконтроллеров в Linux на языках Asembler и C
Поделюсь информацией и соображениями о том как начать программировать AVR микроконтроллеры фирмы ATMEL под операционной системой Linux. Используем мощные и свободные программные инструменты, настраиваем рабочее окружение и применяем на практике. Приведены примеры простейших программ на языках Assembler и C, которые помогут сделать первые шаги при обучении работе с микроконтроллерами AVR в Линукс.
Если вам раньше никогда не приходилось программировать микроконтроллеров и вы хотите попробовать все на практике то не стоит пугаться того что что-то может не получиться или пойти не так. На самом деле все очень просто, главное быть внимательным и не бояться экспериментов.
Если же вы раньше программировали AVR'ки под Windows но перейдя на Linux не знаете с чего начать и боитесь что в данной ОС у вас не будет достаточно инструментов для разработки, то поспешу вас обнадежить - инструментов предостаточно, к тому же большинство программ и утилит которые вы использовали под Windows прекрасно функционируют и под Linux используя транслятор Wine.
К чему-то придется привыкнуть, от чего-то отказаться, а что-то начать использовать по другому. Со временем, все настроив под себя, вы будете удивлены насколько все просто и удобно, так что программирование AVR микроконтроллеров в Linux - это вполне реально!
Цикл статей по AVR в Linux
Содержимое статей рассчитано на знакомство с AVR микроконтроллерами под Linux снуля, мы с самого начала разберем что такое AVR микроконтроллер, как его подключать и работать с ним в Linux.
Также я предполагаю что вы знакомы с основами радиоэлектроники и уже что-то мастерили сами или с помощью других, знаете как подключать источник питания, умеете прозвонить при помощи тестера светодиод и т.п.
В качестве ОС для работы у нас будет Linux, так что вы должны быть знакомы с консолью и уметь выполнять простые команды, это нам пригодится в процессе изучения работы базовых инструментов и настройки окружения. Все работы по программирования микроконтроллеров AVR в Linux можно и вовсе производить в консоли даже без графических оболочек типа KDE, Gnome, FluxBox.
Так что программировать AVR в Linux можно даже на очень старом компьютере с минимумом ресурсов, к примеру на стареньком ноутбуке Pentium-233/64MB RAM/2GB HDD, такая возможность бывает иногда очень полезной.
Все описанное дальше будет также полезено в качестве справочного сундучка, где собраны:
- принципы маркировки микроконтроллеров AVR;
- подключение питания к микроконтроллеру;
- схемы наиболее популярных программаторов;
- описание подключения микроконтроллера к программатору;
- распиновка интерфейсов LPT, COM;
- примеры команд для чтения, стирания и записи Flash микроконтроллера;
- и многое другое.
Изначально я планировал изложить весь материал в виде одной статьи, но написав 8 пунктов (порядка 70%) статьи я понял что она получится очень большой как по размеру текста, так и по количеству картинок. Решил разделить статью на части, пусть каждый пункт будет отдельной статьей.
Рис. 1. Коллаж отрывков фото из цикла статей по AVR в Linux.
Работать будем под Debian GNU Linux, также все описанное в публикациях будет справедливо для Ubuntu и других дистрибутивов Linux.
В статье предоставлена базовая информация которой достаточно чтобы сделать первые шаги к изучению и программированию AVR микроконтроллеров под операционной системой Linux.
Содержание
- Что такое AVR микроконтроллер
- Для чего можно использовать AVR микроконтроллер
- Архитектура AVR микроконтроллеров
- Маркировка микроконтроллеров AVR, выбор чипа для начала знакомства
- Аппаратное обеспечение для изучения микроконтроллеров
- Программаторы для AVR микроконтроллеров
- Как подключить программатор к микроконтроллеру
- Инструменты для программирования AVR микроконтроллеров в Linux
- Настройка среды программирования Geany для работы с AVR
- Параметры запуска и примеры использования AVRDUDE
- Настраиваем среду и работаем с программаторами
- Простая программа для AVR микроконтроллера на Ассемблере
- Простая программа для AVR микроконтроллера на Си
- Работа с регистрами, битовые операции
- Подключаем кнопку к микроконтроллеру ATtiny2313, простая программа
- Что такое Fuse и Lock биты в AVR микроконтроллере, как с ними работать
- AVR Си - выносим функции и переменные в модули, компиляция нескольких файлов в avr-gcc, Makefile
Может быть что я что-то упустил или указал не точно - пишите, будем дополнять и исправлять!
Желаю вам удачного изучения и позитивного настроения! Все обязательно получится.
очень хороший цикл статей, все просто и понятно, спасибо
Спасибо за отзыв, рад что вам понравилось.
Скажите пожалуйста, уже несколько месяцев не могу решить вопрос. Можно ли настроить avarice + abr-gdb + ddd(display data debugger) через jtag ice 1 на линуксе? (Прошивать только avrdude, так как avarice с новой версией прошивать не может, только отлаживать.) Или же необходимо всетаки приобретать avr jtag ice 2 за 100$ ?? Сомнения появляются так как avrdude через jtag ice 1 прошивает с какимито ошибками. Однако прошивка работает.
Reading | ######################### | 50% 0.02savrdude: jtagmkI_paged_load(): timeout/error communicating with programmer (resp э)
С подобной связкой не работал, судя по признакам ошибки причиной может быть неверно настроенный порт, к которому подключен программатор или же какая-то программная неполадка. Вот некоторые соображения по работе с AVRDude:
На мой взгляд лучший цикл статей для вхождения AVR-LINUX
Спасибо Вам большое. Благодаря этому циклу статей смог сделать первый, самый важный шаг в использовании ассемблера для ATmega в Debian - загрузил в Ардуино первую работающую программу. Только константу для цикла ожидания уже надо выбирать не 5, а 255 - время не стоит на месте :-)
Владислав, искренне рад что эти статьи вам пригодились! Успехов вам в обучении и в ваших будущих проектах
Добавлена новая статья с описанием разбивки проекта на модули, компиляцией нескольких Си-файлов. Также приведен пример создания простого и универсального Makefile, показано как перенастроить Geany.
Спасибо Вам за интересные статьи.
Спасибо, дружище. Прояснилась ситуация с AVRами.
Здравствуйте. Всем пожалуйста!