Схема подключения jtag ice atmega8. Внутрисхемная отладка AVR через 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 , то загрузчик можно не прошивать, а «зашить» только оригинальную прошивку от .

Чтобы «зашить» 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

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

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
DD1 ИС буфера, драйвера

CD74AC244

1 В блокнот
DD2 ИС RS-232 интерфейса

MAX232

1 ST232BD В блокнот
DD3 МК AVR 8-бит

ATmega16

1 ATmega16-16PI В блокнот
DA1 Линейный регулятор

LM78L05

1 В блокнот
VD1, VD2 Выпрямительный диод

SM4007PL

2 В блокнот
VD3 Стабилитрон

BZX55C5V1

1 SMBJ5.0A В блокнот
VD4, VD5 Диод Шоттки

SM5819PL

2 В блокнот
HL1, HL2 Светодиод КР-3216-2 2 В блокнот
C1, C2, C4-C6, C9-C13, C16 Конденсатор 0.1 мкФ 10 В блокнот
C3 1 В блокнот
C7 Электролитический конденсатор 470 мкФ 10 В 1 Танталовый В блокнот
C8 Конденсатор 1200 пФ 1 В блокнот
C14, C15 Конденсатор 22 пФ 2 В блокнот
R1 Резистор

36 кОм

1 В блокнот
R2 Резистор

150 кОм

1 В блокнот
R3-R6 Резистор

10 кОм

4 В блокнот
R4, R10 Резистор

4.7 кОм

2 В блокнот
R9, R11-R15 Резистор

200 Ом

7 В блокнот
R16 Резистор

С статье подробно, начиная с процесса поиска информации рассказывается, о возникновении моей схемотехнической версии популярного программатора AVR JTAG ICE (mk!!). Данный программатор интересен тем, что для AVR-микроконтроллёров, имеющий встроенный JTAG. может производить отладку "на кристалле", чего не позволяют программаторы с универсальным для AVR интерфейсом ISP.

Захотел я сделать себе отладчик для 8-ми битных AVR контролеров серии ATMega16A/32A/64A/128/256. К сожалению имеющиеся у меня программаторы умеют прошивать микроконтроллер через низковольтный ISP интерфейс, но не умеют проводить отладку. Это же касается покупного - самого первого в моей коллекции - программатора от магазина ekits.ru . Поэтому поискав немного по интернету решил собрать себе JTAG программатор.

Итак, начнем поиск информации в интернете. Так как какую-то часть материалов я уже просмотрел в сети, то сейчас буду просто давать ссылки с кратким описанием..

У EagleCAD есть и полуофициальный сайт eaglecad.ru и там тоже есть учебник,но похоже поддерживается он энтузиастом и не слишком тщательно Также можно не лишним будет почитать пару статей сс сайта chipenable.ru :

  • EagleCAD. Создание электронной схемы .
  • EagleCAD. Создание компонента. Часть 1 .
  • EagleCAD. Создание компонента. Часть 2 .

Продолжим поиск по рунету.

  • Про встраиваемые системы", к сожалению прекративший свое развитие в 2006, содержит статью "JTAG для AVR ". Хотя информация и устаревшая, но кое какие решения в части "транзисторно-диодной" обвязки почерпнуть из материалов можно.
  • Просто шикарный обвес хоть и в другом программаторе. Пример для подражания. Без шуток. См. .
  • Известный и уважаемый ресурс - сайт "Паяльник " порадовал очень и очень хорошей статьей по тематике: "Клон AVR JTAG ICE " и этот клон довольно сильно отличается от того, что я рассматривал раньше. Ядро-то у него тоже самое - микроконтроллер Mega16A, а вот обвязка уже гораздо внушительнее. Да бы не нарушать ни чьих авторских прав, позаимствую ссылку на картинку.

Плата у авторов получилась 48 на 40,6 мм, что впечатляет. Правда авторам для этого пришлось монтировать компоненты на обе стороны платы. Что же. Я тоже так делал, когда хотел сэкономить:). Ну да начну разбор этой весьма насыщенной и грамотной схемы. С моей дилетантской точки зрения, разумеется.

  1. Независимый источник питания на линейном стабилизаторе. Буду я ставить дополнительный источник питания? USB порт только по стандарту должен питать устройства с током потребления до 500 мА. По факту современные USB- порты еще мощнее. Программировать какие-либо процессоры напряжениями более 5 В этот тип программатора не позволяет. Резюме: мне дополнительный источник питания не нужен.
  2. Использование буферной микросхемы 74FC244. Однозначно "да". Буферную микросхему введу. И размещу, если получится, на обратной стороне:).
  3. Ножки с 19 по 22 (родной JTAG МК) подтянуты к земле через резисторы 10к. У меня, как и во всех ранее рассмотренных схемах, висят. Решение: сделаю так же. В крайнем случае резисторы 0805 много места не занимают (а можно и 0603 в проект внести) и их можно просто не запаивать. Вообще я часто на платах вижу не запаянные компоненты. И считаю, что это нормально. Резерв который можно использовать, а можно оставить или заменить на перемычку.
  4. Очень трепетно "обвешены" порты питания МК. Но у меня это уже предусмотрено:).
  5. В выходных цепях использованы резисторы по 200 и 220 Ом. В предыдущих схемах по 100 Ом. Я же планировал использовать более "знакомые" мне 68 Ом... Подумаю-попробую.
  6. JTAG выводов на два больше. Дополнительно выведены сигналы VTRef и Vsup - питание целевой платы. У меня не будет отличного от 5 вольт питания.
  7. Защитный стабилитрон на питании МК - у меня предусмотрен.

(Позднее прим. Ни контактных площадок, ни перемычек, заземляющих выход enable в разводке платы я не предусмотрел. Поэтому если когда-нибудь все же возникнет желание подробно разобраться в ньансах програмной реализации протокола и подключить управление выводами буферной схемы, то придется вносить изменения. Не думаю, что это будет скоро.)

Рисуем схему по пути сразу вставляя какие-то бродящие в голове идеи.

Вариант разведения дорожек получился у меня таким (выводные компоненты: USB-B, кварцевый резонатор, штырьки, - выведены на одну сторону, разведение платы на второй стороне):

3D-модель приближенно должна выглядеть так:

В настоящий момент у меня нет в наличии ни Mega16A, ни "экзотического" кварца на 7,3728 МГц. Поэтому практическая проверка схемы пока откладывается. Как только появятся компоненты - статья будет продолжена.

Итак, заказанные компоненты наконец-то доставлены и у меня нашлось время заняться своим хобби. Внешний вид собранной платы моего клона выглядит так:

Вид сверху

Вид снизу. По отношению к синтезированной в SketchUp фактическая плата получилась визуально инвертированной - верх и низ поменялись местами. По крайней мере так можно судить по асимметрично расположенному модулю СР2102.

Нашел ссылку на коммерческую реализацию данного программатора. Просят больше 35$. Однако...

Не знаю как вы, но я считаю программатор расходником при разработке устройств. За 1.5 года в общий сложности у нас сгорело 3 программатора. К великому удивлению JTAG отладчики для AVR стоят дорого. Причем не совсем понятно за что производитель хочет почти 100 баксов. В итоге сделал несколько самодельных отладчиков, заказал их на промышленное изготовление и теперь пользуюсь ими.

Схему разводил сам по шаблонам из сети, коих множество. Но схема не уместилась в один слой, поэтому имеет смысл развести еще раз, если вы будете делать ее ЛУТом в один слой, то понадобится 4 проводка.

Теперь о вопросе прошивки, AVR Studio имеет в своем составе возможность прошивки через бутлодер. Фирменные программаторы имеют на борту бутлодер для возможности обновления прошивки. Но мы прошьем контроллер сразу прошивкой без использования бутлодера, поэтому сначала вам понадобится внутрисхемный программатор или другой отладчик. Микроконтроллер требуется при этом прошивать на другой плате, так как на этой нет ISP разъема, но в данном случае, это не особо накладно. Файл прошивки miniIce.hex внутри проекта.

Принципиальная схема:

1 Описание

USB AVR JTAG представляет собой инструмент для отладки устройств, выполненных на основе микроконтроллеров семейства AVR фирмы Atmel. AVR JTAG является полным аналогом AVR JTAG ICE фирмы Atmel, дополненным интерфейсом USB. Для получения дополнительных сведений о работе AVR Studio с AVR JTAG может использоваться документация от Atmel.

Для работы с AVR JTAG используется программа AVR Studio от Atmel. AVR JTAG поддерживает все микроконтроллеры семейства, имеющие интерфейс JTAG, в диапазоне питающих напряжений 2.5-6 В:

  • ATmega16;
  • ATmega162;
  • ATmega169;
  • ATmega32;
  • ATMega323;
  • Atmega64;
  • ATmega128.

Поддержка новых устройств осуществляется за счет обновления встроенного ПО AVR JTAG, которое поставляется в составе AVR Studio.

Рисунок 1 Расположение соединителей и индикаторов на плате AVR JTAG

2 Комплект поставки

В комплект поставки USB AVR JTAG входят:

  • плата USB AVR JTAG;
  • кабель для подключения USB AVR JTAG к компьютеру;
  • кабель для подключения USB AVR JTAG к отлаживаемому устройству;
  • компакт-диск с ПО и справочной информацией.

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

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

3.1Подключение к компьютеру

USB AVR JTAG подключается к стандартному USB порту компьютера. Для подключения используется стандартный USB кабель (входит в комплект поставки).

3.2 Подключение к отлаживаемому устройству

Для подключения к отлаживаемому устройству используются 6 линий: TCK, TDO, TDI, TMS, VTref и GND, подключение этих линий необходимо для правильной работы AVR JTAG с отлаживаемым устройством.

Дополнительно к отлаживаемому устройству может быть подключена линия nSRST (используется для управления и наблюдения за линией сброса микроконтроллера). Использование этого сигнала не является необходимым для отладки, однако, если программа микроконтроллера установит бит JTD в регистре MCUCSR, то интерфейс JTAG будет отключен и для его включения потребуется, чтобы USB AVR JTAG мог управлять линией сброса микроконтроллера.

3.3 Подключение питания


Рисунок 3 Подключение AVR JTAG к отлаживаемому устройству

USB AVR JTAG получает питание от USB либо внешнего источника питания постоянного или переменного тока.

При питании USB AVR JTAG от USB существует одна проблема:

  • При измерениях целевого напряжения возможна погрешность (до 0.5 В в зависимости от построения выходных драйверов материнской платы).

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

Выбор источника питания осуществляется перемычкой “питание”.

Для подключения источника к USB AVR JTAG используется гнездо под штекер D 2.1 мм.

Полярность источника постоянного тока не имеет значения.

Для того чтобы AVR Studio обнаружило AVR JTAG необходимо, чтобы питание USB AVR JTAG и отлаживаемого устройства было включено до начала отладки (кнопкой Start Debugging AVR Studio).

Как источник питания пригоден любой нестабилизированный источник 6-9 В, либо стабилизированный 9-12 В.

  • включите питание отлаживаемого устройства;
  • запустите AVR Studio.

4 Обновление ПО

Обновление встроенного ПО USB AVR JTAG может быть проведено либо автоматически, либо вручную.

4.1 Автоматическое обновление

Автоматическое обновление происходит в том случае, если AVR Studio обнаружит, что версия встроенного ПО (firmware), входящего в состав AVR Studio, больше версии firmware USB AVR JTAG. В этом случае AVR Studio выдает соответствующее сообщение и предлагает выполнить обновление firmware. Если пользователь соглашается выполнить обновление ПО, то AVR Studio выдает диалог с инструкциями по обновлению ПО. Для обновления ПО выполните следующие действия:

  • снимите перемычку ”upgrade” на плате USB AVR JTAG;
  • нажмите кнопку "Ok" в диалоге AVR Studio;
  • в появившемся диалоге AVR Prog нажмите кнопку "Program";
  • Обновление ПО USB AVR JTAG завершено.

4.2 Ручное обновление

Ручное обновление ПО USB AVR JTAG может оказаться необходимым, если автоматическое обновление ПО было прервано по каким-либо причинам (сбой питания и т.п.). В этом случае AVR Studio не сможет обнаружить USB AVR JTAG, выяснить версию его ПО и начать автоматическое обновление ПО.

Чтобы выполнить ручное обновление ПО:

  • выключите питание USB AVR JTAG;
  • снимите перемычку”upgrade” на плате USB AVR JTAG;
  • включите питание USB AVR JTAG (в случае использования внешнего источника питания);
  • запустите программу AVR Prog;
  • выберите для программирования файл с расширением.EBN из папки JTAGICE, находящейся в папке, в которую установлен AVR Studio;
  • нажмите кнопку "Program";
  • после завершения прошивки firmware закройте окно AVR Prog;
  • установите перемычку”upgrade” на плате USB AVR JTAG;
  • выключите и включите питание USB AVR JTAG.
  • ручное обновление ПО USB AVR JTAG завершено.

5 Технические характеристики



При разработке и отладке программ под микроконтроллеры, возникают вопросы, связанные с программированием и отладкой программы в реальной схеме. Если с программированием микроконтроллеров 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.

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

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

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