Atmel встраивает в чипы два протокола программирования: ICSP и JTAG.

ICSP - это специальный фирменный последовательный интерфейс, использующий сигналы MOSI, MISO, SCK, /RESET. Реализован во всех чипах Atmel. Для ICSP имеется много программаторов: от простейшего STK200 на порт LPT до AVRISP2 с интерфейсом USB.

JTAG - более современный протокол, позволяющий не только программирование, но и отладку программ. Сигналы TDI, TDO, TCK, TMS. Имеется только в старших моделях чипов: ATmega16, ATmega162, ATmega169, ATmega32, ATmega323, ATmega64, ATmega128. Программатор/отладчик для порта JTAG называется JTAGICE.

Существует открытый проект Evertool - программатор, совместимый одновременно с STK500 и JTAGICE. Имеются схема и тексты, но нет интерфейса USB.


AVR-ISP500: самодельный USB-программатор для порта ICSP

Для повседневной работы с чипами AVR я изготовил самодельный программатор, совместимый с AVRISP2. По сути это клон открытого проекта AVRUSB500. Отличия:

  • Используется ATmega163 (в оригинале ATmega8).
  • Генератор 7.3728 МГц (был 3.6864 МГц).
  • Сигналы ISP находится на других ножках порта PB.

Оригинальный фирменный программатор AVRISP описан здесь.

Для скачивания доступны следующие файлы:

Чтобы прошить устройство, надо подключить его к программатору, имеющему порт ISCP, и установить два джампера. Пример прошивки через STK200 и avrdude:

avrdude -cstk200 -patmega163 -Enoreset -e -Uavrisp500.hex -Ulfuse:w:0xCD:m -Uhfuse:w:0x07:m

Разъём AVR ICSP-6:

Разъём AVR ICSP-10:


JTAGICE: USB-программатор и отладчик для порта JTAG

kt-eujtagice.jpg

Приобрел EU-JTAGICE-USB - программатор для AVR через порт USB. Сделано в России, полный аналог AVR JTAGICE фирмы Atmel. Цена - около $100. Существует также аналог от Olimex.

Изначально изделие имело прошивку (firmware version) 7E. Чтобы обновить её, пришлось потрудиться. Штатным путём эта операция не проходила: AVRPROG не “видел” устройство. Пришлось использовать загрузочный блок от проекта Evertool. Чтобы прошить его программатором STK200, потребовалось внести некоторые аппаратные изменения.

Шаг 1: переделка разъёма ICSP

На плате имеется 6-контактный разъем ICSP. Изначально он подключен к микросхеме AT90S2313. Подключим его к ATmega16. Надо перерезать проводники у ножек 1, 16, 17, 18 и 19 чипа AT90S2313. Затем паяем контакт 5 разъёма ICSP к ножке 4 чипа ATmega16.

Шаг 2: прошивка загрузочного блока

Из дистрибутива Evertool извлекаем файл evertool.hex и прошиваем его, используя программатор STK200 и утилиту avrdude:

avrdude -cstk200 -patmega16 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U flash:w:evertool.hex -U lock:w:0x2f:m
Шаг 3: установка джампера загрузки

Чтобы запустить загрузочный блок в режиме обновления, необходимо закоротить ножку 25 чипа ATmega16 на землю. На плате есть соответствующее отверстие, куда можно запаять контактный вывод. Соединяем его, например, с контактом 2 разъёма JTAG. После этого выключаем и снова включаем питание платы.

Шаг 4: обновление версии JTAGICE

Вызываем AVRPROG. Он обнаружит устройство “ATmega16 boot”. Выбираем для прошивки файл “/Program Files/Atmel/AVR Tools/JTAGICE/Upgrade.ebn”. Затем нажимаем кнопку “Program” в рамке “Flash”. После завершения убираем джампер с ножки 25 и передёргиваем питание. Устройство готово к работе.

После обновления у меня получилась версия прошивки (firmware version) 80. Её можно скачать здесь: jtagice80.hex.

Разъём AVR JTAG:

Для отладки необходимо использовать GDB и AVARICE. Под Ubuntu Linux их можно установить командой:

sudo apt-get install gdb-avr avarice

Вызов отладчика:

avarice --jtag /dev/ttyUSB0 :4242
gdb test_timer.out
(gdb) target remote localhost:4242
(gdb) break main
(gdb) continue
 
proj/avr/usbprog.txt · Последние изменения: 2010/03/29 08:09 vak
 
Copyright (C) 1996-2013 Serge Vakulenko
serge@vak.ru