Что такое JTAG?

30

Я довольно новичок во встроенных системах, и я все время вижу, как этот термин используется, но я не совсем понимаю, что это такое. Быстрый поиск в Интернете приводит к этой странице Википедии: https://en.wikipedia.org/wiki/Joint_Test_Action_Group, которая описывает ее как своего рода протокол для отладки. Но в других контекстах он использовался так, как будто мог программировать память чипа, как программист. Что это такое?

UnTraDe
источник
4
В этом вопросе спрятано несколько полезных камней .
Дэвид
2
Я дал dwelch +1. Кроме того, JTAG иногда неправильно используется как глагол, обозначающий, как правило, «отладку / тестирование» вещи. Человек, который «что-то делает JTAG», может фактически использовать другой протокол, который производитель устройства перекрыл с физическими выводами JTAG (то есть SWD). Вы можете SWD или JTAG, но не оба. Никто SWD ("swoods"?) Их устройства, все же.
Джон
Да, вы можете программировать с JTAG
Snoop

Ответы:

21

Он похож на USB, SPI, I2C и другие «шины» и имеет ряд популярных применений, не ограничиваясь:

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

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

  • Поскольку у микросхем уже есть эти выделенные контакты, почему бы не использовать этот же интерфейс для процессоров, чтобы общаться с встроенным отладчиком (OCD), встроить что-то в процессор и разрешить об этом говорить через jtag.

Это универсальный способ, позволяющий вам изолировать вещи в цепочке, в которую вы хотите отправить серию битов или получить последовательность битов, таким образом, что каждая вещь, с которой вы хотите поговорить, может быть рассчитана на различные номера. битов от небольшого числа до большого числа. Для отладчика вы, естественно, хотите, чтобы он записывал или считывал данные размером с регистр в вашем чипе - может быть, 16-битный регистр или 32-битный. Но для тестирования кремния или платы ваша цепь сканирования может составлять десятки бит. Каждая отдельная вещь, к которой вы обращаетесь, может отличаться по размеру, если хотите, от любой другой вещи, что делает ее очень универсальной шиной с относительно небольшим количеством выводов, которая является привлекательной для этих типов использования.

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

Старожил
источник
Существуют ли технические аспекты JTAG, которые предоставляют его для этих целей, или это просто по историческим причинам?
Оуэн
Хорошо читайте статью в Википедии. Мое мнение таково, потому что он уже был там и подключен к платам и микросхемам, и поскольку он был достаточно гибким для поддержки других применений, и, по крайней мере, у некоторых уже были инструменты на месте, кто-то должен был сказать, почему бы не использовать его для этих других вещей. Я думаю, что его гибкость в сравнении с количеством выводов делает его очень привлекательным. Существуют и остаются другие решения для отладчиков или схемотехнических программ, но благодаря инструкциям FTDI MPSSE и успеху FTDI в целом со всем USB недорогие jtag-инструменты теперь широко доступны.
old_timer
10

Изначально JTAG был интерфейсом, который использовался для тестирования печатных плат после сборки. Линии ввода-вывода на микросхемах могут контролироваться и считываться через порты JTAG, что позволяет выполнять последовательность тестов платы. Позже он также стал использоваться как интерфейс для программирования и отладки. Какая функциональность доступна через JTAG, будет зависеть от конкретной IC, с которой вы имеете дело.

Одним из преимуществ JTAG над большинством других интерфейсов программирования является то, что устройства могут быть последовательно соединены. Таким образом, один порт JTAG может использоваться для программирования / отладки / тестирования нескольких устройств (хотя я бы посоветовал проектировать ваши системы так, чтобы чипы разных марок можно было разделить на разные цепочки, в то время как протокол низкого уровня JTAG довольно стандартизирован, к сожалению, необходимыми инструментами для программирования / отладки чипов нет).

Питер Грин
источник
9

JTAG - это несколько странный термин. Для начала термин может указывать конкретный соединитель и протокол, состоящий из тактового сигнала (TCK), выбора режима (TMS) и ввода / вывода данных (TDI / TDO). Это включает в себя сеть устройств, где TDO каждого устройства подключается к TDI следующего устройства в так называемой цепочке сканирования. TMS используется для перевода всех устройств одновременно в различные режимы .

Устройства в цепи сканирования обычно подключаются как один большой сдвиговый регистр, состоящий из регистров в каждом отдельном устройстве. Когда устройства находятся в состоянии SHIFT_IR или SHIFT_DR, они подключаются к цепочке сканирования одного из двух временных регистров: регистра команд и регистра данных.

Как только значение сдвинуто, режим UPDATE_IR или UPDATE_DR может быть активирован путем соответствующей настройки TMS при переключении TCK. В этот момент значение, сдвинутое в регистр, «вступает в силу». Например, сдвиг различных последовательностей в IR ПЛИС и переход в UPDATE_IR приведут к тому, что ПЛИС войдет в различные режимы, такие как конфигурация, обратное чтение, нормальное время выполнения, или доступ к конкретным пользовательским регистрам и JTAG-специфическим примитивам, созданным в проекте.

Аналогично, состояния захвата могут быть использованы для «считывания» значения с устройства и помещения его в IR или DR, которые будут перемещаться через TDO и в конечном итоге считываться программистом JTAG.

ζ--
источник
4

JTAG определяет последовательный протокол и некоторые команды для обеспечения доступа к внутренним регистрам в сложных интегральных схемах. Это позволяет тестеру получить наблюдаемость и управляемость стандартным способом, используя несколько выводов.

Первоначально он использовался для «сканирования границы», когда все выводы ввода-вывода могли считываться и управляться большим сдвиговым регистром, который окружает микросхему. Тем не менее, он был быстро дополнен добавлением дополнительных регистров сдвига для доступа к внутренним частям чипа, включая память.

Вы редко пользуетесь JTAG, доступ к нему обычно осуществляется через библиотеки, или драйверы, поставляемые производителем микросхемы и используемые тестовой системой и тестовым адаптером доступа.

Neil_UK
источник
То есть чип действительно должен поддерживать JTAG как аппаратным, так и программным обеспечением?
UnTraDe
@UnTraDe Нет, чип поддерживает JTAG в аппаратном обеспечении и может в программном обеспечении (например, FPGA может предоставлять некоторые интерфейсы между JTAG и пользовательским дизайном), но не обязательно иметь программную поддержку на чипе. Инструменты, которые можно было бы использовать для взаимодействия с устройствами через JTAG, будут иметь как программную, так и аппаратную поддержку (программное обеспечение на компьютере и аппаратное обеспечение с точки зрения программиста JTAG, подключенного к этому компьютеру)
ζ--
3

Есть то, что JTAG «означает», и есть то, что JTAG «есть». Как уже отмечалось JTAG «является» промышленным стандартом интерфейса шины для производства тестирования, как в J oint T Эст фикция G Roup.

Что JTAG «означает» для разработчика встроенного программного обеспечения, так это интерфейс отладки на SoC / микропроцессоре для внешней отладки встроенного программного обеспечения, работающего на чипе. Почти каждый процессор / SoC на рынке использует интерфейс JTAG не только для производственных испытаний, но и для поддержки отладки программного обеспечения. Вы найдете интерфейс JTAG на всем, от процессоров x86 серверного класса до домашних WiFi-маршрутизаторов стоимостью менее 50 долларов. Благодаря подходящему аппаратному обеспечению интерфейса и подходящему программному обеспечению эти интерфейсы предоставят вам возможность чтения / записи памяти, установки точек останова и одношагового кода.

Ключ, конечно же, заключается в получении правильного оборудования и программного обеспечения. Даже если базовый интерфейс JTAG стандартизирован, конкретные средства отладки программного обеспечения, доступные в устройстве, могут не быть. JTAG похож на TCP / IP. Он существует в середине стека приложения. Вам нужен правильный физический уровень для связи с оборудованием (т.е. что вы имеете в виду, что эта штука использует 10-Base-2?!?!?), И вам нужно правильное прикладное программное обеспечение над ним (что вы имеете в виду, мне нужен суслик) клиент?!?!?!). Однако сила экосистемы ARM привела к некоторой степени стандартизации там (см. OpenOCD).

Вы также спрашивали об использовании JTAG для программирования flash. Да, некоторые программы используют его и для этой цели. SoC может предоставлять средства JTAG для чтения / записи из адресных пространств памяти ЦП, он может обеспечивать прямой доступ к контроллерам флэш-памяти и, как минимум, JTAG обеспечивает необработанный низкоуровневый доступ к выводам ввода-вывода на краю чипа (это было первоначальная цель JTAG - обеспечить возможность проверки целостности соединений между чипами и микросхемами во время производственных испытаний, то есть «сканирование границ JTAG»). Любое из этих средств может быть использовано умными программистами для подачи сигналов, необходимых для перепрограммирования флеш-чипа в случае, если устройство случайно «замуровано».

племенной
источник