Восстановление ресивера через JTAG

JTAG - специализированный аппаратный интерфейс

JTAG (произносится «дже́й-таг»; сокращение от англ. Joint Test Action Group) — специализированный аппаратный интерфейс, разработанный для тестирования собранных печатных плат (с использованием стандарта IEEE 1149.1). Из-за широкой функциональности JTAG стал повсеместно использоваться для отладки и программирования.

Что такое JTAG?


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

JTAG Boudaty-Scan Test (BST)

В 1985 сформировалась специальная группа ведущих производителей электроники - JTAG (Joint Test Action Group). Для решения проблем тестирования JTAG выдвинула как промышленный стандарт спецификацию IEEE Std 1149.1-1990 (IEEE Standard Test Access Port and Boundary-Scan Architecture).
Встраивание архитектуры BST в современные чипы обеспечивает доступ к выводам чипа (точнее, к специальным блокам ввода-вывода) с помощью 4-х проводного последовательного интерфейса JTAG. Эта архитектура позволяет не только контролировать их состояние, но и управлять ими. Таким образом можно обойтись без громоздких пробников с физическим контактом.
Восстановление ресивера через JTAG - student2.ru
В дополнении к этому, эта архитектура может быть дополнена возможностью обмениваться и иной информацией с чипом. Например, получать результат внутреннего теста, как это делается в современных процессорах. В ПЛИС (программируемых логических интегральных схемах) эта архитектура обеспечивает альтернативную (или основную) возможность ввода конфигурационных данных.
Необходимо отметить, что для подобных целей используются также и другие последовательные интерфейсы. Например, 2-х проводный I2C требует меньше аппаратных затрат и, что более важно, времени для доступа к устройствам. Однако, преимуществом архитектуры BST является отсутствие необходимости явного задания адресов устройств, поскольку все JTAG-устройства объединяются в последовательную цепочку и неявно адресуются своим положением в ней.
Восстановление ресивера через JTAG - student2.ru
Как видно из графа, TAP-контроллер перейдет в исходное состояние RESET из любого другого не более чем за 5 импульсов TCK при TMS=1. При этом произойдет сброс всей схемы BST, а в регистр инструкций запишется значение по умолчанию (как правило, инструкция IDCODE, но может и другая, например, SAMPLE. Во избежание этого сброса следует проводить контроллер TAP через безопасное состояние IDLE, в котором все рабочие установки сохраняются.
Схема ВST содержит целый набор сдвиговых регистров. При проходе по правой ветви графа доступен регистр инструкций длиной от 3 бит. Загруженная инструкция определяет один из регистров данных, доступных при проходе по левой ветви и действия с ними в определенных состояниях TAP-контроллера. Из этих регистров, как минимум, в наличии обычно имеются регистр доступа к внешним выводам чипа и однобитный регистр обхода.
Поскольку в цепочке JTAG-устройств все сдвиговые регистры складываются в один длинный, то регистр обхода позволяет уменьшить эту длину, представляя обойденные устройства всего одним битом. Для этого служит инструкция BYPASS. Поскольку ввод инструкции BYPASS отменяет действие ранее загруженной инструкции, к сожалению, невозможно сохранить состояние блоков ввода-вывода, устанавливаемое инструкциями типа EXTEST и INTEST. Исключением является инструкция CLAMP, после которой можно использовать регистр обхода. Но эта инструкция практически не встречается.
В регистре доступа для каждого блока ввода-вывода ПЛИС, как правило, отведены три последовательных бита: вход (I), выход (O) и запрет выхода (T). Порядок вывода бит на TDO различен для ПЛИС разных фирм. Например, для Xilinx - (T,O,I), а для Altera - (I,T,O).
В состоянии CAPTURE в выбранный сдвиговый регистр записывается текущее состояние. Кстати, для регистра инструкций обычно это код инструкции SAMPLE, а для регистра обхода - логическая единица. В состоянии UPDATE данные из сдвигового регистра переписываются в соответствующий регистр хранения.
Таким образом инструкция SAMPLE не только считывает текущее состояние внешних выводов, но и записывает в регистре хранения управляющие данные. Поэтому, чтобы избежать вывода случайной информации, ее используют перед загрузкой инструкций типа EXTEST или INTEST.
При загрузке инструкции EXTEST выходы регистра хранения определяют состояние выходов чипа, т.е. управляют выходом и его третьим состоянием. Таким образом можно протестировать внешние межсоединения. Инструкция INTEST, напротив, подменяет сигнал вводимый внутрь чипа и служит для проверки самого чипа. Часто обходятся одной инструкцией EXTEST, используя бит входа (I) для ввода в чип как в инструкции INTEST.
Инструкция IDCODE подключает встроенный 32-битный регистр с идентификаторами производителя, модели и версии устройства.

Набор инструкций определяется производителем. Как минимум, присутствуют SAMPLE и BYPASS и EXTEST. Остальные инструкции - дополнительные. Как уже упоминалось, для ПЛИС могут быть специальные инструкции конфигурирования, а для процессоров - чтение результата внутреннего теста.
Производители микросхем предоставляют информацию о конкретной реализации BST для каждого типа своей продукции в виде BSDL-файла (Boundary-Scan Description Language). Чуть более подробно об этом формате можно узнать на http://www.asset-intertech.com.
Доступ к JTAG порту можно организовать при помощи кабеля типа ByteBlaster, подключив им тестируемую систему к параллельному порту компьютера. В тестируемой системе рекомендуется установить подтягивающие резисторы (PullUp's) и керамический конденсатор на питании вблизи ответного разъема ( что я успешно применяю в своем интерфейсе JTAG на микросхеме 74НС244, поставив керамический конденсатор на ее питание, если ее учитывать, что питание иногда приходится брать с ресивера……..) . Для устойчивой работы выход TDO желательно буферизовать. Например, через два инвертора типа К561ЛН2.

Итак думаю большинство из выше написанного и не поняли многого, но эту цель и не преследовал. Главное вы поняли, что не все так просто и не будете теперь путаться в понятиях. Материал для статьи взят на http://www.orc.ru/~dkuzn/j_intro.htm , там же можно найти много полезного для тех кого заинтересовала технология JTAG.
В следующей статье рассмотрим более приземленное – интерфейсы JTAG

Восстановление ресивера через JTAG


Представленная ниже схема предназначена для подключения к ресиверам Intershit DSR-8001/8005 Premium (Premium Class) на базе процессоров NEC µPD61120 и µPD61115.
О том, что понадобится для сборки необходимой схемы:
* Четыре резистора сопротивлением 100 Ом 0,125W.
* Микросхемка серии 74HC244 или 74HCT244, либо отечественные её аналоги К1564АП4, К1554АП5 (или 1554АП4, но у неё одно отличие - один из входов OE инверсный, а другой прямой, так что при сборке схемы на ней учтите это).
* Компьютерный кабель, у которого на одном конце должен быть разъём 25M (со штырьками, а не с дырочками), а что на другом конце - не имеет значения, то есть подойдёт абсолютно любой, например модемный, от принтера или SCSI-вый. Длина этого кабеля тоже почти не имеет значения, лично я использовал трёхметровый (просто взял то, что было).
* шлейф от COM-порта. на фото:
Восстановление ресивера через JTAG - student2.ru
Теперь непосредственно схема. Подключается она к компьютеру к LPT-порту. Вообще, изначально это был Altera ByteBlaster II Download Cable. В данной PDF-ке по ссылке представлена полная принципиальная схема, но, так как в режиме JTAG задействованы не все выводы разъёма JTAG на плате ресивера, о чём и сказано в той же PDF-ке, то её можно значительно упростить. В итоге, получается вот такая вот нехитрая схема, сразу же готовая к работе после сборки:
Восстановление ресивера через JTAG - student2.ru

А теперь сборка. Если Вы впервые сталкиваетесь с подобной задачей, то лучше не мучайтесь, а поручите её знакомому мастеру-электронщику, так будет гораздо дешевле в плане трудозатрат и нервов Восстановление ресивера через JTAG - student2.ru А если есть опыт пайки, то за дело! Восстановление ресивера через JTAG - student2.ru
Восстановление ресивера через JTAG - student2.ru
Собирается всё в соответствии со схемой. Неиспользуемые выводы микросхемы, разъёма, идущего к LPT-порту и шлейфа- остаются в воздухе, то есть не подключаются ни к чему. Хотя, как вариант, для повышения стабильности работы микросхемы, незадействованные входы 2A0-2A3 (это выводы под номерами 11, 13, 15, 17) лучше тоже подключить к общему проводу (к "земле").

О распиновке: кабель от компьютера, я думаю, сложностей не вызовет, так как проводки, как правило, разноцветные и надо просто к нужным выводам разъёма подпаять провода, если их там ещё нет.

Если есть - просто записать, какому выводу какой цвет провода соответствует. Каждый вывод на этих разъёмах пронумерован (прямо рядом с каждой ножкой подписан её номер), так что, тоже ничего сложного. А все выводы с 18-го по 25-й и (15-й тоже) замкнуть друг с другом прямо на самом разъёме.
А вот шлейф от COM-порта не имеет никакой нумерации.

Единственное, что на ней есть, это цветовая маркировка (обычно чёрная или красная линия, нанесённая на крайнем проводнике). Так вот, вот этот вот крайний промаркированный проводник - и есть первый.

Далее, в прямом порядке за ним идут второй, третий и... до девятого.

Всё. Собираем, подключаем. Подключаем так, чтобы этот первый проводок на косичке был рядом с первым выводом разъёма JTAG (на плате он обозначен срезанным углом белого прямоугольника, нанесённого вокруг этого разъёма):
Восстановление ресивера через JTAG - student2.ru
Общий вид будет таким:
Восстановление ресивера через JTAG - student2.ru
Все подключения ради сохранности ресивера и LPT-порта компьютера производить
при отключенном питании ресивера!
При самой перешивке включать ресивер только в ту же розетку, куда включен и компьютер!
Отладочная программа для работы через JTAG - EJFlasher, выполняющая необходимые действия по перешивке ресиверов без каких бы то ни было трудностей!
Итак, для работы программы необходимо, чтобы режим работы LPT-порта компьютера был выставлен как ECP, а так же, если Вы используете NT-систему (Windows NT, 2000 или XP), то необходимо установить драйвер GiveIO.sys, который идёт в комплекте с самой программой.
Если Вы используете Windows 95, 98 или Millennium, то этот драйвер устанавливать не надо.

Далее, включаем питание ресивера и запускаем саму программу:
Восстановление ресивера через JTAG - student2.ru
*В Win9x-системах строчки Initializing giveio driver не будет Восстановление ресивера через JTAG - student2.ru
Если всё в порядке, то Вы увидите всё в точности, как на данной картинке. Если драйвер GiveIO.sys не был установлен, то программа сообщит об ошибке.
Потом, нажимаем кнопку Detect Device. Если Вы увидите строку Cannot detect ByteBlaster cable, это означает, что программа не может найти кабель, а если Вы увидите строки ByteBlaster detected и после неё Cannot initialize target device, то это означает, что кабель программа нашла, а вот ресивер ей не отвечает. Причин тому может быть несколько, как минимум две из которых - Вы не правильно произвели подключение к разъёму на плате ресивера или же проблема в самом ресивере...
Хочу отметить ещё один момент: для работы с этой программой совершенно не важно, включен с пульта ресивер или нет, главное, чтобы он был просто включен в розетку.
Итак, если всё удачно, то программа напишет, что найден такой-то процессор и такой-то тип флэшки:
Восстановление ресивера через JTAG - student2.ru

Далее, следует произвести несколько нехитрых действий строго в указанной последовательности:

1. Нажимаем кнопку Erase Flash и выбираем в поле Address значение "0x00000000", а в поле Length значение "0x00200000", нажимаем кнопку Start. Программа должна сообщить, что вся флэшка удачно стёрта.

2. Отключаем питание ресивера (выключаем его из розетки), отключаем разъём JTAG.

3. Ждём две-три секунды и подключаем разъём JTAG обратно, потом включаем питание ресивера.

4. В программе - нажимаем на кнопочку Detect Device и видим, что, как и в начале, процессор и флэшка определились.

5. Нажимаем на кнопку Program Flash, открываем файл с загрузчиком (нажав на кнопку "..."), а после этого нажимаем кнопку Start и ждём, пока файл с загрузчиком будет записан во флэшку ресивера:)


Восстановление ресивера через JTAG - student2.ru

Еще один вариант на микросхеме К555АП5
http://pbi.my1.ru/39239177.jpg
Восстановление ресивера через JTAG - student2.ru

Итак, в предыдущей статье мы рассмотрели, что такое JTAG – это в общем смысле некая технология, стандарт для внутрисхемной отладке микросхем с помощью определенных средств. Все это происходит по определенным стандартам и спецификациям. Производители микросхем учитывают их при разработке и сразу закладывают в возможности чипов использование для их отладки технологию JTAG. Теперь переходим к средствам реализации этой технологии - ИНТЕРФЕЙСАМ JTAG. ИНТЕРФЕЙС популярно выражаясь – это средства (программные или аппаратные) посредством которых мы взаимодействуем с чем либо. Например, зрительную информацию в мозг мы передаем через наш интерфейс – глаза, а мозг уже ее обрабатывает. Работая с какой либо программой мы нажимаем на мониторе (который тоже является интерфейсом вывода информации) в окне программы кнопки – так вот окно программы и является интерфейсом между нами и программой. Так вот и с портом JTAG процессора ресивера мы общаемся посредством компьютера через определенный интерфейс. Их мы и рассмотрим. Все интерфейсы JTAG как правило подключаются к LPT порту компьютера (но есть варианты которые могут работать и через сом-порт при наличии соответствующего ПО), связано это с тем что эти порты ввода-вывода проще подаются программированию и контролю за состоянием. А также к порту JTAG процессора. Восстановление ресивера через JTAG - student2.ru Самый простой интерфейс на резисторах. Разброс их номинала может незначительно отличатся от 100 ОМ , но желательно чтобы они были одинаковыми (из одной коробки). Длина проводников должна быть минимальной около 20-25см, хотя может и отличатся в ту или иную сторону – все зависит от качества самих проводов, источников помех………….. Восстановление ресивера через JTAG - student2.ru Если у вас хватает знаний навыков и умений собрать вариант интерфейса на микросхемах, то лучше сделать его – резисторы самый простой и быстрый вариант. Нижеприведенные схемы это вариации интерфейса ByteBlaster от фирмы ALTERA. Как правило, изготавливаются на микросхемах 74HC244 (74LS244), либо отечественные её аналоги К1564АП4, К1554АП5 (или 1554АП4, но у неё одно отличие - один из входов OE инверсный, а другой прямой, так что при сборке схемы на ней учтите это). Восстановление ресивера через JTAG - student2.ru Еще один вариант на микросхеме К555АП5 Восстановление ресивера через JTAG - student2.ru Подключение интерфейса JTAG к ресиверу PBI-1000s производится по ниже приведенной схеме. Для других моделей ресиверов на процессоре STi5518 схема подключения может отличаться. Необходимо найти разъем на плате для подключения интерфейса JTAG и определить расположение сигналов на нем на основании распиновки сигналов порта JTAG процессора ST5518 показанной на самом первом рисунке. Восстановление ресивера через JTAG - student2.ru Восстановление ресивера через JTAG - student2.ru Рекомендую для развязки по питанию поставить керамический конденсатор на питание микросхемы. Небольшое уточнение - данные интерфейсы подходят для процессора ST………(в частности STi5518). Для других процессоров схема интерфейса может быть другой как и программы работающие с ним. Готовый интерфейс в Европе стоит порядка 15-25 евро. Картинку одного из таких изделий с указанием моделей ресиверов для которых его можно использовать привел ниже (это говорит о том что и вышеприведенные схемы интерфейсом можно применять для этих моделей ресиверов) .   За ваши опыты и эксперименты с ресивером ни я, ни администрация сайта ответственности не несем. ПОМНИТЕ - некомпетентные и некорректные действия с использованием интерфейса JTAG могут привести к неработоспособности ресивера. Если не уверены в своих силах поручите это специалистам.

Наши рекомендации