![]() |
![]() |
![]() |
![]() |
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. Отличия:
Оригинальный фирменный программатор 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Приобрел 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 |
![]() |
![]() |
![]() |
![]() |