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

1 Описание

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

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

    ATmega16;
    ATmega162;
    ATmega169;
    ATmega32;
    ATMega323;
    ATMega64;
    ATmega128.

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

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

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

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

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

Рисунок 2 Внешний вид платы

Подключение

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

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

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

При запуске AVR Studio автоматически ищет поддерживаемые им устройства, обращаясь по порядку ко всем COM портам компьютера. Поиск прекратится, как только будет найдено поддерживаемое устройство. Например, если к COM1 подключен AVR Prog, а к COM2 AVR JTAG, то AVR Studio обнаружит только AVR Prog. Поэтому при запуске AVR Studio убедитесь, что остальные поддерживаемые им устройства отключены или после запуска AVR Studio вручную задайте порт, к которому подключен AVR JTAG.

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

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

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

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


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

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

AVR JTAG получает питание от внешнего источника питания (входит в комплект поставки) постоянного или переменного тока. Для подключения источника к AVR JTAG используется гнездо под штекер 2.5 мм. Полярность источника постоянного тока не имеет значения.

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

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

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

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

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

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

  1. нажмите кнопку "Ok" в диалоге AVR Studio;
  2. в появившемся диалоге AVR Prog нажмите кнопку "Program";

Обновление ПО AVR JTAG завершено.

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

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

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

  1. выключите питание AVR JTAG;
  2. снимите перемычку на плате AVR JTAG;
  3. включите питание AVR JTAG;
  4. запустите программу AVR Prog;
  5. выберите для программирования файл с расширением.EBN из папки JTAGICE, находящейся в папке, в которую установлен AVR Studio;
  6. нажмите кнопку "Program";
  7. после завершения прошивки firmware закройте окно AVR Prog;
  8. установите перемычку на плате AVR JTAG;
  9. выключите и включите питание AVR JTAG.

ручное обновление ПО AVR JTAG завершено.

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

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

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

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

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

С статье подробно, начиная с процесса поиска информации рассказывается, о возникновении моей схемотехнической версии популярного программатора 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$. Однако...

DV164045 - высокоскоростной и экономически эффективный инструмент для внутрисхемного программирования и отладки микроконтроллеров PIC и цифровых сигнальных контроллеров dsPIC от компании Microchip. Высокая скорость работы обеспечивается за счет применения в изделии 300 МГц 32-битного MCU с 2 МБ RAM и высокоскоростной ПЛИС FPGA, которая обеспечивает более скоростные коммуникации, загрузки и отладку по сравнению с предыдущими версиями устройства. Процесс отладки и программирования осуществляется с применением мощного, но простого в использовании графического интерфейса интегрированной среды разработки IDE MPLAB X. MPLAB ICD4 подключается к вашему ПК через USB 2.0 HS интерфейс и к отладочному разъему целевой платы, который также совместим с внутрисхемными эмуляторами MPLAB ICD3 и MPLAB REAL ICE™. Кроме того, MPLAB ICD4 может работать с интерфейсом JTAG.

В настоящее время программатор/ отладчик MPLAB 4 поддерживает многие, но не все PIC и dsPIC. Прошивка постоянно обновляется для расширения списка поддерживаемых микроконтроллеров. Адрес для запроса поддержки приоритетных чипов или для сообщения о возникших проблемах: [email protected] .

Если у вас инсталлирована IDE MPLAB X, вы сможете найти список поддерживаемых микросхем в папке «docs» инсталляционной директории. Имя файла “Device Support.htm”. Кроме того, список можно скачать по ссылке http://www.microchip.com/mplabx-ide-release-notes .

Рис. Внутрисхемный программатор/ отладчик DV164045

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

  • Полноскоростная эмуляция в режиме реального времени:
    • Изделие разработано для поддержки высокоскоростных процессоров, работающих на максимальных скоростях
    • Отладка приложений на вашей плате в режиме реального времени
  • Надежный интерфейс:
    • Добавлена защита цепей драйверов отладчика, чтобы обезопасить их от скачков питания на целевой плате
    • Мониторинг VDD и VPP с целью защиты от перенапряжения. Все линии защищены от перегрузки по току
    • Безопасное питание до 1 A с дополнительным источником питания
  • Microchip Standard Connectivity Plus JTAG:
    • Поставляется со стандартным отладочным разъемом Microchip. Имеется возможность использования JTAG
  • Совместимость:
    • Поддерживает все MPLAB ICD 3 разъемы
  • Портативное устройство с питанием от USB; соответствие RoHS:
    • Плата размещена в прочном черном корпусе с матовой алюминиевой крышкой и линейкой светодиодов для индикации статуса отладки
    • Питание от USB порта, не требуется внешний источник питания
    • CE- и RoHS-соответствие
  • Широкий диапазон напряжений эмуляции:
    • Поддерживает целевые напряжения от 20 В до 5.5 В
  • Высокоскоростное программирование:
    • Быстрая перезагрузка прошивки для быстрой отладки/внутрисхемного перепрограммирования
    • Включает программируемую настройку скорости отладки для оптимизации программирования
  • Тестовый интерфейсный модуль:
    • Включает модуль обратной связи для тестирования отладочного порта и кабеля
  • Простота обслуживания и обновления функций:
    • Добавьте поддержку новых микросхем и функций, инсталлируя позднейшую версию MPLAB X IDE, которая доступна для бесплатной загрузки на www.microchip.com/mplabx
    • Обновление прошивки через MPLAB X IDE
  • Экономическая эффективность:
    • Особенности и эксплуатационные характеристики на уровне стоимости сопоставимых эмуляционных систем
  • Мощная отладка:
    • Мощная отладка с MPLAB X IDE
    • Поддержка нескольких точек останова, секундомера и отладки исходного кода
    • Опция выбора подтяжки для целевого интерфейса в редакторе MPLAB X IDE для быстрой программной модификации/ отладки
  • Требования к системе:
    • MPLAB X IDE ver. 4.00 или выше
    • Доступный USB порт
    • Microsoft Windows ® 7 или выше, Mac OSX ® и Linux ®