Китайский jtag ice для avr и установка драйверов

JTAG на макетке

Микроконтроллеры ATmega можно условно разделить на две категории: те, что программируются только через ISP (шина из проводов MISO, MOSI, SCK + управление сбросом) и те, что имеют в дополнении к этому интерфейс JTAG.

Из набора “горячо любимых” Arduino-контроллеров к первой категории относятся ATmega8, ATmega168, ATmega328P.

Но и во второй категории тоже присутствует один экземпляр: ATmega2560, используемый в Arduino/Freeduino MEGA 2560.

JTAG – это механизм, позволяющий автоматически контролировать качество монтажа печатных плат: не закоротилось ли чего или, наоборот, плохо припаялось.

Очень полезная вещь в промышленном масштабе, особенно когда на одной плате “счастливо” уживаются микросхемы разных фирм (стандарт IEEE 1149.1, на котором базируется JTAG – открытый).

Тем более логично, что многие производители микросхем добавили возможность программирования и отладки своих чипов через все тот же JTAG.

Для чего может потребоваться JTAG в повседневной жизни?

В моем случае – вдруг потребовалось читать и писать содержимое flash ATmega128, а вместо привычной вилочки ISP наружу торчит только JTAG. В этом случае уже простой программатор типа USBasp, увы, не поможет.

Фирменное устройство от ATMEL стоит немало (а я и так уже прикупил нанопаяльник,   денег после этого осталось ноль отрицательное количество):

Что же делать? Я уже говорил, что стандарт – открытый, а процесс программирования через JTAG хорошо документирован – достаточно открыть любой даташит на микроконтроллер ATMEL с JTAG-интерфейсом.

Кстати, когда-то, на заре появления микроконтроллеров фирмы ATMEL, фирма-конкурент Microchip дразнила ATMEL показательно разобрала какой-то инструментальный девайс для разработчика программ микроконтроллеров ATMEL и демонстрировала, что он собран на микроконтроллерах её производства – то бишь, на PIC-ах. Впрочем, было это невероятно давно, мир теперь уже совсем другой (c).

В интернете есть масса вариантов самодельных копий фирменного AVR JTAG ICE. Одну из таких упрощенных до полного безобразия можно найти, например, здесь. Что самое забавное –  работает, хотя состоит практически из одного МК: ATmega16.

Оригинальный программатор использует чип, полностью совместимый с ATmega16, что делает возможным заливание в самопальный программатор прошивок от фирменного (правда, новые навряд ли будут появляться, поскольку AVR JTAG ICE дано снят с производства).

Для начала надо достать основной компонент – микроконтроллер ATmega16-16PU и кварц 7.3728 МГц, после чего собрать на макетке минимальную схему для программирования:

Схема – классическая, необходима для запуска ATmega. Напомню, что обычно делают в таком случае:

  • подключают питание –  все GND и VCC (обычно выводов GND не менее двух);
  • ставят между GND и VCC поближе к ножкам ATmega фильтрующий помехи конденсатор 100 нФ (или 0.1 мкФ – кому как больше нравится);
  • подключают между XTAL1 и XTAL2 кварц и соединяют их через два одинаковых конденсатора на землю (разброс номинала указан в документации, не обязательно использовать 22 пФ, можно, например, и 33 пФ);
  • притягивают линию сброса к VCC через резистор 10К и вешают конденсатор 100 нФ на землю, чтобы обеспечить небольшую задержку линии сброса после подачи питания.

Выглядеть это будет приблизительно так (всё благополучно влезает на макетку 300+100):

Соединяем схему через вилку ISP с программатором и запитываем от него же, затем зашиваем прошивку и выставляем фьюз-биты:

avrdude -C avrdude.conf -c usbasp -p m16 -U hfuse:w:0x1f:m -U lfuse:w:0xcf:m

avrdude -C avrdude.conf -c usbasp -p m16 -U flash:w:miniICE.hex

Если операция прошла успешно, полдела сделано. Можно аккуратно удалить ISP-разъем и преобразовать схему к следующему виду:

На макетке это выглядит так:

Наверное, вы обратили внимание, что в схеме я использовал USB-чип последовательного порта – FT232RL. Это гораздо удобнее, чем COM-порт, по многим причинам. Но в макетку SSOP не воткнешь, поэтому я использую самостоятельно изготовленный переходник USB-TTL:

В классическом варианте линий JTAG чуть больше, чем на схеме:Обязательные сигналы – TCK, TDO, TDI и TMS (тактовая, выход данных, вход данных и управление режимом теста).

NSRST и NTRST – это управление сбросом на шине JTAG. В нашем случае не обязательны, поскольку сброс МК можно инициировать командной последовательностью на линиях обязательных сигналов.

Теперь разберемся с питанием. Желательно, чтобы внутрисхемный программатор питался от программируемой схемы. Этим сразу решается проблема стыковки уровней программируемой схемы и программатора.

С другой стороны, если в программаторе есть конвертер уровней сигналов, различие VCC программатора и target уже не является проблемой (не считая усложнение схемы программатора).

С обязательной линии VTref должно подаваться напряжение питания устройства. По идее, он нужен вышеуказанному чипу конвертера уровней, внутри программатора.

Но если JTAG ICE планирует питаться от target-а, то используется линия Vsupply. Для простоты, их можно объединить, но это не обязательно.

В зависимости от положения джампера SV2 на схеме ATmega16 будет питаться либо от USB, либо от target-а. Я на макетку ставить переключающий джампер поленился, ибо предполагалось питание только от target.

Зато перед включением три раза проверил, что питание с USB не подается. Для надежности, на плате USB-TTL разомкнул джампер подачи питания.

Далее контакт M8RX соединяется с ножкой МК RX, M8TX – с TX.

Подключаемся к программатору через AVR Studio, и если все правильно соединено, то можно будет прочитать сигнатуру и прошивку.

(устройство справа я обязательно рассмотрю позже, пока что могу только повторить, что внутри у него ATmega128)

Единственный минус клона AVR JTAG ICE – сравнительно небольшой список поддерживаемых МК:

  • ATmega128
  • ATmega128A
  • ATmega16
  • ATmega162
  • ATmega165
  • ATmega169
  • ATmega16A
  • ATmega32
  • ATmega323
  • ATmega32A
  • ATmega64
  • ATmega64A

Еще, говорят, поддерживается AT90CAN128, но проверить это нет возможности 🙁

Источник: http://mk90.blogspot.com/2010/02/jtag.html

USB AVR JTAGICE XPII (Waveshare Electronics Ltd.)

USB AVR JTAGICE XPII  –  внутрисхемный программатор-отладчик от компании Waveshare, совместимый с ATJTAGICEmkII от ATMEL.

Поддерживает все AVR и AVR32 микроконтроллеры с возможностью внутрисхемной отладки, включая семейство XMEGA. Эмулятор поддерживается AVR Studio 4/5/6 и поставляется с прошивкой AVR Studio v.

5, которая может быть обновлена до AVR Studio 4/6.                

Отличительные особенности:

  • поддержка отладки всех AVR и AVR32 микроконтроллеров с  OCD;
  • внутрисхемная отладка: Запуск, Пошаговый режим, Точки останова и др.;
  • поддержка отладки исходников на уровне ассемблера и HLL;
  • программирование FLASH, EEPROM, Fuses, lockbits (недля Debugware);
  • интерфейсы PC – USB1.1 и RS-232;
  • интерфейсы для целевой платы: JTAG, PDI, DebugWIRE;
  • питание отладчика от источника DC 9-15 В;
  • может быть запитан от шины USB;
  • диапазон рабочего напряжения целевой платы 2.1 В–5.5 В;
  • полностью совместим с JTAGICEmkII, прост в использовании и надежен;
  • в AVR Studio идентифицируется как JTAGICE mkII, высокоскоростной программатор-отладчик;
  • возможность автоматического апгрейда прошивки эмулятора;
  • поддерживается AVR Studio 4/5/6, WINAVR (GCC) и IAR;
  • поддержка файлов, генерированных ICCAVR, CVAVR, IAR;
  • поддержка отладки и программирования всех AVR и AVR32 МК с интерфейсами JTAG, PDI, DebugWIRE.

Возможности эмулятора позволяют:

  • просматривать внутреннее состояние микроконтроллера;
  • осуществлять высокоскоростную отладку;
  • программировать Flash, EEPROM, fuses, lockbits (не для DebugWire);
  • осуществлять низкоскоростное программирование через ISP или высокоскоростное – через JTAG.

Подключение к PC

  • До первого подключения к PC убедитесь, что  на компьютер установлен драйвер USB. При инсталляции такого ПО, как AVR Studio, установка драйвера происходит автоматически.  JTAGXPII может быть подключен к компьютеру с помощью кабеля USB или RS-232.
  • Каждый JTAGXPII имеет уникальный ID.
  • USB интерфейс: используется PDIUSBD12, USB 1.1.
  • RS232: используется девятиконтактный разъем. При использовании такого подключения необходимо убедиться, что Com-порт, к которому собираетесь подключить эмулятор, свободен.
  • На задней панели JTAGXPII расположены: разъемы питания (DC jack), USB, RS-232 и выключатель питания.

Подключение к целевой плате:

  • для отладки используются следующие интерфейсы (в зависимости от интерфейса целевой платы): JTAG, PDI, debugWIRE (SPI);
  • для программирования: JTAG, PDI, ISP (SPI);
  • необходимо применять кабель, соответствующий установленному на целевой плате разъему (интерфейсу).

Комплектация:

  1. USB  AVR JTAGICE XPII;
  2. кабель USB;
  3. кабель RS-232;
  4. запасной 10-пиновый кабель;
  5. адаптер 10-пин (JTAG) – 6-пин (SPI);
  6. адаптер 10-пин (JTAG) – 10-пин (SPI);
  7. десятипроводный многоцветный кабель;
  8. диск CD.

ATATMEL-ICE (MCRCH)от 13933,10 ₽ Склад (1-2 дн)

ATATMEL-ICE – мощный отладочный инструмент, предназначенный для программирования и отладки ARM Cortex-M и AVR микроконтроллеров от Atmel, поддерживающих возможность отладки

Источник: https://www.terraelectronica.ru/product/1266239

Программирование atmega16 через JTAG в Linux

JTAG — интерфейс, созданный для отладки и перепрограммирования. Существуют контроллеры JTAGICE mkII, но для ATmega128, ATmega16, ATmega162, ATmega165, ATmega169, ATmega16A, ATmega32, ATmega323, ATmega32A, ATmega64, ATmega64A достаточно JTAG ICE [1].
Подключение

При подключении “AVR JTAG ICE” (кстати, на нём тоже установлен Atmega16) он определяется как переходник на com-порт:

usb 2-1: new full speed USB device using uhci_hcd and address 3
usb 2-1: configuration #1 chosen from 1 choice
usbcore: registered new interface driver usbserial
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
usbserial: USB Serial support registered for FTDI USB Serial Device
ftdi_sio 2-1:1.0: FTDI USB Serial Device converter detected
ftdi_sio: Detected FT232RL
usb 2-1: FTDI USB Serial Device converter now attached to ttyUSB0
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver

Из текста видно, что устройство теперь видно как ttyUSB0, это мы будем использовать при прошивке.

Микроконтроллер к “AVR JTAG ICE” подключаем стандартно.

Программа будет в бесконечном цикле выдавать 0/1 на порты PB и PD5. Паузы делать с помощью цикла нехорошо, надо бы с помощью специальных задержек, но у меня они почему-то действуют как-то неравномерно, и я сделал циклами.

#define F_CPU 8000000UL // указываем частоту в герцах, для кварца 8 MHz
#include
//#include int main(void) { // начало основной программы
unsigned int i;
DDRB = 0xff; // все выводы порта B сконфигурировать как выходы
DDRD = 0xff; // все выводы порта D сконфигурировать как выходы while(1) { // бесконечный цикл PORTD |= _BV(PD1); // установить “1” (высокий уровень) на выводе PD1, зажечь светодиод PORTB = 0xff; // установить “1” на всех выводах порта PB // _delay_ms(250); // ждем 0.25 сек. for (i = 0; i < 20000; i++); // Делаем паузу PORTD &= ~_BV(PD1); // установить "0" (низкий уровень) на выводе PD1, погасить светодиод PORTB = 0x00; // установить "0" на всех выводах порта PB // _delay_ms(250); // ждем 0.25 сек. for (i = 0; i < 20000; i++); // Делаем паузу }; } // закрывающая скобка основной программы

Сохраняем её как test_atmega16.c.

Нам понадобятся: компилятор avr-gcc и библиотеки (avr-libc). Установим их:sudo apt-get install avr-libc gcc-avr

Скомпилируем нашу программу:

avr-gcc -mmcu=atmega16 -o test_atmega16.o test_atmega16.c

Получим исполняемый файл test_atmega16.o, который можно прописать в микроконтроллер.

P.S. Если хочется посмотреть результат в виде ассемблерного кода, запускаемavr-gcc -mmcu=atmega16 -S test_atmega16.cБудет сгенерирован файл test_atmega16.s

Установим avarice для прошивки через JTAG:

sudo apt-get install avarice

В начале стираем содержимое микроконтроллера, потом записываем нашу программу:

avarice -j /dev/ttyUSB0 -B 125KHz –erase
avarice -j /dev/ttyUSB0 -B 125KHz –file test_atmega16.o –program

Сразу после окончания записи программа должна сама запуститься на микроконтроллере.

___
http://xgu.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_atmega16_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_JTAG_%D0%B2_Linux

Источник: http://avr-prog.blogspot.com/2014/01/atmega16-jtag-linux.html

Сказка про Жытаг

Одна из главных проблем юного укротителя схем – как с этими схемами общаться. Эмулятор стоит денег (и не копеечных), самодельные программаторы требуют определенной степени фанатизьму.

Понятное дело, что если ты хочешь просто поразвлекаться и посмотреть – каково это, все эти схемотехнические штучки, то отсутствие легкого метода общения с кремниевым другом зачастую становится непреодолимой преградой для кухонного испытателя.

Но не будем о грустном.

Сегодня мы поговорим про внутрисхемный эмулятор JTAGICE2 (mkII), пришедший на замену большинству эмуляторов и программаторов Atmel. В своей микроэлектронной жизни этап «пять проводков в параллельный порт» мы никогда не проходили, зато накопили большой опыт по использованию (и ломанию, в том числе) этих эмуляторов как с семейством AVR, так и с AVR32.

<\p>

Т.к. большинство наших опытов и проектов творится под протекцией Мегакорпорации, финансовых проблем при покупке у нас не было. Но, тем не менее, небольшой мониторинг рынка при покупке проводился всегда. И показывал он – страшное… Например, в магазине комплектухи «Чип и Дип» наш сегодняшний герой стоит 20-25 тысяч.

А у официального (!) представителя Атмели («Эфо») устрашающее «по запросу» превратилось в что-то около 9 тысяч.

Но и это, кстати, не предел – хитрожопые страдальцы из КБ 14 где-то нашли один эмулятор еще дешевле… А незадолго до того, как нам понадобилось оборудование, Атмель проводила акцию, в которой за 150 долларов предлагался комплект из JTAGICE2 и отладочной платы STK500. Но, прощелкали…

В принципе, не очень-то и хотелось. Помнится, на заре юности Мегакорпорации (с) мы приобрели в подвальном магазинчике нечто китайское, впоследствии оказавшееся отладочной платой AVRDragon.

К сожалению, фоток того, как оно выглядело в упаковке, не сохранилось, но это было феерично. Раскрашенная народными китайскими узорами коробочка, хранившая в себе плату, больше была похожа на праздничный бумажный фонарик. Черная плата внутри – на сувенир.

Так оно, в общем-то, и оказалось – работать с комплектным драйвером азиатская штучка никак не захотела.

Запустилось оно только много позже, когда кто-то случайно подключил платку к компу, где стояла АВРСтудия и драйвер к JTAGICE2… Хотя в теории, конечно, штука должна была быть интересной и полезной, даже несмотря на ограниченное количество поддерживаемых контроллеров.

 

Китайские высокие технологии…

Как видно на картинке, плате не нужна ни инструкция, ни документация — вся необходимая информация нарисована прямо поверх площадок белой гуашью. Видимо, школа каллиграфии тоже входит в цикл высокотехнологичного производства )

Даже провалявшись в столе нашего г.к. больше года и пережив переезд, оно продолжает работать. Энерджайзер ниачом!

После такого шока, конечно, было решено приобретать только нормальные вещи, с тех пор и началось наше общение с AVR JTAGICE2.

Эмулятор приехал к нам в большой коробке и через пару дней героически погиб. На плату, к которой он был подключен, вместо штатных 5В врубили 27. С красивой вспышкой тогда померло два контроллера – один на платке, другой внутри эмулятора. Впрочем, в хозяйстве все пригодится – погорельца не выкинули, а храним на всякий случай, вдруг понадобятся запчасти.

Тельце погибшего…

Кстати, коробки у эмуляторов сильно разные – бывают обычные, а бывают красивые, как будто в них риальне конструктор «собери терминатора дома». Зависит от того, где покупать.

Коробки бывают для простого быдла, а бывают для ч0тких пацанчиков, любивших в детстве Лего

Содержимое коробки, естественно, во всех случаях одинаковое — сам эмулятор, диск с драйверами и всякий стафф: usb-провод, шнурок питания, переходник на SPI, переходник на debugWire, колодка для подключения к отладочным платам. Ну и всякие бумажки, которые вкладывают уже наши продавцы.
  

Шнурок питания — это типа копчика. Он требуется, когда эмулятор подключают к компу по последовательному интерфейсу. При обычном способе подключения, т.е. через usb, никакого дополнительного питания не надо. Кстати, последовательный кабель даже в комплекте не идет… Или идет, но был кем-то стремительно подбрит?..

Шлейф-хоботок, на конце которого болтается соединительная колодочка – самое слабое место Житага. У одного из наших эмуляторов колодка просто слетела со шлейфа.

Чинится это, конечно, легко, но все же стоит быть аккуратным и присоединять/отсоединять колодку нежно.

Да и сам шлейф довольно хрупкий – если эмулятор лежит на столе, то ничего, а если ездит в сумке по командировкам – легко перегнуть…

Ну, распаковали, повертели, повосхищались — переходим к работе…

Собственно, из трех интерфейсов, по которым позволяет отладку mkII (SPI, JTAG, DebugWire), нас всегда интересовал один — JTAG. С чахоточными контроллерами младших семейств работать не доводилось, а у плат на основе Мег как-то так повелось, что всегда хватало ножек и под JTAG. Это стоит учитывать при дальнейшем чтении.

В комплекте с эмулятором идет диск, откуда ставится стартовый набор – AVRStudio и в комплекте со студией драйвер для девайса. Драйвер, кстати, имеет подозрительное название – Jungo… Точно так же в Питере называется один китайский ресторанчик…

После установки можно подоткнуть эмулятор в usb и, если есть какой-нибудь целевой девайс, попытаться к нему приконнектиться. Делается это, если все хорошо, за два щелчка в AVRStudio, после чего mkII продемонстрирует часть своего богатого функционала.

Источник: http://dd13.ru/archives/650

Отладчик JTAG ICE :AVR devices

Иногда, программа зашитая в микроконтроллера работает совсем не так как надо её создателю. Тогда наступает стадия отладки (Отлаживать — избавлять программу от лажи 🙂 прим. автора) Кто-то использует для отладки USART, кто-то цепляет на свободную ногу мк светодиод, кто-то записывает отладочные данные в EEPROM итд. Одним словом вариантов тут масса.

Но самым удобным способом отладки на мой взгляд, является отладка с использованием специальных устройств называемых отладчиками. Отладчик позволят построчно исполнять программу зашитую в микроконтроллер, ставить точки останова. В процессе отладки программисту доступны все регистры микроконтроллера. Так же с помощью него можно прошить микроконтроллер и изменить фьюзы.

Представляю вашему вниманию отладчик JTAG ICE:

Житаг штука хорошая. Но есть один маленький минус. Контроллеры поддерживающие отладку через jtag,  это все контроллеры начиная с Atmega16 и старше. Для некоторых мк из семейства tiny существует отладочный интерфейс Debug Wire, но такой отладчик еще вроде-бы ни кто не делал самостоятельно. Схема отладчика состоит из двух частей:

  1. Схема согласования с ПК
  2. Непосредственно сам отладчик

При выборе первой части схемы всё зависит от того есть ли у тебя свободные COM или USB порты.  Поскольку COM порт у меня всего один  и находится далеко под столом, то я решил использовать usb порт используя для этого свой преобразователь интерфейса USB-UART. Для тех кто хочет использовать COM порт я тоже нарисовал схему.

В качестве преобразователя уровней там используется популярная микросхема MAX232. Главным минусов использования COM порта является отсутствие питания. В моем же варианте я беру 5 вольт прямо от USB порта,что очень удобно так как не болтается лишних проводов. Печатка разведена только под вторую часть схемы т.к.

 сам преобразователь usb-uart у меня уже был в наличии, и я просто соединил две платы проводками. Используемый корпус — G1068B.

Теперь немного технических нюансов.  Фьюзы  микроконтроллера нужно выставить следующим образом:

Вообще по идее отладчик должен обновляться из студии но я не стал заморачиваться по этому поводу и не зашивал загрузчик. Саму прошивку можно взять из папки AtmelAVR ToolsJTAGICEUpgrade.ebn

Но прошивка эта в хитроумном формате EBN а нам для прошивки нужен HEX. Помочь сконвертировать  прошивку в нужный формат сможет программа EbnToHex. Или же можно взять готовых HEX в конце  страницы.

Схема отладчика ниже:

Если планируется использовать интерфейс USB то нужно исключить из схемы все элементы находящиеся внутри прямоугольника. А выводы TxD и RxD микроконтроллера припаять к преобразователю интерфейса USB-UART (TxD контроллера к RxD преобразователя и RxD контроллера к TxD преобразователя). Так же не забываем объединять земли и питание. Жду отзывов и вопросов в комментариях.

Файлы:

Прошивка (уже в формате HEX)

Печатная плата

Первоисточник

Источник: http://avrdevices.ru/otladchik-jtag-ice/

При разработке и отладке программ под микроконтроллеры, возникают вопросы, связанные с  программированием и отладкой программы в реальной схеме.

Если с программированием микроконтроллеров AVR особых проблем не возникает, поскольку существует множество схем для «заливки» прошивки в кристалл, одной из простейших таких схем является схема получившая название «пять проводов», то с отладкой программы такого богатого выбора не существует.

Для отладки программы возможно использования только двух вариантов – это программный симулятор и внутрисхемный JTAG эмулятор-программатор.

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

С аппаратными программаторами-отладчиками JTAG появляется возможность пошаговой отладки программы напрямую в самом микроконтроллере установленном непосредственно в схему, просмотра и изменения всех регистров микроконтроллера, установка breakpoints и конечно же внутрисхемного программирования микроконтроллера. Но стоимость оригинального AVR JTAG ICE MkII выпускаемого Atmel колеблется в районе 300 евро, а его аналога AVRDRAGON выпускаемого серийно около 3000руб., что является очень дорогим для людей, занимающихся созданием устройств на микроконтроллерах AVR «для себя».

Но к счастью удалось создать клон, оригинального AVR JTAG ICE, который стоит существенно дешевле оригинала и позволяет проводить программирование и отладку микроконтроллеров AVR с интерфейсом JTAG.

Рис 1. Принципиальная электрическая схема клона AVR JTAG ICE

Принципиальная электрическая схема приведена на рис. 1. Основой данного JTAG служит микроконтроллер DD3 AVR ATMega16. Микросхема DD2 MAX232 выполняет роль преобразователя интерфейса RS232 в ТТЛ уровни UART. Микросхема DD1 предназначена для защиты входных и выходных цепей микроконтроллера DD3 и согласования напряжения логических уровней при использовании внешнего питания.

Питание JTAG может браться от цепей питания отлаживаемого устройства через четвертый контакт vTref XP3, а также может использоваться внешнее через разъем XP1 и ХР2. Внешнее напряжение может быть в диапазоне от 7 до 15В. При использовании внешнего источника питания, вывод vTref разъема XP3можно не подключать.

Светодиод HL2 отображает наличие питания, HL1 режим работы JTAG.

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

Рис 2. Схема подключения AVR JTAG ICE к отлаживаемому устройству

Существует несколько вариантов BootLoader загрузчиков для прошивки JTAG, но на мой взгляд наиболее удачный вариант получился у Кротевич Виталия (Vit).

Его загрузчик наиболее близко повторяет фирменный и позволяет обновлять микропрограмму JTAG непосредственно из AVRStudio без перезагрузки JTAG и входа в режим программирования через BootStart.

В случае если не планируется производить обновление прошивки JTAG`a , то загрузчик можно не прошивать, а «зашить» только оригинальную прошивку от AVRStudio.

Чтобы «зашить» bootloader в JTAG можно воспользоваться программатором AVReal, PonyProg, STK200, «пять проводов», любо любым другим имеющимся в наличии и совместимым с AVR ISP. Подключение программатора производится к ISP разъему программирования ХР4. Файл прошивки JTAG_ICE.hex.

Пример программирования фьюзов показан на рисунке 3.

Рис 3. Установка фьюзов для AVR JTAG ICE

Пример работы AVR JTAG ICE показан на рисунке 4. В качестве примера произведено считывание сигнатуры ATMega128

Рис 4. Чтение сигнатуры микроконтроллера ATMega128 с помощью AVR JTAG ICE

Рис 5. Изображение верхнего слоя трассировки печатной платы, с нанесенными элементами

Рис 6. Изображение нижнего слоя трассировки печатной платы, с нанесенными элементами

Фотографии готового устройства:

P.S. Схема и трассировка печатной платы разработаны автором статьи, загрузчик использован Кротевич Виталия (ака Vit), прошивка от оригинальной AVRStudio.

При написании статьи использовались следующие источники:

1 http://onembedding.bialix.com/files/jtag_vit/

2. Официальное руководство пользователя AVR JTAG ICE JTAGuserguide.pdf

Скачать прошивку, файлы печатных плат

Источник: http://shemopedia.ru/klon-avr-jtag-ice.html

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}