WinAVR - пакет программ для написания прошивок AVR, Tiny, Mega (free лицензия) |
![]() |
Добавил(а) microsin |
1. Скачать тут [1]. Установка проста до безобразия. 2. В качестве примера можно скачать какой-нибудь проект. Неплохо для этого подходит V-USB, скачать тут [2]. Я скачал avrusb-20080513.zip. Распакуйте архив в отдельный каталог. 3. Будем компилировать примерчик examples\custom-class\firmware\. Зайдите в этот каталог, откройте текстовым редактором файл Makefile. Там нужно прописать тип процессора AVR, тактовую частоту, значение перемычек и другие параметры (см. текст Makefile, он хорошо задокументирован комментариями). Вот фрагмент файла Makefile, где были внесены изменения (остальное поначалу можно не трогать): DEVICE = atmega16 F_CPU = 16000000 # частота в герцах FUSE_L = 0x9f FUSE_H = 0xc9 AVRDUDE = CFLAGS = -Iusbdrv -I. -DDEBUG_LEVEL=0 OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE) 4. Введите в консоли команду make hex. Получится файл main.hex, который можно шить в кристалл, и main.elf, который можно грузить в среду отладки AVR Studio (ну и отлаживать тем, что есть - эмулятором или симулятором)! 5. Прикрутим программатор на примере JTAGICE mkII, работающего в режиме ISP (In System Programmer) и подключенного через USB. Отредактируйте Makefile (переменную AVRDUDE я закомментировал и ввел переменную JTAGICEII): #AVRDUDE = avrdude -c jtag2 -p $(DEVICE) -P usb:xx -v JTAGICEII = c:Program FilesAtmelAVR ToolsJTAGICEmkIIjtagiceii.exe -d $(DEVICE) -e -mi ... flash: main.hex # $(AVRDUDE) -U flash:w:main.hex:i $(JTAGICEII) -pf -if main.hex Немного комментариев. Несмотря на то, что путь до консольной утилиты jtagiceii.exe (которая поставляется в пакете AVR Studio и служит для управления программатором/эмулятором JTAG ICE mkII) содержит пробелы, НЕ НУЖНО здесь применять кавычки. Опция -d $(DEVICE) задает через переменную DEVICE тип микроконтроллера (atmega16), -e указывает стереть устройство перед программированием, -mi включает режим ISP, -pf указывает программировать flash, а -if main.hex указывает входной файл для программирования. c:avrusb-20080513examplescustom-classfirmware>avrdude -c jtag2 -p atmega16 -P usb:xx -v avrdude: Version 5.5, compiled on Jun 9 2008 at 14:32:04 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ System wide configuration file is "c:WinAVR-20080610binavrdude.conf" Using Port : usb:xx Using Programmer : jtag2 avrdude: usbdev_open(): did not find any (matching) USB device "usb:xx" c:asmavrusb-20080513examplescustom-classfirmware>avrdude -c jtag2 -p atmega16 -P usb -v avrdude: Version 5.5, compiled on Jun 9 2008 at 14:32:04 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ System wide configuration file is "c:WinAVR-20080610binavrdude.conf" Using Port : usb Using Programmer : jtag2 avrdude: usbdev_open(): did not find any USB device "usb" ------- 6. Чтобы можно было отлаживать программу эмулятором JTAGICE mkII, нужен файл coff-формата. Он получается из файла *.elf с помощью утилиты avr-copy. Итак, в Makefile нужно внести следующие изменения: COMPILE = avr-gcc -Wall -Os -gstabs -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE) ... main.elf: usbdrv $(OBJECTS) # зависимость usbdrv нужна только потому, что папка usbdrv копируется. $(COMPILE) -o main.elf $(OBJECTS) main.hex: main.elf rm -f main.hex main.eep.hex avr-objcopy -j .text -j .data -O ihex main.elf main.hex avr-objcopy --debugging -O coff-ext-avr $< main.cof avr-size main.hex Теперь после команды make hex будет также появляться файл main.cof, который можно загрузить в AVR Studio, и в нем с помощью эмулятора JTAGICE mkII отлаживать программу. 7. После того, как Вы скомпилировали программу и записали её в Ваше USB-устройство, то может понадобиться USB-драйвер. Например, если Вы скомпилировали пример examples\custom-class\firmware\, то если Вы воткнете свое USB-устройство в компьютер, то определится устройство LEDControl, для которого и нужен драйвер. Делается он просто, процесс по шагам: - скачайте пакет libusb-win32-device-bin-x.x.xx.x.tar.gz с сайта http://sourceforge.net/ (строка для поиска в Google "libusb-win32-device-bin"). Я скачал libusb-win32-device-bin-0.1.12.1.tar.gz. Для написания собственного драйвера USB понадобится установленный пакет libusb-win32 (см. пункт 10, 11), а также Windows Server 2003 DDK. Я его скачал в виде файла .iso (276 мегабайт) и установил обычным образом. 8. Чтобы можно было откомпилировать ПО хоста, скачаем компилятор gcc. Он есть в составе пакета MinGW (http://www.mingw.org/). Заходим на сайт MinGW, идем по ссылке Today's: MinGW, ищем в низу секцию Download, там есть ссылка на Sourceforge's MinGW project page, оттуда скачиваем пакет. Я скачал "Automated MinGW Installer MinGW 5.1.4", файл MinGW-5.1.4.exe. Запускаем, выбираем Download and install, на вопрос "Which MinGW package do you wish to install?" выбираем Current, в выборе типа инсталляции галочка стоит только на "MinGW base tools", ставим еще галочку на "g++ compiler". Жмем Next, папку установки выбираем c:\MinGW, жмем Next, выбираем месторасположение ярлычков, жмем Install. Запустится процесс скачки из Интернета нужных пакетов (около 18 мегабайт, они будут складываться в текущую папку, откуда запустили MinGW-5.1.4.exe), а потом их распаковка и установка. Если что-то не закачалось или не докачалось, можно запустить MinGW-5.1.4.exe заново - будет закачиваться только то, чего не хватает в текущей папке (если какой-то файл недокачался и выдает ошибку при распаковке, его нужно удалить перед запуском MinGW-5.1.4.exe). 9. Добавляем в переменную окружения PATH строчку c:\MinGW\bin (я добавил в начало старой переменной PATH c:\MinGW\bin;). Теперь у Вас должны работать команды make, gcc, ld, rm и другие в любой текущей папке (это нужно для компиляции программ через среду Makefile). 10. Устанавливаем пакет libusb\libusb-win32-filter-bin-0.1.12.1.exe, перед установкой файл libusb\readme.txt рекомендует закрыть все программы, работающие с устройствами USB. По окончании установки по умолчанию запустится тест (если не убрать галочку), который показывает все устройства, доступные через библиотеку. Этот тест показывает все устройства USB, для которых установлен драйвер (те устройства USB, у которых восклицательный значок в диспетчере устройств, не показываются), и их параметры - весьма полезная программа! 11. Чтобы правильно откомпилировалось ПО хоста, нужно в файле Makefile (он находится в папке каждого примера) исправить пути до файла usb.h (заголовочный файл) и libusb.a (библиотека usb). С заголовочным файлом я разобрался быстро, а вот с путем до библиотеки я помучился всласть. Предположим, мы хотим откомпилировать программу хоста из примера custom-class, для этого заходим в папку examples\custom-class\commandline, и открываем файл Makefile текстовым редактором. Итак, вот секция Makefile, где нужно внести изменения (старую строчку я закомментировал символом #): #USBFLAGS = -I/usr/local/include USBFLAGS = -I"c:/Program Files/LibUSB-Win32/include" #USBLIBS = -L/usr/local/lib -lusb USBLIBS = -L"c:/Program Files/LibUSB-Win32/lib/gcc" -lusb Запутался я тут с настройкой USBLIBS - пытался прописать опцию -llibusb.a, поскольку библиотеки с именем usb не нашел, была библиотека с именем libusb.a. Оказывается, нужно просто указать -lusb (почему, не знаю). Теперь, если ввести в каталоге проекта (examples\custom-class\commandline) команду make, то появится файл set-led.exe. Если ввести команду make clean, то удалятся все объектные файлы (с расширением *.o). Как вариант, можно внести вышеуказанные изменения в файле Makefile.windows, и компилировать проект командой make -f Makefile.windows. 12. В пакете WinAVR есть драйвера USB для эмулятора JTAG ICE mkII, и можно их установить, если Вы раньше не установили эти драйвера вместе с пакетом AVR Studio. Драйвера находятся в папке 13. В папке [Ссылки] 1. Download WinAVR site:sourceforge.net. |