Комментарии 21
Хорошая статья! Помню даже лекции слушал по этой теме.
Рассказывать для чего сделан JTAG и не обмолвиться, как это расшифровывается.... Ну, как так? Там в самом названии уже расшифровывается (подсказка: Joint Test Action Group).
XJTAG ведь под лицензией, это же английская контора
Написали бы про протокол, (IR, DR, с примерами как на том же ARM7 память читать и проц отлаживать). Хотя бы про цепочку устройств, проталкивание битов, как в одной цепочке несколько процов существуют.
IDcode подделать невозможно? Да даже на микроконтроллере можно реализовать JTAG интерфейс, выдающий абсолютно любой ID
Если кто интересуется JTAG на низком уровне, рекомендую либу pyftdi, я с ней на неизвестном устройстве JTAG реверсил
IDcode подделать невозможно? Да даже на микроконтроллере можно реализовать JTAG интерфейс, выдающий абсолютно любой ID
Вы имеете в виду программно? Тогда, пожалуй, можно. В источнике, откуда информация, имеется в виду аппаратный интерфейс и регистр IDCode.
Возникают два вопроса:
- допустим, у нас есть неизвестная плата с разъемом JTAG. Можно ли с помощью этого протокола определить, что за чипы там установлены и хотя бы примерную схему их соединения ?
- Что, если мы случайно выставим на одной ножке высокий логический уровень, а на другой - низкий, и они окажутся соединены ? Предусмотрена ли защита от КЗ ?
Да, можно. В статье как раз приводится пример определения схемы соединения (большая плата со множеством микросхем, проект ftjrev и др)
Found 3 devices with total IR length of 26
Device 0: IDCODE 2295C093 (XC5VLX330-FFG1760)
Device 1: IDCODE 21C2E093 (XC3S1200E-FT256)
Device 2: IDCODE 2295C093 (XC5VLX330-FFG1760)
...
Ещё можете посмотреть здесь. Человек определил распиновку jtag, по IDCode и другим вещам постепенно понял, с чем он работает (ядро ARM, Cortex-R4). Считал прошивку, попробовал пошаговое выполнение и др.
Похожий пример с SWD. Здесь основной чип вообще под смолой.
На плате может не быть разъёма JTAG. Могут быть просто безымянные контактные площадки. Пример работы здесь и в примере выше.
Тоже интересовался таким вопросом. Пока не могу ответить однозначно.
Очень интересно: я всегда думал, что это только (в основном) для того, чтобы заливать прошивки в несколько ПЛИС, используя один разъём JTAG.
Если брать ПЛИС Altera (Intel) — там реально можно дрыгать всеми I/O ногами минуя текущую прошивку?
Если брать ПЛИС Altera (Intel) — там реально можно дрыгать всеми I/O ногами минуя текущую прошивку?
Так Альтерка к каждому чипу не просто так выдаёт BSD файлы. Лично я использую этот скан для отслеживания nCONFIG_DONE в устройстве, которое использует в паре STM32F4 и CycloneIV E.
Для ногодрыга прошивка не нужна. Это делается средствами JTAG. Есть выводы-входы, выходы или в обе стороны. Нужно смотреть bsdl файлы. Например для STM32F103C8, или для EP4CE15F23.
Запись прошивки (и другое) -- это, скорее, дополнительные возможности (application specific). В статье есть картинка про это.
Например, где-то видел, что можно посмотреть внутренние регистры со значением температуры, напряжения и др. По-моему, это было как раз на примере ПЛИС.
JTAG Live Studio совершенно не понравилась....при использовании очень много танцев с бубном надо совершать. Для "подёргать ножками" использую TopJTAG Probe (с лечением) тем более что подключение через дешевый J-Link прекрасно работает. Тестирование провожу с помощью JTAG ProVision. XJTAG только недавно приобрёл и не освоил пока толком. Всё перечисленное без BSDL файлов не работает.....как оказалось не на все камни можно BSDL найти.
Чип, подёргай ножкой ¯\_(ツ)_/¯