Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Изучаем Jtag. Что такое, и чем он пахнет?)

Ср июн 02, 2021 00:22:54

Здравствуйте высокопочтенные радиокоты! Предлагаю в данной теме посовершенствоваться в изучении JTAG-интерфейса. И что-нибудь попробовать собрать на практике. Считать/прошить/поправить/отладить :wink: В двух словах... поискав информацию в сети понял, что JTAG-это такой интерфейс для прямой связи ПК с чипами на плате. Он разработан для тестирования аппаратной части, а не программной!. Но в чипы, в которые заложена возможность общаться через JTAG, встроен такой хитрый специальный контроллер -ТАР (test access port). Через который можно по специально отведенным контактам считывать/посылать биты...
Изначально, как я понимаю, это делалось для отладки плат. Да и по сей день так и есть. Ну например, я изготовил плату с программируемым чипом. В этом чипе прошита программа, которая исполняется при заданных условиях, например после нажатия кнопки последовательное моргание лампочек.
Но лампочек очень много, и всяких дорожек тоже. Поэтому, подключившись к JTAG-разъему, я могу через компьютер моргать каждой лампочкой отдельно, или несколькими лампочками, как захочу... Получается такая типа проверка на правильность расключения на плате, на целостность контактов и сразу же на исправность тех самых лампочек. Но тут возникает и обратный эффект, который возможно еще более интересен! Раз есть прямой доступ к чипу, прямо в его, так сказать сердце, то можно перепрошить его программный код, либо считать его в процессе его исполнения, а так же изменить его, усовершенствовать... Прямо сразу на плате. Это очень удобно. Так же с помощью JTAG можно "оживлять" окирпиченные вещи. То есть когда аппарат не включается, зависает на заставке, глючит, и когда не удается прошить штатными способами. Через JTAG-интерфейс есть доступ к загрузчику (BOOT LOADER). Как я понимаю, в таких случаях, если микросхема памяти исправна, то тогда необходимо прошить загрузчик. А после уже можно будет прошить штатными способами. Через этот интерфейс можно прошить и сразу все, не только загрузчик.
Поэтому очень хотелось бы на практике попробовать эти возможности. Но для начала давайте разберемся, какие контакты используются для программирования через JTAG-интерфейс? В сети нашел такую информацию:

TCK (TCLK) (test clock)- тестовая синхронизация
TDI (test data in) - входные тестовые данные (ноли и единицы) по протоколу, выбранным производителем. Данные "вливаются по переднему фронту TCK
TDO (test data out) - выходные тестовые данные (вывод информации с чипа). Считываются по заднему фронту TCK
TMS (test mode select) - выбор тестового режима. Сигнал управления ТАР-контроллером.
TRST (test reset) - пин, используемый для сброса JTAG в начальное состояние (используется не всегда, т.к. ресета можно добиться удерживая некоторое время TMS=1. Не менее 5 тактов частоты TCK. Активное состояния TMS=0)
VCC- питание
GND - общий минус питания
Суть такова: подключаемся к этим пинам. Переводим наш чип в режим тестирования (test mode). Подаем питания на плату. И тогда уже можно считывать/записывать данные. Чтобы перейти в режим тестирования необходимо что-то с чем-то замкнуть на плате.
Что необходимо для практической работы?
1) Какая-нибудь плата. В моем случае пусть это будет рабочий всеформатный DVD-проигрыватель.
2) JTAG-программатор. Подскажите пожалуйста, самодельный какой-нибудь простенький подойдет? Или необходимо приобретать многофункциональный программатор? Есть ли какая-то разница между JTAG-программаторами? Может быть какие-то всеядные, или работающие только по определенным протоколам, только с определенными чипами?
3) Софт. Подскажите, есть ли бесплатные софты для JTAG? Какой лучше подойдет?
По моей задумке, я планирую попробовать так: законектить программатор к ПК и к DVD. Далее замкнуть что-то на плате, для перехода в тестовый режим. Далее запустить ПО, включить DVD-проигрыватель, и что-нибудь считать. А потом что-нибудь записать туда:)
Подскажите пожалуйста, с чего начать. И поправьте, если я не правильно понимаю суть JTAG-интерфейса :roll:

Добавлено after 7 minutes 45 seconds:
Через какой разъем коннектиться к ПК: USB, LPT, COM? Очень бы хотелось либо через USB, либо через СOM, т.к. LPT у меня уже нет. COM тоже не было, но специально приобрел модульную планку для PCIe...

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Ср июн 02, 2021 13:13:59

Хай
Начните со спутниковых тюнеров - их у народа много ломаного!

https://gomel-sat.bz/topic/21-jtag/
http://satproshivka.ru/programmy/jtag-programmy/jtag/

Появятся деньги - купите RIFF BOX

ЗЫ - вот у китов не дорого юсб с эмуляторм
https://aliexpress.ru/item/100500184589 ... 7830894933

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Ср июн 02, 2021 15:01:23

Подскажите пожалуйста, с чего начать.

Начните хотя-бы с изучения этого: https://www.segger.com/products/debug-probes/j-link
Там и полные доки на JTAG/SWD можно найти.

Через какой разъем коннектиться к ПК: USB, LPT, COM?
Современные обычно через USB и/или ETHERNET. Опять-же - см. ссыль выше.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Ср июн 02, 2021 15:28:29

Может быть какие-то всеядные, или работающие только по определенным протоколам, только с определенными чипами?

К сожалению нет всеядных. Не то, чтобы прям с определенными чипами, но хотя бы с определенными ядрами или вендорами. К примеру с помощью того же J-Link можно вести отладку большинства ARM, но ПЛИС с помощью него не отладить. Также как от ПЛИС Altera JTAG адаптер USB Blaster больше никуда особо не приткнуть. Стандартизирован только интерфейс. А еще нужно знать к чему обращаться, как, по каким адресам и т.д. И тут вступает в дело что нужен программно-аппаратный комплекс, который будет знать с чем он работает. Поэтому и адапетры и софт к ним разные.
Так что забудьте про универсальность и уточняйте конкретно к чему и что вам нужно.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Вт июн 15, 2021 22:53:33

1) На электрическом уровне (tck, tdi, tdo) JTAG пахнет похоже на SPI. Но ширина регистров (число битов) "нестандартные".
2) Стандарт IEEE 1149 описан в документах. Их можно скачать. См https://en.wikipedia.org/wiki/IEEE_1149 (ссылки на pdf; русская версия этой статьи бесполезная)
3) Чем изобразить? Тем что программируемо (и желательно быстро) шевелит нескольмики лапками или имеет гибкий блок SPI и выдает нужный вольтаж IO. Например: чипы FTDI (мост USB <-> GPIO), LPT (вероятно понадобится конверсия уровней, 5V систем сейчас мало), GPIO мк или одноплатника, ...
4) Стандарт описывает базовые вещи. Придется читать другие документы. При этом очень кстати если вы что-то знаете о изучаемом чипе, какое там ядро процессора и т.п. - у ARM свой типовой вариант блока, у MIPS свой, и т.п..
5) Что это такое? Обычно аппаратный автомат в чипе, независимый от остальной логики, способный брать чип под управление, для отладки или контроля пропайки (boundary scan).
6) При чем там boot loader и доступ? Jtag часто не зависит от работоспособности софта (бывают исключения, но все же), В массовых решениях JTAG иногда отключают, чтобы всякие не копались в секретах. Но это неудобно для диагностики и разработки.
7) Как и чем в неизвестное потыкаться? Прочесть доки и понять азы, уметь кой-как программировать и немного представлять себе что в чипе. Из универсальных вариантов железок, например, основанные на FTDI2232H и подобные, если хочется с компьютера. Или микроконтроллер по вкусу, если надо что-то сильно нестандартное, иногда делают если есть специальные соображения (например, комбинация с действиями типа передерга питания target'а). И наивно думать что проприетарный софт умеет то что надо. Для такого пригодится опенсорсный софт, можно посмотреть как это делается и при необходимости поменять.

Для начала можно на OpenOCD посмотреть, для универсального JTAG ему адаптером дать например что-нибудь на чипе FT2232H (хоть самому налутать). Лучше из-под Linux - так проще если что-то компилить захочется и меньше приколов с драйверами, а обвес открытый, если что-то не прокатило, можно быстренько запатчить и попробовать снова. OpenOCD может работать с разными адаптерами, но слишком умные типа Jlink могут быть специализированными, технически они микроконтроллер с прошивкой, получающий пакеты данных расписывающие что хотел хост. Это быстрее, чем JTAG через "bit bang" но может не обеспечивать "raw" доступ к JTAG. OpenOCD с исходниками и скриптабельный - очень полезно если вы с чем-то неизвестным хотите иметь дело. Есть и другие программы с исходниками где можно основы посмотреть.

Исходя из 6) JTAG порой используют для прошивки софта в "пустую" систему или восстановления слетевшего boot loader по понятным причинам. Доступ в систему при этом часто полнее некуда, если вы полностью контролируете cpu и периферию. Но возможны варианты (STM32 vs read protection level 1 например). У ARM еще в почете интерфейс SWD - идея похожая, но реализация несколько другая и требует меньше лапок.

Если интересно - могу ссылки на пару примеров реверса unknown'ов накидать, но это наверное уже приватным сообщением, обладателям jlink и проприетарных тулсов это знание бесполезно.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Чт июл 08, 2021 20:10:02

как понять поддерживает ли адаптер JTAG архитектуру моего МК? У самого МК (конкретно PPC405EP) выходы входы есть по датышиту для JTAG). Причем разъем пин не стандартный 16 минус 1 ножка. Цель - скачать дамп с постоянной памяти.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Чт июл 15, 2021 10:27:14

В первом приближении JTAG адаптеры бывают "low level" ("raw") и "high level". Понять поддерживает ли - можно либо посмотрев документацию, либо осознав "тип" адаптера в вон тех терминах.

Low level (RAW) адаптеры типа ftdi/GPIO/параллельного порта могут изобразить что угодно, поэтому они поддерживают ВСЕ СУЩЕСТВУЮЩИЕ и даже еще не существующие (!!!) чипы. При условии что софт будет знать что он хочет от чипа. Компьютер взаимодействует с такими адаптерами в терминах, грубо говоря, signal transitions (MPSSE в чипах типа 232H и т..п. может и попродвинутее). В tdi пишут данные, с tdo читают, "как в SPI". Дергая лапки, в простейшем случае. Этот процесс сам по себе ничего не знает что за процессор - только сколько битов задвинуть и прочитать результат. Остальное на усмотрение софта.

High level адаптеры ограничены тем что умеет прошивка их микроконтроллера (что именно - в их описании у производителя не скрывают). С ними общение в других терминах - компьютер отправляет МК высокоуровневые команды описывающие что сделать, а те занимаются вышеупомянутым уже внутрях, это их микроконтроллер делает. Проблема в том что если прошивка их микроконтроллера не умеет то что вы там захотели - вы пролетаете. Бывают опенсорсные прошивки, их теоретически пропатчить можно, а с фирменными прошивками вы вообще совсем в пролете т.к. сорец никто не даст. Более того, такие адаптеры иной раз не могут делать некоторые низкоуровневые трюки даже с "поддерживаемыми" процессорами - все определяется прошивкой МК.

Так что для всякой экзотики стоит поискать какой-нибудь адаптер на FTDI и прикрутить его к openocd, например. Почему он? Гибкий, скриптуемый, дохрена примеров для самых разных процессоров. Можно попытаться по аналогии свой экозт прикрутить. Перечислять все адаптеры на FTDI я не буду: мой openocd знает 69 разных. Можно даже самому такой вытравить на раз, умеючи немного делать платы. Адаптеры на FTDI достаточно популярны в своей нише. Для сильно специфичных вещей иногда программируют микроконтроллер дергать лапками как надо. Это неудобно, но зато можно жесткие тайминги сделать. Допустим если JTAG только после сброса активен а потом софт его срубает, пока там PC будет раздуплять момент может быть упущен. А быстрый МК может успеть перехватить инициативу.

Что до разъема и проч. Вы не это искали? http://bitsavers.org/components/ibm/pow ... un2000.pdf - там довольно много сведений. И на каких шариках JTAG (можно попытаться дорожки проследить) и какой типовой (по мнению IBM) пинаут разъема. Но если там не оно, потыкавшись мультиметром можно прикинуть что где. Выход от входа отличить не так уж трудно а нужных пинов не так уж много. Кстати там именно 16 пинов минус 1 ножка нарисовано так что я бы дал 90% что у вас именно то что там нарисовано.

Судя по даташиту, в первом приближении IR LEN = 7, IDCODE там же расписаны. Этого в принципе достаточно чтобы попытаться начать минимальный диалог, как минимум понять что чип детектится и т.п.. Но я никогда ничего с Power не делал и поэтому не знаю, как у них чего и есть ли что-то готовое под все это. Они достаточно экзотичные и не сильно популярные. У меня например никогда не было систем на этом.

И это, у того PPC судя по даташиту встроеной памяти нет вроде. Только внешний ROM. Который накрайняк можно наверное и отпаять и на программаторе слить. JTAG на таких системах обычно раскуривают чтобы например научиться флешки шить в пустой системе: обидно бывает если бутлоадер стереть, а отпаивать каждый раз при такой оказии флешку может и задолбать.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Пт июл 16, 2021 13:15:53

Спасибо за ссылку http://bitsavers.org/components/ibm/pow ... un2000.pdf , там больше инфы.
Вопрос
1. Страница 277, подтягивать резисторами ножки TDI, TMS относительно + или-?
2. Ножки 7 и 11 как я понял перевод в отладочный режим, У меня сейчас там звониться 20 кОм, убрать, 10 К поставить?
3. Порекомендовать среднебюджетный программатор на USB под W10 64 бит для примера для моих нужд ( считать дамп с ПЗУ, пока мне более не надо).
Извините за тупость, если что. :) Jtag новинка для меня.
Последний раз редактировалось Vasili1970 Пт июл 16, 2021 17:31:47, всего редактировалось 1 раз.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Пт июл 16, 2021 16:08:20

1. Страница 277, подтягивать резисторами ножки TDI, TMS относительно + или-?
2. Ножки 7 и 11 как я понял перевод в отладочный режим, У меня сейчас там звониться 20 кОм, убрать, 10 К поставить?

Вставьте ссылку нормально.

3. Порекомендовать среднебюджетный программатор на USB под W10 64 бит для примера для моих нужд ( считать дамп с ПЗУ, пока мне более не надо).
"Программатор" чего?
Что такое "среднебюджетный"? В граммах.

PS: Как подключать JTAG смотрят как правило в схемах отладочных плат на целевой МК.
Да и осваивать МК (если по уму) начинают с них же.
JTAG-эмулятор - это не "программатор"... если что.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Пт июл 16, 2021 17:43:15

Зачем ерепениться? КПД ответа 10 процентов. Флудить в другую ветку пожалуйста. Знаешь направь, не знаешь и лень помочь не сори.. ССОРИ.
Разорился взял Т56, на тот случай если не осилю jtag. Сдую флешь напрямую . :)

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Сб июл 17, 2021 11:07:48

Протокол IEEE 1149 предписывает производителю оснащающего свой чип интерфейсом JTAG
всего несколько обязательных команд: IDCODE - для чтения кода устройства и производителя (версии и т. д.)
BYPAS - для предоставления "сквозного" прохода команд (на случай если в цепочке более одного чипа).
Все остальные команды отданы на откуп производителю, и тот сам решает, что ему туда включать.
Для описания регистров и команд, служит файл BSDL в котором производитель описывает регистры, шины
и прочие потроха, а так же как с этим добром обращаться.
Если у Вас нет этого файла, либо нет фирменного устройства с обслуживающей программой, то не получится
заставить процессор "дёргать ногами". Думаю проще будет сразу отпаять память и программатором считать/записать.
Сэкономите время и нервы.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Сб июл 17, 2021 11:13:34

Зачем ерепениться? КПД ответа 10 процентов. Флудить в другую ветку пожалуйста. Знаешь направь, не знаешь и лень помочь не сори..
"Jtag новинка для меня", нифига не знаем, задаём вопрос причём совершенно бестолково, а в ответ на попытки помочь - начинаем сразу хамить?
Далеко пойдёте.... :dont_know:

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Сб июл 17, 2021 13:43:26

Спасибо. Надежда считать программатором Т56 флешь память (56 ножек 3,3 Вольт) накрылась, пока что.. Считывается какая то ересь. Надо общаться с китайцами выяснять почему так...

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

если в программаторе JTAG есть тип МК РРС есть вероятность что он имеет на борту этот файл?

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Сб июл 17, 2021 20:26:04

...
если в программаторе JTAG есть тип МК РРС есть вероятность что он имеет на борту этот файл?

Если программатор и софт уже заточены под этот проц, то, думаю проблем быть не должно.
А уж от куда софт будет брать данные о "потрохах" (из файла или алгоритм уже встроен в софт) дело десятое.
Надо пробовать.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Сб июл 17, 2021 21:11:59

JTAG-Booster for
IBM PPC405xxx Это ОНО? Отладчик?
Вложения
www-mouser-com-ds-2-111-jtag_ppc405a-3458-pdf.pdf
описание
(151.22 KiB) Скачиваний: 223

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Вс июл 18, 2021 05:35:54

По всей видимости да. Не думал, что оно такое древнее.

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Вс июл 18, 2021 23:00:16

ну и в принципе и все. Считал со флешки. JTAG отложим на потом :)

Re: Изучаем Jtag. Что такое, и чем он пахнет?)

Пн июл 19, 2021 01:07:49

Забавный флешер, кстати. Я так понял что он boundary scan использует для чтения-записи флехи, изображая сигналы шины прямо bit bang'ом. По своему забавная идея. Сама штука правда древняя как черти-что, и судя по доке - умеет еще и с wiggler'ом работать и проч. Wiggler если что примерно такое - https://www.onetransistor.eu/2017/02/ma ... ggler.html (древний "low level jtag" на LPT)
Ответить