Схема подключения jtag ice atmega8. Внутрисхемный эмулятор

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

AVR Studio поддерживает JTAG ICE, умеет зашивать в него обновления firmware. Этим мы и воспользуемся. Конечно, на коленке собрать это устройство затруднительно, довольно много деталюшек, но если Вы собираетесь писать программы посложнее, чем «Hello Word», то внутрисхемник быстро становится предметом первой необходимости.

Поддерживаемые устройства.

ATmega16(L), ATmega162(L), ATmega169(L or V), ATmega32(L), ATmega323(L), ATmega64(L), ATmega128(L).

По мере выхода новых версий firmware этот список расширяется. Проверить его можно на сайте www.atmel.com .

Возможности

  • Полностью совместим с AVR Studio
  • Поддерживает все устройства AVR с интерфейсом JTAG
  • Эмулирует все цифровые и аналоговые функции, реализованные на кристалле
  • Точки останова, в том числе по изменению значения переменных
  • Точки останова в памяти программ и данных
  • Интерфейс программатора для flash, eeprom, fuses and lock-bits.
  • USB интерфейс с компьютером (виртуальный COM-порт)
  • Питание устройства JTAG ICE от USB
  • Напряжение питания отлаживаемого устройства от 1.8 до 6 вольт

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

Выводы AVR, используемые для JTAG интерфейса, могут быть использованы в схеме как выводы общего назначения. Следует предусматривать возможность подключения эмулятора, т.е. исключить возможные конфликты оборудования «выход на выход», и учитывать эти особенности конкретной реализации схемы при отладке программы.

Это - схема подключения кабеля отладчика к устройству. SRST можно и не использовать.

Connecting JTAG ICE to STK500 with an ATmega323 or an ATmega16

Индикация

На устройстве стоят аж пять светодиодов. Назначение их следующее:

  • VD1, VD2 - индикация обмена с PC
  • VD3 - индикация питания отлаживаемого устройства
  • VD4 - питание JTAG ICE с USB порта
  • VD5 - обмен с устройством через JTAG

Реализация.

Схема, печатная плата, прошивка для U1 - приводятся в приложении . Формат - как обычно, PCAD-2002 ASCII. Есть функциональное отличие от фирменной реализации - введен преобразователь USB->COM. Вообще-то документация не рекомендует такого подключения, но я его пользовал несколько лет, и не видел дополнительных глюков, кроме обычных. AT90S2313 (U1) уже снята с производства, но ее можно заменить AtTiny2313, не забыв запрограммировать нужные фузы, чтобы обеспечить совместимость. Собственно, она нужна только для программирования D2 (AtMega16), как это сделать - читайте HELP на AVR Studio, раздел «JTAG ICE Manual Firmware Upgrade». Возможно, при программировании U1 возникнут проблемы, тогда стоит замкнуть на землю вход RESET D2, а может быть и отсоединить его вывод MISO, чтобы не мешал. В любом случае, это одноразовое мероприятие.

Заключение.

Итак, собираем плату, программируем U1 программатором через разъем XP1, затем подключаем всё это к USB, ставим драйвера от FTDIchip (скачиваем распоследние драйвера виртуального COM-порта с www.ftdichip.com). Программируем D2. Подключаем всё это безобразие к отлаживаемому устройству. Радуемся, ликуем, плюем в сторону недоброжелателей J

Всем пацакам надеть намордники! И радоваться!

(Кин-цза-цза)


Принципиальная схема внутрисхемного эмулятора JTAG ICE

Размещение элементов на печатной плате эмулятора

Плата печатная - вид со стороны компонентов (Comp)

Плата печатная - вид со стороны пайки (Solder)

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

Чем является JTAG-программатор?

Он представляет собой упрощенный вариант профессионального AVR JTAG ICE, который, как можно догадаться по его названию, предназначен для программирования микроконтроллеров семейства AVR. Его главное отличие в том, что собрать его может даже непрофессионал, и конечная стоимость будет многократно ниже, чем при покупке заводского. По сути, представленный в статье механизм - китайская реплика, поэтому этот программатор AVR ещё и можно купить. Поэтому не кривя душой можно сказать, что существует ещё и вариант покупки. Но сборка своими руками позволит избежать возможных негативных последствий вследствие дешевизны и низкого качества покупаемых деталей при производстве.

Почему выбирают именно программатор JTAG?

Главное - его низкая стоимость и лёгкость в сборке. JTAG-программатор может программировать все устройства, имеющие интерфейс JTAG. Для работы через компьютер необходима среда разработки AVR Studio 4-й или больше версии. С ними этот программатор AVR сможет работать.

Недостатки программатора

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

Схема

Схема программатора простая, для работы необходима ATMega16 и немного дополнительной электроники. В качестве интерфейса может быть использовано MAX232 (для работы с COM) и FT232RL (для работы с USB). Стоит оговориться, что при использовании второго варианта подключать питание через USB не рекомендуют. В таких случаях из-за ошибки или недосмотра могут получить напряжение защитные диоды, и на выводах FT232RL будет Это чревато выходом из строя или программатора, или объекта программирования. Решается этот нюанс подачей питания через плату.

Для большей простоты тем, кто не имеет достаточной квалификации, программатор рассчитан на MAX232, но для другого варианта требуется только установить другой разъем.

Настройка

Учитывая, что есть необходимые схемы, следует только вытравить плату. Далее всё аккуратно подсоединяется, припаивается на места, и проверяется работа программатора путём прошивки загрузчика. Затем следует с AVR Studio обновить прошивку для JTAG-программатора до последней версии или до тех пор, пока надо. К адаптеру подключается программатор. Если он работает - значит можно переходить к следующему разделу, в котором обрисованы нюансы работы и программирования. Следует учесть, что все необходимые провода есть, они только нестандартно расположены.

В качестве подготовки к работе следует выставить Fuse биты. Они зависят от нотации, в которой производится работа. Для лучшего понимания представляем вот такую таблицу:

Прямая нотация (Даташит, UniProf)

Инверсная нотация (AVR DUDE GUI, PonyProg)

А как понять, какую выбрать? Ответ на вопрос прост: следует подключиться к микроконтроллеру и начать читать эти самые биты. Обратите внимание на SPIEN - если есть галочка напротив него, то это значит, что нотация инверсная. Если её нет - значит, она прямая. Если всё было сделано правильно, то программатор готов, чтобы прошивать микроконтроллеры. Но если он в последующем не сможет сделать прошивку - перечитайте и проверьте всё ещё раз.

Работа с программатором

Для большей понятливости будет приведён пример программирования мигания светодиодов. Первоначально следует запустить студию и создать новый проект. Затем выбрать язык программирования (в данном случае ассемблер) и задать имя проекта. Программа сама сможет определить, что вы используете JTAG-программатор. В качестве платформы следует выбрать его, а в окошечке рядом - программируемый им микроконтроллер. Далее всё довольно обычно - следует только вбить текст для программы. Чтобы читатели могли проверить работоспособность, предлагаем опробовать JTAG-программатор указанным в статье кодом. Можно увидеть, что диоды начали мигать очень быстро, что неудивительно, ведь здесь не предусмотрена задержка. Итак, программатор, инструкция его создания и использования есть. Вам остаётся только воплотить полёт своей фантазии.

Немного о практике. Для проверки подключите к порту А 3 светодиода. Затем к плате подключается: четыре провода интерфейса (TCK, TDI, TMS, TDO) и 2 силовых Vcc идут на плюс, а GND подключается к земле. Всё, питание есть, можно идти дальше. В студии необходимо провести компиляцию кода и его запуск. Проект быстро скомпилируется, тут же будет прошит и начнёт работать. Чтобы следить за процессом исполнения, можно нажать F11, и тогда можно наблюдать, на каком ряду кода сейчас программа. Для этого достаточно поднести курсор к ряду, который включает светодиод, и он загорится. Существует ещё много экспериментов. Помните, что для того чтобы что-то сделать, необходимо работать. Пускай продвижение будет медленным, но со временем вы сможете получить именно то, что хотите, главное - не опускать руки и продолжать экспериментирование с упором на теоретическую базу (без неё никак).

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 Технические характеристики

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

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

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

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

Loading...Loading...