Здравствуйте высокопочтенные радиокоты! Предлагаю в данной теме посовершенствоваться в изучении JTAG-интерфейса. И что-нибудь попробовать собрать на практике. Считать/прошить/поправить/отладить В двух словах... поискав информацию в сети понял, что 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-интерфейса
Добавлено after 7 minutes 45 seconds: Через какой разъем коннектиться к ПК: USB, LPT, COM? Очень бы хотелось либо через USB, либо через СOM, т.к. LPT у меня уже нет. COM тоже не было, но специально приобрел модульную планку для PCIe...
Может быть какие-то всеядные, или работающие только по определенным протоколам, только с определенными чипами?
К сожалению нет всеядных. Не то, чтобы прям с определенными чипами, но хотя бы с определенными ядрами или вендорами. К примеру с помощью того же J-Link можно вести отладку большинства ARM, но ПЛИС с помощью него не отладить. Также как от ПЛИС Altera JTAG адаптер USB Blaster больше никуда особо не приткнуть. Стандартизирован только интерфейс. А еще нужно знать к чему обращаться, как, по каким адресам и т.д. И тут вступает в дело что нужен программно-аппаратный комплекс, который будет знать с чем он работает. Поэтому и адапетры и софт к ним разные. Так что забудьте про универсальность и уточняйте конкретно к чему и что вам нужно.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Заголовок сообщения: Re: Изучаем Jtag. Что такое, и чем он пахнет?)
Добавлено: Вт июн 15, 2021 22:53:33
Нашел транзистор. Понюхал.
Зарегистрирован: Вс сен 06, 2020 16:06:10 Сообщений: 156
Рейтинг сообщения:0
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 и проприетарных тулсов это знание бесполезно.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
Vasili1970
Заголовок сообщения: Re: Изучаем Jtag. Что такое, и чем он пахнет?)
как понять поддерживает ли адаптер JTAG архитектуру моего МК? У самого МК (конкретно PPC405EP) выходы входы есть по датышиту для JTAG). Причем разъем пин не стандартный 16 минус 1 ножка. Цель - скачать дамп с постоянной памяти.
Заголовок сообщения: Re: Изучаем Jtag. Что такое, и чем он пахнет?)
Добавлено: Чт июл 15, 2021 10:27:14
Нашел транзистор. Понюхал.
Зарегистрирован: Вс сен 06, 2020 16:06:10 Сообщений: 156
Рейтинг сообщения:0
В первом приближении 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 на таких системах обычно раскуривают чтобы например научиться флешки шить в пустой системе: обидно бывает если бутлоадер стереть, а отпаивать каждый раз при такой оказии флешку может и задолбать.
Спасибо за ссылку 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 раз.
1. Страница 277, подтягивать резисторами ножки TDI, TMS относительно + или-? 2. Ножки 7 и 11 как я понял перевод в отладочный режим, У меня сейчас там звониться 20 кОм, убрать, 10 К поставить?
3. Порекомендовать среднебюджетный программатор на USB под W10 64 бит для примера для моих нужд ( считать дамп с ПЗУ, пока мне более не надо).
"Программатор" чего? Что такое "среднебюджетный"? В граммах.
PS: Как подключать JTAG смотрят как правило в схемах отладочных плат на целевой МК. Да и осваивать МК (если по уму) начинают с них же. JTAG-эмулятор - это не "программатор"... если что.
Зачем ерепениться? КПД ответа 10 процентов. Флудить в другую ветку пожалуйста. Знаешь направь, не знаешь и лень помочь не сори.. ССОРИ. Разорился взял Т56, на тот случай если не осилю jtag. Сдую флешь напрямую .
Протокол IEEE 1149 предписывает производителю оснащающего свой чип интерфейсом JTAG всего несколько обязательных команд: IDCODE - для чтения кода устройства и производителя (версии и т. д.) BYPAS - для предоставления "сквозного" прохода команд (на случай если в цепочке более одного чипа). Все остальные команды отданы на откуп производителю, и тот сам решает, что ему туда включать. Для описания регистров и команд, служит файл BSDL в котором производитель описывает регистры, шины и прочие потроха, а так же как с этим добром обращаться. Если у Вас нет этого файла, либо нет фирменного устройства с обслуживающей программой, то не получится заставить процессор "дёргать ногами". Думаю проще будет сразу отпаять память и программатором считать/записать. Сэкономите время и нервы.
Зачем ерепениться? КПД ответа 10 процентов. Флудить в другую ветку пожалуйста. Знаешь направь, не знаешь и лень помочь не сори..
"Jtag новинка для меня", нифига не знаем, задаём вопрос причём совершенно бестолково, а в ответ на попытки помочь - начинаем сразу хамить? Далеко пойдёте....
Спасибо. Надежда считать программатором Т56 флешь память (56 ножек 3,3 Вольт) накрылась, пока что.. Считывается какая то ересь. Надо общаться с китайцами выяснять почему так...
Для описания регистров и команд, служит файл BSDL в котором производитель описывает регистры, шины и прочие потроха, а так же как с этим добром обращаться.
если в программаторе JTAG есть тип МК РРС есть вероятность что он имеет на борту этот файл?
... если в программаторе JTAG есть тип МК РРС есть вероятность что он имеет на борту этот файл?
Если программатор и софт уже заточены под этот проц, то, думаю проблем быть не должно. А уж от куда софт будет брать данные о "потрохах" (из файла или алгоритм уже встроен в софт) дело десятое. Надо пробовать.
Заголовок сообщения: Re: Изучаем Jtag. Что такое, и чем он пахнет?)
Добавлено: Пн июл 19, 2021 01:07:49
Нашел транзистор. Понюхал.
Зарегистрирован: Вс сен 06, 2020 16:06:10 Сообщений: 156
Рейтинг сообщения:0
Забавный флешер, кстати. Я так понял что он boundary scan использует для чтения-записи флехи, изображая сигналы шины прямо bit bang'ом. По своему забавная идея. Сама штука правда древняя как черти-что, и судя по доке - умеет еще и с wiggler'ом работать и проч. Wiggler если что примерно такое - https://www.onetransistor.eu/2017/02/ma ... ggler.html (древний "low level jtag" на LPT)
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения