Микроволновки

Схему универсальный программатор isp jtag. Универсальный USB программатор

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

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

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

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


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

Одним из самых мощных отладочных инструментов в микроконтроллерной среде является JTAG — внутрисхемный отладчик .

Суть тут в чем — через JTAG адаптер микроконтроллер подключается напрямую к среде программирвания и отладки, например к AVR Studio . После чего микроконтроллер полностью подчиняется студии и дальше шагу не может ступить без ее разрешения. Доступна становится пошаговое выполнение кода, просмотр/изменение всех регистров, работа со всей периферией и все это в реальном микроконтроллере, а не в программной эмуляции. Можно ставить точки останова (breakpoints) на разные события — для ICE1 три штуки. В общем, сказка, а не инструмент.

К сожалению в AVR микроконтроллерах JTAG доступен далеко не везде, как правило контроллеры с числом ног меньше 40 и обьемом памяти меньше 16КБ такого удовольствия лишены (там, правда, часто бывает debugWire, но на коленке сделать его адаптер еще никому не удалось, а фирменный JTAG ICEII или AVRDragon стоят довольно больших денег). А поскольку у меня в ходу в основном Tiny2313, Mega8, Mega8535 и прочая мелочевка, то мне JTAG что собаке пятая нога — не поддерживается он в этих МК.

Тем не менее, поддашвись многочисленным просьбам, я сварганил этот агрегат и сейчас покажу вам как им пользоваться.
Велосипед изобретать я не стал и взял широко известный проект от scienceprog.com

Однако я не обломался развести плату и под FT232RL суть та же.


Теперь надо прошить контроллер. Вообще, по науке, сначала прошивается bootloader , потом из AVR Studio делается обновление прошивки JTAG ICE до последней версии. Но я нашел путь проще, на сайте pol-sem.narod.ru был обнаружен уже готовый HEX файл который просто надо залить в МК и все.

Поэтому цепляем к нашему адаптеру программатор, благо все штыри нужные (MISO, MOSI, GND, RST, SCK, Vcc ) есть. А то что они не в нужном порядке стандартного AVR ISP разьема, так это не беда — я временно распотрошил колодку своего программатора и одел отдельные пины как надо. Однократная же процедура, чего мучаться разводить еще и ISP разъем.

Заливаем прошивку.
Выставляем Fuse биты.

Тут надо быть внимательными, так как существует несколько нотаций FUSE — прямая (по даташиту, где 0 = ON, 1=OFF) и инверсная (1 = ON, 0 = OFF). В прямой нотации работает UNIPROF, в инверсной нотации работает PonyProg и USBASP _AVRDUDE_PROG.
Определить в какой нотации работает твой программатор очень просто. Дjстаточно подключиться к своему МК и нажать кнопку чтения Fuse битов и посмотреть на бит SPIEN если галка стоит — нотация инверсная . Потому как по дефолту SPIEN включен всегда (без него невозможно прошить МК через ISP внутрисхемно).

Прошиваются Fuse следующим образом:


Бит Прямая нотация (UniProf, Даташит) Инверсная нотация (PonyProg, AVR DUDE GUI)
OCDEN [v]
JTAGEN [v]
SPIEN [v]
CKOPT [v]
EESAVE [v]
BOOTSZ1 [v]
BOOTSZ0 [v]
BOOTRST [v]
BODLEVEL [v]
BODEN [v]
SUT1 [v]
SUT0 [v]
CKSEL3 [v]
CKSEL2 [v]
CKSEL1 [v]
CKSEL0 [v]

Если прошивать голый бутлоадер, то надо включить бит BOOTRST и подключившись через студию сделать обновление прошивки JTAG, залив через AVRProg файл upgrade.ebn (лежит он где то в каталоге AVR Studio). А после прошивки выключить BOOTRST.

Все, девайс готов к работе. Теперь осталось его только испытать в деле.

Работа с JTAG AVR ICE
Особо заморачиваться я не буду, так что покажу на простом примере мигания светодиодов.
Запускаем студию, создаем новый проект.
Выбираем язык программирования, пусть это будет Assembler.
Задаем имя проекта.

Include "m16def.inc" ; Используем ATMega16 LDI R16,0xFF ; Порт А на выход. OUT DDRA,R16 Main: SEI ; Разрешаем прерывания. SBI PORTA,0 ; Зажгли диод 0 SBI PORTA,1 ; Зажгли диод 1 SBI PORTA,2 ; Зажгли диод 2 NOP CBI PORTA,0 ; Погасили диод 0 CBI PORTA,1 ; Погасили диод 1 CBI PORTA,2 ; Погасили диод 2 NOP RJMP Main ; Зациклились

Вот так вот просто. Если ее скомпилить, прошить и запустить, то диоды будут моргать с бешеной частотой, так как никаких задержек не предусмотрено. А что же будет из под JTAG ?

Беру свою новоиспеченную отладочную плату на Mega16 , подключаю к порту А три светодиода.
Подключаю к плате JTAG адаптер — четыре провода интерфейса (TDO,TDI,TMS,TCK ) и два силовых Vcc на плюс и GND на землю — JTAG адптер запитан от целевой платы и все готово к работе.

Можно трассировать! Тыкаю по F11 — прога исполняется по одной команде, показывая стрелочкой где я нахожусь в данный момент. После каждого выполнения команды SBI — у меня на плате зажигается соответствующий светодиод. Круто, блин! Как в каком-нибудь только без глюков и все вживую! Пробежался дальше по тексту — после CBI диоды погасли, как и положено. Вот как это выглядит вживую:

ЫЫЫ!!! ШИМ!!! Ставлю прогу на паузу, меняю биты в OCR2 запускаю снова — коэффициент заполнения изменился. Хы. Ручное управление:)

Так что с JTAGом если хочешь получить по быстрому какую нибудь фиговину вроде генератора даже не надо прогу писать — взял и включил вручную что тебе нужно. Богат AVR периферией:)

Прошивка микроконтроллера через JTAG
JTAG ICE можно также использовать для прошивки микроконтроллера и установки FUSE битов. Для этого надо запустить AVR PROG (Tools — Program AVR — Connect…) и выбрать там JTAG ICE ну и COM порт, хотя обычно канает Auto.

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

Файлы к статье:

Вот так и развращаютя эмбеддеры. Сначала к JTAG пристрастятся, потом ради одного лишь JTAG прееходят на более мощный кристалл там, где хватит и Tiny, а дальше Си, Си++, потом.NET какой нибудь на виртуальной машине… И вот уже операционная система весом в несколько гигабайт и требующая гигазы ОЗУ ни у кого не вызывает шока и ужаса. А ведь это страшно, господа! Прогресс, мать его. Не развращайтесь благами цивилизации, будте аскетичны и разумны. И не забывайте об оптимизации как программной, так и аппаратной.

Существует довольно много конфигураций различных программаторов, которые позволяют переписать программные наработки в микроконтроллер. Они могут быть различными, рассчитанными на профессионалов или, наоборот, иметь упрощенный интерфейс. К последним программаторам относится и герой этой статьи. Вы узнаете не только, что он представляет собой, но и как сделать программатор 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, и тогда можно наблюдать, на каком ряду кода сейчас программа. Для этого достаточно поднести курсор к ряду, который включает светодиод, и он загорится. Существует ещё много экспериментов. Помните, что для того чтобы что-то сделать, необходимо работать. Пускай продвижение будет медленным, но со временем вы сможете получить именно то, что хотите, главное - не опускать руки и продолжать экспериментирование с упором на теоретическую базу (без неё никак).

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.

  • Официальный программатор, выпускаемый фирмой Atmel стоит примерно 300 евро (без доставки и растаможивания). Вариант подешевле — можно найти неофициальные «клоны» по цене примерно $150 .
  • Вариант еще дешевле, но требующий усилий, т.к. из разряда «сделай сам»:
    в сети через поисковик (clone AVR-JTAGICE mkII ) без проблем можно найти схему с прошивкой программатора сопровождаемые инструкцией по сборке.

Характеристики программатора

  • Полная поддержка JTAG программирования, поддерживает также интерфейсы ISP и DebugWire.
  • Подключение к PC осуществляется с помощью USB 1.1 или RS-232 интерфейса
  • Точки останова по адресам памяти программ и памяти данных
  • Все операции и точки останова выполняются в режиме реального времени
  • Напряжение подаваемое в отлаживаемую схему 1.8-5.5 В
  • Напряжение внешнего источника питания 9-12В, так же отладчик может питаться от USB порта

Программатор AVR-JTAGICE3

Официальный программатор для микроконтроллеров фирмы Atmel семейства AVR, поддерживающих интерфейс для отладки и программирования JTAG.

Думаю для отладки AVR микроконтроллеров в среде AVR Studio 5 является лучшим выбором. Кстати, неофициальных клонов найти не смог. Если кто знает, прошу сообщить в комментариях к странице.

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

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

Из преимуществ выделю его малые габариты (по сравнению с его предшественником AVR-JTAGICE mkII) и универсальность — кроме интерфейса JTAG также доступны и aWire, SPI и PDI.

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

Характеристики программатора:

  • Поддержка интерфейсов JTAG, aWire, SPI и PDI
  • 3 аппаратных точки останова и 1 маскируемая
  • Символьная отладка сложных типов данных
  • До 128 программных точек останова
  • Поддержка микросхем с напряжением питания от 1.8 до 5.5В
  • Высокая скорость работы (загрузка 256KB программы ~14 сек. (XMEGA по интерфейсу JTAG) interface)
  • Питание от USB.

Программатор AVR-JTAG-USB

Применяется данный программатор для микроконтроллеров фирмы Atmel семейства AVR, поддерживающих интерфейс для отладки и программирования JTAG. Данный программатор является клоном оригинального Atmel’евского программатора. Производит его фирма Olimex и отличается он от официального более выгодной ценой (приблизительно 4000 рублей через официальных дилеров в России, и естественно, можно дешевле напрямую из-за бугра), при этом по функциональности вполне надежный и во время работы с ним нареканий у меня не возникало. Работает и питается от USB порта компьютера.

Единственная особенностью на которую стоит обратить заранее — это то, что при использовании в качестве средства разработки AVR Studio работать будет только под AVR Studio 4. Если вы собираетесь работать на AVR Studio 5 то он для отладки абсолютно бесполезен, т.к. не поддерживается. Поэтому для пятой версии я купил другой программатор — AVR-JTAGICE3.

Характеристики программатора

  • Программирование всех AVR микроконтроллеров с поддержкой JTAG интерфейса;
  • Целевое напряжение 3,0 — 5,0В;
  • Питание от USB интерфейса;
  • JTAG коннектор совместим с Atmel 2×5 пин коннектором JTAG;
  • Совместим с Atmel AVR STUDIO для программирования, эмуляции в режиме реального времени, отладки, выполнения программы в пошаговом режиме, установки точек останова, дампа памяти и т.д.;
  • Полная эмуляция всех аналоговых и цифровых функций;
  • Полная поддержка программирования через JTAG порт;
  • Обновление через AVR STUDIO;
  • Разъём USB интерфейса – типа «А».

Комплектация: программатор/эмулятор AVR-JTAG-USB.
Для работы может понадобиться USB кабель «А-А» — SCUAA-1