Gcc avr для windows

WinAVR

Бесплатная IDE для микроконтроллеров AVR на основе Си-компилятора GCC

  • Поддерживаемые операционные системы: все ОС MS Windows
  • Лицензия: открытое ПО (утверждена организацией OSI)
  • Язык интерфейса: английский
  • Языки программирования: Ассемблер, Си, Си++
  • Бесплатный Си-компилятор (GNU GCC)
  • Встроенная поддержка в AVR Studio
  • Состоит из ряда инструментов, в т.ч.:
    • avr-libc — Си-библиотека для МК AVR.
    • avrdude — программа для программирования МК; поддерживает различные типы программаторов.
    • GNU Binutils — бинарные утилиты для МК AVR, в т.ч. ассемблер. линкер и др.
    • GNU GCC — бесплатный Си-компилятор.
    • avrdude-gui — графический интерфейс для avrdude.
    • GNU Debugger (GDB) — отладчик, работающий в режиме командной строки.
    • Insignt — графический отладчик.
    • AVaRICE — подключает JTAG ICE к отладочному ПО AVR-GDB.
    • simulavr / simulavrxx — симулятор МК AVR.
    • MFile — редактор Make-файла.
    • Programmers Notepad — текстовый редактор/ IDE для компилятора.
    • SRecord — инструменты для редактирования загружаемых файлов в EPROM.
  • Доступность в виде полной версии, которая инсталлируется на ПК, и портативной версии, которая не требует инсталляции и может храниться на USB Flash носителе, тем самым позволяя выполнять работы по написанию и отладке кода программы на любом свободном компьютере.
  • Адрес поддержки в Интернет
    • полная версия: http://winavr.sourceforge.net/.
    • портативная версия: http://www.chip45.com/info/Portable-WinAVR.html.
    • дискуссии, проекты: AVRFreaks.net.

WinAVR — набор исполняемых Windows-совместимых файлов, каждый из которых решает определенную задачу по разработке микропрограммного обеспечения для микроконтроллеров AVR компании Atmel. В комплект входит компилятор GNU GCC для языков программирования Си и Си++.

Снимок экрана с текстовым редактором Programmers Notepad:

Использование различных GCC тулчейнов для AVR

Написал давно, но что-то как-то не мог собраться и дописать. На фоне этого сообщения решил запостить, в общем выкладываю как есть.
Самый популярный gcc тулчейн для AVR микроконтроллеров является WinAVR. Но отнюдь не единственный в своем роде.

Итак:
— собственно WinAVR, ну про него много чего и так понаписано в интернетах, качественно и стабильно, но не часто обновляется.
На данный момент WinAVR 20100110 используется версия gcc 4.3.3

— от Atmel avr-toolchain-3.0.0.240 тут говорят старовата coreutils. По качеству и стабильности догоняет WinAVR. Версия gcc 4.4.3

— от klen’а с форума electronix.ru. Делает свои сборки под разные архитектуры с последними версиями gcc. Последняя версия с форума. Прямая ссылка kgp_avr_20100725.
Сам он говорит, что затачивает свои сборки на скорость исполнения и рекомендует использовать свои сборки только для экспериментов. Версия gcc 4.6.0
(new avr-kgp-elf-x86_32-20111121.7z Версия gcc 4.7.0)

— от Make Hack Void — http://www.makehackvoid.com из Австралии. Сборка MHV AVR Tools. Версия gcc 4.5.1

— также можно собрать свою сборку… (Тут многоточие, об этом можно много почитать в интернетах)

Для примера использования тулчейнов, возьмем простенький проект:

Сохраним его в файл simple.c и в папку «c:\avr_simple\»

Далее распакуем какой-нибудь из тулчейнов. В пути до исполняемых файлов тулчейна не должно быть пробелов и кириллических символов! То есть лучше всего распаковать (или установить) их в следующие папки:

Читайте также:  Void linux установка графической оболочки

Многие из тулчейнов не просто распаковываются, а устанавливаются в систему, при этом они модифицируют так называемую переменную окружения — Path.
Path находится следующим образом для win7:
Проще говоря Path — это те программы которые доступны всегда из командной строки, в какой бы директории вы не находились. В этой переменной окружения нужно оставить только один из avr-тулчейнов, например «c:\winavr\bin;», остальные нужно удалить, при этом не трогая ничего кроме avr-тулчейнов. Этот один оставшийся тулчейн будет работать по умолчанию как основной, если у нас не будет указано иного. Для того чтобы изменения в Path вступили в силу, нужно перезагрузиться.

Теперь можно скомпилировать файл simple.c, набрав в командной строке:
Программа будет скомпилирована тулчейном по умолчанию.

Далее, для того чтобы все эти (и не только эти) сборки заработали вместе и не мешали друг другу на компьютере, под управлением windows, понадобится как минимум MSYS (Minimal SYStem). MSYS это минимальное unix окружение, в которое входит утилита make, нужная для автоматизации сборки, и соответственно сам makefile проекта. Во многие сборки эта среда уже входит, например в winavr. Лично я использовал MSYS отсюда nuwen.net/mingw.html, вот прямая ссылка msys-6.3.7z (2.4 MB). Содержимое архива .7z распаковывается в c:\msys\. В папке появятся толпа .tar архивов, распаковываем в ту же папку, а архивы удаляем. Теперь в этой папке, c:\msys\, лежат папки bin\ etc\ и тд, а также msys.bat. Этот скрипт прописывает собственно msys в Path. Можно сделать это вручную, прописав в Path адрес куда msys положен, в нашем случае C:\msys\bin;. А вот makefile лучше всего иметь свой и копировать его из проекта в проект, а в начале скопировать его с кого-нибудь еще (например с меня), как я когда-то тоже его скопипастил.

Собственно makefile имеет следующую структуру:
— вначале объявление различных переменных
Например:
Дальше эту переменную, $(MCU), можно подставлять в другие:
А также дополнять переменные:
Если же объявить еще одну переменную с тем же названием, то верхняя видна уже не будет. Поэтому, частенько, когда забываешь поставить ‘+’, перед ‘=’, ничего не работает.
Соответственно в переменной SRC будет только hd44780.c, и при компиляции выскочит ошибка.

— далее идут цели.
(Важно! — Команды должны начинаться с символа Табуляции [Tab] )
Вот, в принципе, и все что нужно знать чтобы редактировать makefile’ы. Команда make, выполненная в директории, ищет makefile в этой директории и обрабатывает его.
Для того чтобы поменять тулчейн нужно поменять всего одну строчку в makefile, а дальше отработает скриптик скопипащенный мной с просторов форума electronix.ru.

В начале выбирается сам тулчейн, сюда можно добавить и свой.

Собственно сам исходник, который выбирает, выглядит так:

Как скомпилировать и записать код на микросхему AVR в Linux / MacOSX / Windows?

Это краткое руководство для начинающих, которое направлено на то, чтобы показать, как установить инструменты, скомпилировать код с помощью avr-gcc и отправить его в микроконтроллер с помощью avrdude.

Оно также знакомит с основами автоматизации этой задачи, помещая все инструкции в Makefile. Файлы примера ( main.c, main.bin, main.hex, Makefile) упакованы в архив который можно скачать по ссылке в конце данной статьи.

Читайте также:  Tenorshare windows boot genius

1. Установка avr-gcc и инструментов

Для компиляции исходного кода вашей прошивки на C и/или C ++ вам понадобится компилятор gcc-avr, библиотека C avr-libc и avrdude. Что очень полезно, существуют полные и простые в установке пакеты для всех основных платформ.

Linux, Ubuntu

Ubuntu предоставляет пакеты, поэтому вы можете просто установить их с помощью этой команды:

Mac OSX

Загрузите AVR MacPack. В образе диска MacPack есть установщик, который все сделает за вас.

Windows

Загрузите WinAVR, который включает в себя все необходимое и имеет хороший установщик.

2. Компиляция и запись кода

Теперь, когда у вас установлен компилятор, следующий шаг — скомпилировать простой исходный код в файл .BIN, затем сгенерировать файл Intel .HEX и, наконец, записать этот файл .HEX на микросхему AVR с помощью программатора для AVR.

Пример кода

Вот пример содержимого файла main.c. Код ничего не делает, кроме зацикливания в бесконечном цикле, но это для примера.

Компиляция

Приведенная ниже команда скомпилирует ваш код. Это GCC, поэтому я полагаю, что он вам знаком, и никакой дополнительной информации не требуется. Если вы хотите выполнить компиляцию для другого MCU, вам нужно указать соответствующую опцию -mmcu.

После успешной компиляции вы можете проверить размер памяти программы и данных с помощью этой команды:

AVR Memory Usage
—————-
Device: Unknown
Program: 40 bytes
(.text + .data + .bootloader)
Data: 0 bytes
(.data + .bss + .noinit)

Создание .HEX

Большинство программаторов не принимают в качестве входного файла исполняемый файл GNU. Поэтому нам нужно проделать некоторую работу.

Итак, следующий шаг — преобразование информационной формы .BIN в файл .HEX. Утилита GNU, которая делает это, называется avr-objcopy.

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

Утилита под названием avrdude может программировать микропроцессоры, используя содержимое файлов .HEX, указанных в командной строке.

С помощью приведенной ниже команды файл main.hex будет записан во флэш-память. Параметр -p attiny13 позволяет avrdude узнать, что мы работаем с микроконтроллером ATtiny13. Другими словами — эта опция определяет устройство.

Полный список поддерживаемых чипов можно найти здесь. Обратите внимание, что также допустимо использовать и полные имена (т. е. t13 равно attiny13).

И вуаля! Чип запрограммирован.

3. Make и makefiles

Теперь мы можем автоматизировать этот процесс, создав Makefile и поместив туда наши команды. Структура Makefile очень проста, и дополнительную информацию о ней можно найти здесь . Утилита make автоматически считывает файл Makefile в папке, в которой вы ее запускаете. Взгляните на готовый пример:

Если вы запустите в терминале простую команду make , будет выполнена только метка «all». При запуске (sudo) make flash будет выполнена метка «flash» и так далее.

avr-gcc -std=c99 -Wall -g -Os -mmcu=attiny13 -DF_CPU=1200000 -I. -o main.bin main.c
avr-objcopy -j .text -j .data -O ihex main.bin main.hex

avrdude -p attiny13 -c usbasp -U flash:w:main.hex:i -F -P usb

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

avrdude: Device signature = 0x1e9007
avrdude: NOTE: «flash» memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file «main.hex»
avrdude: writing flash (40 bytes):

Читайте также:  Radeon x1300 pro driver windows 10

avrdude: 40 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 40 bytes
avrdude: reading on-chip flash data:

avrdude: verifying …
avrdude: 40 bytes of flash verified

avrdude: safemode: Fuses OK (H:FF, E:FF, L:6A)

avrdude done. Thank you.

Резюме

По сути, если предположить, что наша программа находится в main.c , только эти три вещи необходимы для компиляции и записи кода на чип AVR.

  1. $ avr-gcc -Wall -g -Os -mmcu=attiny13 -o main.bin main.c
  2. $ avr-objcopy -j .text -j .data -O ihex main.bin main.hex
  3. $ avrdude -p attiny13 -c usbasp -U flash:w:main.hex:i -F -P usb

Важно подчеркнуть, что мы можем легко автоматизировать весь процесс с помощью Makefiles. Рано или поздно она вам понадобится!

Скачать файлы примера (2,1 KiB, скачано: 93)

WinAVR

Мощная среда разработки с открытым исходным кодом, созданная с целью написания программ для микроконтроллеров серии AVR от компании Atmel.

WinAVR состоит из GNU GCC компилятора, поддерживающего языки C, C+ и Objective-C, обеспечивая полный цикл разработки для AVR/AVR32 и дополнительных инструментов, каждый из которых выполняет определенную задачу, помогая написанию программного обеспечения для микроконтроллеров. Наиболее важные из них:
• Programmers Notepad – текстовый редактор для создания программ;
• AVR-LibC – библиотека микроконтроллеров AVR;
• AVRDUDE – утилита, предназначенная для программирования микросхем и использующая SPI-интерфейс;
• GNU Debugger (GDB) – отладчик с командной строкой;
• Insight – отладчик с графическим интерфейсом;
• Simulavr – симулятор микроконтроллеров AVR с поддержкой отладчика GDB;
• SRecord – целый набор утилит для работы с загрузочными файлам EPROM разных форматов.

Работать с WinAVR очень просто, в возникающих вопросах помогает разобраться полный набор документации. Программа создает компактный, довольно приличный код, по синтаксису напоминающий классический язык С. Среди недостатков – отсутствие настройки аппаратуры AVR с помощью исходного кода и интерфейса с другими устройствами. WinAVR может объединяться с фирменным программным обеспечением микроконтроллеров Atmel Studio. Вместе эти пакеты позволяют проводить разработку и интуитивную отладку программ, поддерживая все возможности чипов Atmel.

Программное обеспечение выпущено под лицензией GNU и распространяется абсолютно бесплатно. Каждый пользователь может изменить или доработать программу по своему усмотрению. Кроме этого существует портативная версия пакета, не требующая установки, для хранения на внешнем носителе информации. Адресная строка места инсталляции WinAVR не должна содержать пробелы и кириллические символы. После установки программы появляется целая коллекция ярлыков, запускающая различные утилиты пакета. Основным из них является «Programmers Notepad». Инструкция и примеры лежат в папке WinAVR\doc\avr-libc.
Разработчик программного комплекса – Eric B. Weddington. Его сайт http://winavr.sourceforge.net/ содержит всю необходимую информацию по WinAVR. В настоящее время дальнейшее развитие программы была приостановлено в связи с тем, что Эрик работает над Atmel Studio, являющейся прямым продолжением WinAVR.

Язык интерфейса WinAVR английский и русификатора к нему нет.

Программа поддерживает все 32-битные операционные системы Windows. Существует версия для работы в Linux-системах.

Распространение программы: Freeware (бесплатная)

Оцените статью