Инструкция по использованию jtag программатора. Что такое JTAG-программатор? Чем является JTAG-программатор

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

Из набора "горячо любимых" Arduino-контроллеров к первой категории относятся ATmega8 , ATmega168 , ATmega328P . Но и во второй категории тоже присутствует один экземпляр: ATmega2560 , используемый в Arduino/Freeduino MEGA 2560 .

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

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

Фирменное устройство от 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 не воткнешь, поэтому я использую самостоятельно изготовленный переходник :

В классическом варианте линий 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, но проверить это нет возможности:(

2019-10-11 Дата последнего обновления программы: 2019-10-11

Двуликий Янус

Мы решили назвать этот программатор "Янус ".

Почему так? Потому что в римской мифологии Янус - это двуликий бог дверей, входов и выходов, а также начала и конца. Какая связь? Почему наш программатор ChipStar-Janus двуликий ?

А вот почему:

  • C одной стороны , этот программатор - простой. Распространяется как бесплатный проект , его можно легко изготовить самому .
  • C другой стороны , он разработан фирмой, длительное время профессионально занимающейся разработкой и производством различной радиоэлектронной аппаратуры, в том числе программаторами.
  • C одной стороны , этот программатор - простой, с первого взгляда имеет не сильно впечатляющие характеристики.
  • C другой стороны , работает совместно с профессиональной программой (кстати, точно такой же, как и остальные профессиональные программаторы ChipStar).
  • C одной стороны , мы предлагаем этот программатор для свободной бесплатной сборки.
  • C одной стороны , мы его продаем и в готовом виде, как обычный бюджетный продукт.
  • C одной стороны , на самодельный программатор не распространяется гарантия (что естественно).
  • C одной стороны , если вы его смогли собрать, то и отремонтировать сможете, да и программатор настолько простой, что ломаться, собственно, нечему.
  • C одной стороны , это простой внутрисхемный программатор.
  • C одной стороны , через простые адаптеры расширения он поддерживает программирование NAND FLASH и других микросхем уже "в панельке".

Таким образом, программатор ChipStar-Janus для многих специалистов может стать настоящим выходом в ситуации, когда разных простых или любительских программаторов уже недостаточно, а более сложный программатор кажется избыточным или на него не хватает выделенного бюджета.

Что нас побудило разработать этот программатор.

Есть великое множество простых специализированных программаторов, пригодных для самостоятельного изготовления .

Есть множество дешевых китайских программаторов в уже готовом виде.

Есть немало любительских разработок , часто по качеству превосходящих последние.

Казалось бы, в чем смысл очередной поделки?

Мы длительное время занимаемся разработкой производством и поддержкой универсальных программаторов , в основном назначения. У нас богатый опыт работы с самыми разными микросхемами. Часто к нам обращаются люди уже собравшие, а часто и купившие, какой-нибудь из выше названных "изделий". Нашим специалистам часто без смеха/слез/ужаса (нужное подчеркнуть) невозможно смотреть на схемные решения, качество сборки и, особенно, на программное обеспечение этих приборов. Ладно когда программатор стоит "три копейки", купил, что-то работает, что-то не работает, зато деньги не большие. Но часто соотношение цена/возможности таких приборов у нас вызывают, мягко говоря, удивление. Хочется воскликнуть: это столько не стоит!

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

Итак, программатор ChipStar-Janus в начальной конфигурации - это внутрисхемный программатор. В таком режиме он поддерживает микроконтроллеры PIC и AVR фирмы Microchip , некоторые микроконтроллеры архитектуры MCS51 , микроконтроллеры фирмы STMicroelectronics и еще ряд других, а также микросхемы последовательной памяти с интерфейсом I2C (в основном серия 24 ). К разъему расширения программатора можно подключить простейшие адаптеры и начать программировать микросхемы памяти "в панельке".

Сейчас реализовано программирование "в панельке":

  1. EPROM ) с интерфейсом I2C (серия 24xx );
  2. микросхемы последовательной флэш памяти (Serial FLASH ) с интерфейсом SPI (SPI Flash );
  3. микросхемы последовательной памяти (Serial EPROM ) с интерфейсом MW (серия 93xx );
  4. микросхемы NAND FLASH ;

Программатор и программное обеспечение поддерживает технологию самостоятельного добавления микросхем в три клика. Пока реализовано добавление микросхем NAND и I2C . В самое ближайшее время планируется реализовать эту технологию для микросхем MW (серия 93xx ) и AVR . Таким образом, вы получаете не просто программатор, а мощный инструмент для самостоятельной работы .

Три способа получить программатор ChipStar-Janus

1-й способ:
Собрать программатор самому полностью

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

Алгоритм действий:

2-й способ:
Собрать программатор самому, купив готовую печатную плату и прошитый микроконтроллер

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

Алгоритм действий:

  1. Прочитать условия использования самостоятельно собираемого программатора.
  2. Прочитать инструкцию по сборке программатора.
  3. Скачать полную документацию на программатор.
  4. Купить набор для сборки (готовую печатную плату и микроконтроллер с уже записанной прошивкой).
  5. Закупить необходимую комплектацию для сборки программатора согласно

Еще одним несложным, в плане изготовления, является COM программатор. При условии использования альтернативного режима COM порта Bitbang, отпадает необходимость в преобразовании интерфейса RS232 COM порта в SPI, необходимый для программирования. Остается только привести уровни сигналов COM порта (-12В, +12В) к необходимым (0, +5В). Это и делает
схема COM программатора для AVR микроконтроллеров:

Данная схема программатора достаточно распространена и известна как программатор Громова. Название пошло от автора программы Геннадия Громова, который и предложил такую схему.

Чтобы собрать программатор Громова нам нужно следующее:

Диоды КД522, КД510, 1N4148 или им подобные. Резисторы можно использовать любые, какие найдете. В качестве шлейфа можно использовать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компа — именно их я и взял) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Собрать COM программатор не составит труда:

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

Для того чтобы наш COM программатор заработал нужна , к которой мы подключим программатор и для микроконтроллера.

— Так как режим Bitbang нестандартный для COM порта компьютера, то возможны сбои в работе (хотя у меня такого не было). Особенно это касается ноутбуков. Как вариант решения этой проблемы можно рекомендовать «поиграться» настройками COM порта (скорость, биты данных, варианты управления потоком, величины буфера …).
— Отдельный разъем для «земли» желательно подключить первым, чтобы уравнять потенциалы «земли» программируемого устройства и компьютера. Для тех, кто не знает, если у Вас компьютер включен в обычную розетку, без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В.

Заключение:

— COM программатор Громова простой и надежный. Я не перестал пользоваться им даже собрав USB программатор (если какой либо микроконтроллер перестает программироваться USB программатором я обязательно перепроверю его на программаторе Громова).
— Так как программатор Громова собран на пассивных элементах он не требует для себя питания. Мало того, из-за паразитного питания, микроконтроллер можно запрограммировать вообще не подключая к нему источника питания! Хотя так программировать я не рекомендую, но сам факт интересен.
— Для пользователей Algorithm Builder есть приятный бонус! Этот программатор можно использовать для внутрисхемной отладки кристалла (программный JTAG).

JTAG программатор (жарг.) - программатор работающий с микросхемой через JTAG интерфейс.
JTAG (Joint Test Action Group) - специализированный отладочный интерфейс, стандарт IEEE 1149.1.
При буквальном понимании - JTAG программатор, это устройство, которое можно отнести к одному из следующих типов:

  • Специализированные JTAG программаторы, создаваемые для программирования и тестирования при серийном производстве. Такие JTAG программаторы удобны тем, что за 1 проход они позволяют и запрограммировать микросхему непосредственно в устройстве пользователя, и при необходимости протестировать работоспособность устройства;
  • Специализированные отладчики, совмещающие функции JTAG эмулятора и JTAG программатора. При этом, и эмулятор и программатор используют JTAG порт обслуживаемой микросхемы. Например, JEM-ARM (JTAG эмулятор программатор), использует все возможности JTAG протокола, и обеспечивает не только программирование, но и полноценную отладку микроконтроллеров семейства ARM, Cortex. ;
  • Универсальные программаторы, которые наряду с поддержкой параллельного режима программирования, поддерживают и режим последовательный, через JTAG интерфейс;
  • Многочисленные радиолюбительские схемы расчитанные на программирование 1 или нескольких типов микросхем через JTAG порт. (по аналогии с так называемыми PIC программаторами).

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

Универсальный USB программатор, оптимизированный для скоростного программирования NAND Flash, микроконтроллеров, FLASH, E(E)PROM, NVRAM, ПЛИС, PLD. Описание программатора

Универсальный USB программатор. Быстрое программирование микроконтроллеров, FLASH, NAND, EEPROM, EPROM, NVRAM, ПЛИС, PLD. Характеристики программатора

Бюджетный, универсальный программатор с USB интерфейсом. Программирование микроконтроллеров, FLASH, EPROM, EEPROM, NVRAM. Описание программатора

Внутрисхемный ISP программатор. Программирование микроконтроллеров и микросхем памяти в устройстве пользователя. Описание программатора

ChipProg-G41 Промышленный программатор копировщик. Самое быстрое программирование, тиражирование микроконтроллеров, FLASH, NAND, E(E)PROM, NVRAM, ПЛИС, PLD.

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

JTAG (сокращение от англ. Joint Test Action Group ; произносится «джей-тáг») - название рабочей группы по разработке стандарта IEEE 1149. Позднее это сокращение стало прочно ассоциироваться с разработанным этой группой специализированным аппаратным интерфейсом на базе стандарта IEEE 1149.1. Официальное название стандарта Standard Test Access Port and Boundary-Scan Architecture . Интерфейс предназначен для подключения сложных цифровых микросхем или устройств уровня печатной платы к стандартной аппаратуре тестирования и отладки. Кому интересно и дальше, полная статья на википедии .

А теперь вернемся к делу, от знакомых попал ко мне спутниковый тюнер, самый обычный и простой Globo на процессоре Ali M3329B. С такими симптомами, вообще не включался, сначала я грешил на блок питания, но прозвонив все напруги мультиметром оказалось все же с питанием все нормально. Поизучав немного разных статьей по ремонту данных ресиверов, пришел к выводу, что судя по симптомам полностью слетела прошивка, и восстановить его можно прошив через JTAG-программатор. Так же была мысль, что он полностью сгорел и восстановлению не подлежит, но я все-же предпочитал верить, что прошивка через JTAG поможет.

Для изготовления выбрал вот эту схему:

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

74HC244 это не инвертирующий буфер. Микросхема содержит два независимых четырехразрядных буфера. Каждый буфер имеет свой сигнал разрешения выхода (низкий активный уровень). На входах нет триггеров Шмитта. Микросхема выполнена по технологии “быстрый” КМОП, что обеспечивает высокое быстродействие. Мощный токовый выход делает возможным сохранение высокого быстродействия даже при емкостной нагрузке. Быстродействие 74HC244 сравнимо с быстродействием микросхем, основанных на диодах Шоттки, при этом 74HC244 сохраняет достоинства микросхем КМОП, т.е. высокая помехозащищенность и низкая потребляемая мощность. Входы микросхемы защищены от повреждения статическим электричеством при помощи диодов.

Увы 74HC244 в своих запасах я не обнаружил. Нашел только аналог 74F244, который немного отличался напряжением питания Vcc. У 74HC244 рекомендуемое от 2 до 6 В, а у 74F244 — от 4,5 до 5,5 В. Хотя максимальные пределы от -0.5 до +7 В, поэтому решил не заморачиваться, и приступить к изготовлению.

Взяв исходную схему на первом изображении, и перерисовав ее в программе DipTrace получилась вот такая схема:

Все было оттрасировано автоматически, не оттрасировало только одну линию, но это проблема была решена двумя SMD перемычками. На изображении выше — готовая для изготовления печатная плата.

На плате я так же подписал все выводы, но к сожалению с выходные сигналы неправильно подписал, как видно на первоисточнике 1- GND, 2- TCK, 3- TMS, 4- TDO, 5- TDI и 6- RST, у меня же получилось GND, TMS, TCK, TDI, TDO, и RST, ошибся именно когда делал подписи контактам, по схеме все правильно, согласно первоисточнику, т.е. 1- GND, 2- TCK, 3- TMS, 4- TDO, 5- TDI и 6- RST.

Печатная плата с правильными обозначением контактов:

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

Проделав всю роботу, выточив гетинакс под размеры платы (примерно 55х50 мм), берем чистящее средство COMET (Комет) в порошке и губку для мытья посуды. Очищаем гетинакс от следов жира и грязи. Лучше не вытирать остатки воды, а дать просохнуть так.

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

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

Естественно фольгированной стороной гетинакса к рисунку печатной платы.

Когда утюг нагрелся, плотно прижимая, начинаем гладить — равномерно прогревая гетинакс со стороны бумаги. Плату такого размера греем не более 30-60 сек, иначе тонер расползется. Рекомендую поставить таймер на телефоне, чтобы время было рядом, перед глазами. Когда все сделано, даем время плате остыть.

Отдираем фотобумагу от платы, перед нами готовая плата, которую остается вытравить в хлорном железе FeCl₃, если есть не большие огрехи, перед травление, поправляем дорожки скальпелем и тонким маркером для дисков.

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

В итоге получаем вот такую печатную плату

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

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


Теперь приступаем к пайке элементов: