Jtag usb программатор своими руками

Jtag usb программатор своими руками

Отладчик AVR JTAG.

Автор: VDD
Опубликовано 10.11.2009

Однажды ваш покорный слуга решил, что ему необходим (сам не знаю, почему так решил) отладчик (debugger) для AVR. Что такое отладчик можно прочитать здесь. Если коротко, в отличии от обычного программатора он позволяет не только прошить микроконтроллер, но и наблюдать за выполнением программы, останавливать ее в любой момент (например при зацикливании, зависании вы увидите в каком месте кода это произошло и сможете попробовать понять почему), выполнять программу по шагам, менять содержимое ячеек памяти и регистров контроллера «на лету». т.е. ОТЛАЖИВАТЬ, искать ошибки, моделировать различные варианты выполнения программы. Сказано — сделано, но поинтересовавшись стоимостью AVR JTAG ICE II понял, что цена сего, безусловно прикольного девайса мне не нравится. Порывшись на просторах Интернета, я обнаружил, что существует клон предыдущей версии отладчика (JTAG ICE) и даже не один. Более того, некоторые его даже изготовили и используют. Но как всегда чего-то не хватает. Во-первых, все устройства почему-то используют com порт вместо уже ставшего стандартом USB. Во-вторых, когда я повторил одну из конструкций, моя AVR студия отказалась апгрейдить девайс, хотя и видела его, хотя я делал все по инструкции. В-третьих, люблю все мелкое и аккуратное и не люблю корпуса DIP. В итоге пришлось скомпилировать из доступной информации по вопросу собственное решение. Получилась такая вот «конструкция выходного дня».
Поскольку в основном я работаю с небольшими проектами, решено было осуществлять питание отлаживаемого устройства от USB через отладчик (5 вольт до 500 ма). Другие варианты питания отлаживаемого устройства в этом варианте отладчика не предусмотрены.
Во-вторых, для упрощения схемы и опять таки из-за отсутствия согласования уровней не стал делать буферизацию и весь обвес, связанный с возможностью внешнего/пониженного питания. В связи с этим не втыкайте устройство куда попало — можно испортить.
В-третьих, эксперименты с загрузчикам и автоматическим обновлением отладчика из avr студии привели меня к выводу, что 100% работоспособный девайс получается, если его прошить его в лоб непосредственно прошивкой из комплекта инсталляции вашей AVR студии при помощи ISP программатора (надеюсь, он у вас есть), хотя и с загрузчиком тоже в основном удается обновить прошивку через студию.
Т.е. я изначально делал не коммерческий продукт для личного использования. В итоге он мне понравился, и я решил с вами поделиться. К сожалению, он не может работать с контроллерами AVR младше меги 16. (ввиду отсутствия у них JTAG). Впрочем, в коде размером до 4 кб можно разобраться и так. Мне сей девайс помог разобраться в странностях поведения аппаратного I2С и отловить ряд собственных ошибок при работе с RT OS, возможно в чем-то поможет и Вам.

По схеме комментировать особенно нечего. FT232RL включена в соответствии с даташитом. Поскольку люблю все блестящее повесил 4 светодиода — питание, 2шт активность на FT-шке и, собственно, активность отладчика. Плата рисовалась ручками по даташитам, но собранное устройство полностью работоспособно и весело подмигивает светодиодами во время отладки, впрочем и остальные функции тоже выполняет. Все необходимые для работы сигналы выведены на 9-и контактный рядный разъем. В качестве ответной части к нему сделаны 2 шлейфа: боевой- AVR JTAG 10 pin (распиновка приложена) и шлейф для первичного программирования отладчика (нужен только в случае если версия студии поменяется). Корпус не изготавливался.

Плата нарисована в Sprint Layout 5.0. Изготовлена фотоспособом с использованием пленочного фоторезиста. Шаблон выводил на струйнике HP. Минимальная ширина дорожки 0.3мм, минимальный просвет 0.2мм). Возможно, умельцы и ЛУТом смогут изготовить. Я не стал пробовать. Все элементы 0805 и 1206 кроме дросселя (1210) и электролита фильтра питания (тип В). На плате стоят 4 чип — перемычки чтобы влезть на 1 слой (тип 1206) . Токоограничительные резисторы в зависимости от типа светодиода. Я использовал 510 Ом для желтых, зеленых, красных и 1 кОм для синего. Дроссель фильтра 10мкГ, электролит 10 мкФ 16 в. Кварц СТРОГО 7.3728МГц. Емкости к кварцу по даташиту ATMEGA16 — 12пФ. Остальные емкости блокировочные и цепь сброса микроконтроллера 0.1мкФ. Сопротивление в цепи сброса контроллера 10кОм.
Описание разъема на плате:
Считаем с права налево, смотрим со стороны smd компонентов (от квадратика).
1. Земля
2. +5вольт
3. NTRST
4. TMS
5. MOSI/TDI
6. MISO/TDO
7. SCK/TCK
8. RESET
9. NC

Читайте также:  Дуги для эндуро своими руками

VSUP и VTREF соединены вместе в кабеле JTAG.

Где взять загрузчик?
Их много на просторах инета. Главное, чтобы он по размеру укладывался в 500 слов (words, 500w) и был совместим с АВР Студией. Сначала прошиваем его. Можно воспользоваться, например этим. При выборе загрузчика желательно ознакомиться с его описанием от автора.

Где взять прошивку?
В папочке AVR Студии */Atmel/AVR Tools/JTAGICE есть файл Upgrade.ebn . Это прошивка адаптера в формате EBN. Конвертируем ee при помощи EBN2HEX в простой и понятный большинству программаторов HEX. Затем прошиваем отладчик этой прошивкой по ISP. ВНИМАНИЕ. При прошивке снимите галочку очиски флэша чтобы не убить загрузчик.

Как установить фьюзы?
Вот так:
Boot Reset Fuse — on (0). Т.е. при Reset должен запускаться загрузчик
BOOTSZ1 — on (0), BOOTSZ0 — 0ff (1). — размер загрузчика = 512w.
CKSEL3..1 и CKOPT настроены на внешний резонатор 8MHz. (не перепутать с осцилятором. а то придется подключать внешний генератор чтобы перепрошить фьюзы)

Источник

Универсальный USB программатор

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

Основой программатора является микросхема FT2232D. Представляет она собой преобразователь USB в два порта UART. Особенность заключается в том, что «верхний» канал А может работать в режимах JTAG, SPI и I 2 C, что и требуется для программирования микроконтроллеров, различных микросхем памяти и т.п.

Разработка данного USB-программатора ведется на компьютере с использованием библиотек от фирмы FTDI Chip.

Питается устройство от интерфейса USB. При правильной сборке схема не нуждается в настройке. Функционирование устройства зависит от мастерства разработчика ПО. Резисторы R8, R9, R12, R13, R14, R15, R16 являются токоограничивающими при неправильном соединении с устройством, соответственно, выводы программируемого устройства не должны соединяться с другими элементами в схеме, или иметь такие подтяжки, которые при образовании делителей напряжения не искажали бы логические уровни. Микросхема U1 используется для сохранения пользовательских настроек.

Выводы U2 (канал А):
24 — ADBUS0 – выход- в режиме JTAG TCK, в режиме SPI SK;
23 — ADBUS1 – выход- в режиме JTAG TDI, в режиме SPI DO;
22 — ADBUS2 – вход- в режиме JTAG TDO, в режиме SPI DI;
21 — ADBUS3 – выход- в режиме JTAG TMS, в режиме SPI как вспомогательный сигнал(CS);
20 — ADBUS4 – в режиме JTAG вход\выход, в режиме SPI вспомогательный выход. Этот вывод используется для подачи сигнала RESET в микроконтроллер;
15 — AСBUS0 – свободно программируемый вход\выход во всех режимах (опционно используется для подачи питания в программируемое устройство);
13 — AСBUS1 – свободно программируемый вход\выход во всех режимах.

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

Канал В используется для отладки программируемого устройства. Для этого нужно только иметь незадействованный порт UART в микроконтроллере. Далее дело техники. В программе микроконтроллера в нужных местах используем функцию форматированного вывода printf().

40 —BDBUS0 – выход- в режиме UART TXD;
39 —BDBUS1 – вход- в режиме UART RXD;
28 — BСBUS2 – выход- в режиме UART LED-индикатор (зажигается при передаче данных через USB);
27 — BСBUS3 – выход- в режиме UART LED-индикатор (зажигается при приеме данных через USB).

Ниже приведена печатная плата программатора

На сегодняшний день данный универсальный программатор поддерживает микроконтроллеры AVR по интерфейсам JTAG и SPI. Причем скорость прошивки Atmega64 по JTAG не более 5-и секунд, по SPI не более 8-ми секунд. Принципиально, прошивать можно любые микроконтроллеры, к которым распространяется спецификация для программатора. В настоящий момент, например, ведется разработка для поддержки микроконтроллеров NEC.

Читайте также:  Защита переднего бампера лифан х60 своими руками

Рабочая форма поделена на две части: слева таблицы для работы с FLASH (сверху) и EEPROM (снизу), сюда можно открывать файлы или загружать прошивки из микроконтроллера, делать верификацию, править содержимое ячеек памяти; справа текстовое поле для отладки, сюда выводятся данные с канала В, также можно там вводить текст, который отправится в порт (функционально это аналог HyperTerminal). Разработка ведется на платформе Visual C# под Windows. Также есть возможность разрабатывать на других языках. Программатор может работать и под Linux.

Используемая литература:
1. А.В. Евстигнеев «Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL», М. Издательский дом «Додэка-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. “Software Application Development D2XX Programmer’s Guide” , Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCJTAG DLL” , Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed FTCSPI DLL” , Application note AN_111, 2009.
6. Эндрю Троелсен «С# и платформа .NET» М.,С-П. Питер, 2007.

Скачать исходники ПО и печатную плату в формате P-CAD вы можете ниже

Борисов Алексей (Albor) г.Сызрань, Самарская обл.

Источник

Делаем JTAG программатор для прошивки флеш-памяти спутниковых тюнеров и не только

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

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

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

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

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

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

На фото плата с запаянным 74F244 и двумя SMD перемычками.

Запаяем резисторы, конденсатор и разъем LPT-порта (папа), а так же провода GND, TCK, TMS, TDO, TDI и RST для подключения к устройству которое необходимо прошить. И два провода, для питания программатора

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

О самом процессе прошивки спутникового тюнера, с помощью данного программатора напишу своей следующей статье.

Источник

Оцените статью