Здравствуйте высокопочтенные радиокоты! Предлагаю в данной теме посовершенствоваться в изучении 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)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения