- Программные средства для микроконтроллеров AVR фирмы Atmel
- AVR на C — просто?
- Введение
- 1. Подготовка к изучению
- 1.1. Среда разработки
- 1.2. Стандартные библиотеки C/ C++ для микроконтроллеров AVR
- 1.3. Программа для загрузки микропрограмм в микроконтроллер
- 1.4. Микроконтроллер
- AVR-GCC 10.1.0 for Windows 32 and 64 bit
- Included tools
- Downloads
- Upgrading the Arduino IDE
- Known Issues
- Build Script
- History
Программные средства для микроконтроллеров AVR фирмы Atmel
1. ПО для написания и отладки микропрограммного обеспечения
Для написания и отладки микропрограммного обеспечения (МПО) требуется ряд инструментов, в т.ч.:
- редактор кода программы;
- компилятор;
- отладчик кода программы (с помощью симулятора и/или аппаратного отладчика);
- интерфейсы аппаратных отладочных средств (эмуляторы, программаторы, отладчики).
Для ускорения процесса создания МПО также могут использоваться мастера автоматической генерации кода программы, библиотеки функций и другое вспомогательное ПО.
Перечисленные инструменты, как правило, доступны в виде единого программного пакета, который носит название интегрированной среды для проектирования (IDE). Ниже, можно ознакомиться с большинством популярных IDE для микроконтроллеров AVR.
Наименование | Разработчик | Описание | Язык программирования | Ограничения бесплатной версии |
| Atmel | Полностью бесплатная профессиональная IDE от производителя МК AVR. | Ассемблер, Си/Си++ 1) | нет |
| Открытое ПО http://winavr.sourceforge.net/ | Открытая IDE на основе бесплатного Си-компилятора AVR GCC. | Си, Си++ | нет |
| Arduino Software http://arduino.cc/ | Написанная на Java и полностью бесплатная IDE, которая является частью одноименной открытой аппаратной платформы на основе МК AVR. Содержит простой редактор кода, компилятор (AVR GCC) и интерфейс программатора. | Processing/ Wiring 2) | нет |
| http://algrom.net/ | Бесплатная IDE, которая в целях сокращения сроков разработки ПО в 3-5 раз, предлагает графический способ программирования в виде блок-схемы алгоритма. | Графический ассемблер | нет |
| E-LAB http://www.e-lab.de | Простая в освоении коммерческая IDE с компилятором Паскаль и удобным мастером создания проекта, который автоматически добавляет поддержку драйверов указанных внутренних и внешних аппаратных компонентов. | Паскаль | 1) поддерживаются все МК, а код программы ограничен 4 килобайтами 2) поддерживаются только mega8/mega48, а код программы ограничен 8 килобайтами |
IAR Embedded Workbench | IAR Systems http://www.iar.com/ | Профессиональная коммерческая IDE. | Си, Си++ | 1) 30-дневная оценочная версия 2) версия с ограничением кода программы 4 килобайтами |
Micro-IDE | BiPOM Electronics http://www.bipom.com/ | Коммерческая недорогая IDE, поддерживающая разнообразные платформы МК. Поддержка МК AVR обеспечивается версией BASCOM-AVR со встроенным компилятором Бейсик. | Бейсик | Демоверсия с ограничением кода программы 2 килобайтами |
SwiftForth | Forth Inc. http://www.forth.com/ | Интерактивная многоплатформенная коммерческая IDE на основе кросс-компилятора языка Forth, разработанного специально для встраиваемых систем и систем реального времени | Forth | Ограничение по коду программы, невозможность сохранения объектных файлов |
CodeVisionAVR | HP Infotech http://www.hpinfotech.ro | Высококачественная IDE со встроенными ANSI Си-компилятором и мастером автоматической генерации программы. | Си | Оценочная версия с ограничением кода программы 3 килобайтами |
Proteus | Labcenter Electronics http://www.labcenter.co.uk/ | Proteus — система для разработки электронных устройств на основе МК, в т.ч. AVR. Её схемный редактор поддерживает уникальную возможность моделирования работы электрической схемы вместе с МК, исполняющим заданную программу. При подключении специальных отладочных файлов (elf, cof) превращается в полнофункциональный отладчик программы на уровне исходного кода. | Ассемблер, Си 3) | Невозможность сохранения, печати и создания собственных схем на основе МК (допускается только просмотр и модификация входящих в комплект примеров) |
- Cовместно с WinAVR.
- Язык Processing/Wiring — это тот же Си/Си++, но дополненный рядом простых в использовании библиотек для решения типичных задач ввода-вывода. Создан с целью быстрого освоения программирования МК даже новичками, аматерами и неспециалистами в области разработки встраиваемого ПО.
- В комплект не входят.
Тип | Наименование |
Компилятор | Компилятор ассемблера для AVR |
Утилита программирования | ChipBlasterAVR — универсальная утилита для внутрисистемного программирования |
3. Микропрограммное обеспечение
3.1. Операционные системы
Наименование, ссылка | Описание |
FreeRTOS http://www.freertos.org/ | Многоплатформенная открытая операционная система реального времени (ОСРВ), которую абсолютно бесплатно можно использовать в коммерческих применениях. |
AVR на C — просто?
Введение
Материалы приведенные далее рассчитаны на пользователей знакомых с программированием в целом и языком C (не обязательно) в частности.
В основном излагаемый материал описывает использование микроконтроллеров AVR, особое внимание на ATmega328. Для изучения материалов понадобится Arduino Uno или Arduino Nano 3. Да простят меня ардуино-ненавистники, но в данном случае Arduino буд е т использоваться в качестве макетных плат по доступной цене и с возможность использования без программатора .
1. Подготовка к изучению
Для изучения нам понадобятся:
Стандартные библиотеки C для микроконтроллеров AVR ;
Программа для загрузки микропрограмм в микроконтроллер;
1.1. Среда разработки
При выборе среды разработки можно натолкнутся на «не пробиваемую стену» множества программных оболочек для программирования на разных языках программирования. Но учитывая направление на микроконтроллеры круг поиска сужается до сред разработки адаптированных под конкретный вид микроконтроллеров семейства AVR фирмы Atmel. Кроме того среда разработки язык программирования C.
Из множества вариантов рассмотрим среду разработки С odeBlocks. Будем использовать оригинальную версию С odeBlocks с сайта разработчиков www.codeblocks.org последней версии, на момент написания это версия 16.01. Данная среда разработки интересна наличием версий под популярные операционные системы Linux, Windows и Mac OS.
Вкратце рассмотрим установку под Windows. Скачав файл codeblocks-16.01-setup.exe запускаем его.
Ознакомимся с лицензией и принимаем ее.
Устанавливаем все компоненты без изменений
Путь установки оставляем без изменений.
Пробегают строки установки и появляется предложение запустить программу, соглашаемся. И конечно нажимаем Next в установщике и завершаем установку.
Получаем установленную среду разработки Code::Blocks.
1.2. Стандартные библиотеки C/ C++ для микроконтроллеров AVR
Среда разработки установлена, но для работы необходимо подключить библиотеки для компиляции программ для микроконтроллера. Один из способов это поставить WinAVR. Только зачем, если среда разработки уже выбрана. Возьмем все необходимое с сайта производителя микроконтроллеров семейства AVR.
Понадобится Atmel AVR 8-bit Toolchain так как использовать собираемся ATmega328 а он 8- bit. После скачивания запускаем полученный само распаковываемый архив и получаем папку (вида avr8-gnu-toolchain) со всем необходимым. Куда ее положить?
Запускаем ранее установленный Code::Blocks идем в меню Settings >> Compiler переходим во вкладку Toolchain executables выбираем интересующий нас компилятор из списка Selected compiler это будет GNU GCC Compiler for AVR. Далее смотрим путь по умолчанию для размещения ранее скачанной и распакованной папки.
Переименовываем нашу папку как в настройках Code::Blocks и перемещаем по указанному пути.
1.3. Программа для загрузки микропрограмм в микроконтроллер
Теперь все готово для программирования, но не хватает программы для облегчения прошивки микроконтроллера. Для изучения микроконтроллера ATmega328 будем использовать платформу Arduino UNO или Arduino Nano v3. Это дает возможность изучать микроконтроллер без паяльника и программатора. Для Arduino есть хорошая программа ArduinoBuilder и оболочка из проекта CodeBlocks Arduino IDE ( среда разработки Code::Blocks с добавлением библиотек ардуино ). Использовать микроконтроллер без ардуино гораздо интересней поэтому скачиваем только ArduinoBuilder. Его будем использовать для экспериментов с микроконтроллером на плате Arduino. Распаковываем архив, например в корень диска c:\ в папку ну скажем ArduinoBuilder, из нее делаем ссылку на рабочий стол и получаем два ярлыка:
Все программное обеспечение готово. Приступим к «железным» вопросам
1.4. Микроконтроллер
В своих изысканиях будем рассматривать микроконтроллер ATmega328 программы будем писать именно для него. «Знатоки» сразу нас пошлют к DataSheet но это не для нас. Мы пойдем своим путем и будем изучать его анатомию практически — методом «Тыка» : ).
Первое что необходимо, это приобрести минимальное оборудование. Ограничимся для начала покупкой ардуины или аналога. Главное, чтобы на ней был установлен микроконтроллер ATmega328.
Arduino Pro (на ATmega328 );
и конечно клоны от китайских товарищей.
Любой из перечисленных вариантов подойдет с теми или иными ограничениями или изменениями.
Рассмотрим подробнее вариант Arduino Nano v3 . Здесь установлен микроконтроллер ATmega328P, есть возможность подключать через USB, а также существует несколько клонов по приемлемой цене. Описания в интернете можно найти массу, поэтому рассмотрим только схематичное описание найденное на просторах интернет.
На схеме темно-серым выделены соответствия физическим выводам микроконтроллера, на них и будем опираться при программировании.
AVR-GCC 10.1.0 for Windows 32 and 64 bit
This is where I’ll be uploading builds of AVR-GCC for Windows 32 and 64 bit, which will also include Binutils, AVR-LibC, AVRDUDE, Make and GDB. I’ll be trying to keep the builds up to date with the latest tool releases when I can.
The binaries are built from source on a Debian 10 virtual machine with MinGW (GCC 9.1.0 and older were built on an Arch Linux VM), apart from AVRDUDE where the pre-built binaries are obtained from the official download area. Both 32 bit and 64 bit Windows binaries are provided. There’s probably no benefit from using the 64 bit stuff, but all the cool kids are doing it so why not.
A bash script for building AVR-GCC, AVR-Binutils, AVR-LibC and AVR-GDB from source is also provided below, making it super easy to build these tools for yourself.
Included tools
Tool | Version |
---|---|
GCC | 10.1.0 |
Binutils | 2.34 |
AVR-LibC | SVN with extras |
GDB | 9.2 |
AVRDUDE | 6.3 (Not included in Linux release) |
Make | 4.2.1 (Not included in Linux release) |
Downloads
Upgrading the Arduino IDE
Upgrading the Arduino IDE is pretty easy, though there could be some incompatibilities with certain libraries. Only tested with Arduino 1.8.13.
- Download and extract one of the downloads above
- Navigate to your Arduino IDE folder
- Go to [hardware/tools]
- Move the [avr] folder somewhere else, like to your desktop (renaming the folder won’t work, Arduino has some auto-detect thing which sometimes gets confused)
- Move the extracted folder from earlier to the [tools] folder and rename it to [avr]
- Copy [bin/avrdude.exe] and [builtin_tools_versions.txt] files and [etc] folder from the old [avr] folder to the new one
- Done! Open up the Arduino IDE, load up the Blink example, upload it to your Arduino and make sure the LED is blinking!
Known Issues
Build Script
This build script will install the required packages, create directories and build the tools from source. This should work on Debian 8+, Ubuntu 16.04+, CentOS 7 and maybe Arch.
Building takes about 1 hour 45 minutes on an Debian Linux virtual machine with 4 cores i5 2500K @ 4GHz and 2GB RAM.
History
2020-06-15
CURRENT RELEASE
AVR-GCC updated to 10.1.0
Binutils updated to 2.34
Added GDB 9.2
2019-09-07
AVR-GCC updated to 9.2.0
AVR-LibC updated to SVN with extras
2019-05-19
AVR-GCC updated to 9.1.0
2019-02-28
AVR-GCC updated to 8.3.0
Binutils updated to 2.32
2018-09-06
AVR-GCC updated to 8.2.0
Binutils updated to 2.31.1
Issues:
GCC 8 and binutils seem to be having some problems when dealing with library archives, you’ll get error messages like “unable to rename ‘core.a’; reason: File exists” when adding to library archives and “file not recognized: file truncated” linker errors.
2018-05-07
AVR-GCC updated to 8.1.0
Issues:
GCC 8 and binutils seem to be having some problems when dealing with library archives, you’ll get error messages like “unable to rename ‘core.a’; reason: File exists” when adding to library archives and “file not recognized: file truncated” linker errors.
2018-03-02
AVR-GCC updated to 7.3.0
Binutils updated to 2.30
Added Linux release
2017-08-22
AVR-GCC updated to 7.2.0
Binutils updated to 2.29
2017-07-09
AVR-GCC 7.1.0 (R3)
2017-07-09
AVR-GCC 7.1.0 (R2)
Issues:
This release was missing libwinpthread-1.dll in a second location
2017-05-23
AVR-GCC 7.1.0 Built
Issues:
This release was missing libwinpthread-1.dll
2016-04-30
AVR-GCC 6.1.0 Built
Issues:
When compiling with -ffunction-sections and any optimization level other than -O0, strings passed to a function will be stored in flash instead of RAM even though PSTR() hasn’t been used.
A work around is to the store the string in a variable then pass that to the function:
[More info here]
Another work around would be to add -fno-merge-constants to the compiler options.