Я довольно новичок во встроенных системах, и я все время вижу, как этот термин используется, но я не совсем понимаю, что это такое. Быстрый поиск в Интернете приводит к этой странице Википедии: https://en.wikipedia.org/wiki/Joint_Test_Action_Group, которая описывает ее как своего рода протокол для отладки. Но в других контекстах он использовался так, как будто мог программировать память чипа, как программист. Что это такое?
30
Ответы:
Он похож на USB, SPI, I2C и другие «шины» и имеет ряд популярных применений, не ограничиваясь:
Один из них, в частности, заключается в тестировании кремния до того, как в каждую деталь будет вложено слишком много, например, пока чип находится на пластине, вы можете проверить большую часть детали. Конечно, нарезание кубиками вафли может привести к повреждению, поэтому вы хотите протестировать снова, но, возможно, вы делаете это перед упаковкой, а может, и после.
Вы можете использовать его для сканирования границ на досках. Вы можете взять плату на производственную линию (при условии, что плата должна быть спроектирована правильно, и некоторый процент микросхем должен поддерживать это), но вы можете проводить тесты на низкоскоростное соединение, стимулировать вывод на одном конце трассы и сканировать другой. части, чтобы увидеть, что они связаны или не связаны в соответствии с дизайном платы.
Поскольку у микросхем уже есть эти выделенные контакты, почему бы не использовать этот же интерфейс для процессоров, чтобы общаться с встроенным отладчиком (OCD), встроить что-то в процессор и разрешить об этом говорить через jtag.
Это универсальный способ, позволяющий вам изолировать вещи в цепочке, в которую вы хотите отправить серию битов или получить последовательность битов, таким образом, что каждая вещь, с которой вы хотите поговорить, может быть рассчитана на различные номера. битов от небольшого числа до большого числа. Для отладчика вы, естественно, хотите, чтобы он записывал или считывал данные размером с регистр в вашем чипе - может быть, 16-битный регистр или 32-битный. Но для тестирования кремния или платы ваша цепь сканирования может составлять десятки бит. Каждая отдельная вещь, к которой вы обращаетесь, может отличаться по размеру, если хотите, от любой другой вещи, что делает ее очень универсальной шиной с относительно небольшим количеством выводов, которая является привлекательной для этих типов использования.
Возможно, из-за популярности для отладки программного обеспечения у них теперь есть несколько двухконтактных решений, чтобы сэкономить на счетчиках микроконтроллеров, и, возможно, другие примут это, возможно, нет.
источник
Изначально JTAG был интерфейсом, который использовался для тестирования печатных плат после сборки. Линии ввода-вывода на микросхемах могут контролироваться и считываться через порты JTAG, что позволяет выполнять последовательность тестов платы. Позже он также стал использоваться как интерфейс для программирования и отладки. Какая функциональность доступна через JTAG, будет зависеть от конкретной IC, с которой вы имеете дело.
Одним из преимуществ JTAG над большинством других интерфейсов программирования является то, что устройства могут быть последовательно соединены. Таким образом, один порт JTAG может использоваться для программирования / отладки / тестирования нескольких устройств (хотя я бы посоветовал проектировать ваши системы так, чтобы чипы разных марок можно было разделить на разные цепочки, в то время как протокол низкого уровня JTAG довольно стандартизирован, к сожалению, необходимыми инструментами для программирования / отладки чипов нет).
источник
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.
источник
JTAG определяет последовательный протокол и некоторые команды для обеспечения доступа к внутренним регистрам в сложных интегральных схемах. Это позволяет тестеру получить наблюдаемость и управляемость стандартным способом, используя несколько выводов.
Первоначально он использовался для «сканирования границы», когда все выводы ввода-вывода могли считываться и управляться большим сдвиговым регистром, который окружает микросхему. Тем не менее, он был быстро дополнен добавлением дополнительных регистров сдвига для доступа к внутренним частям чипа, включая память.
Вы редко пользуетесь JTAG, доступ к нему обычно осуществляется через библиотеки, или драйверы, поставляемые производителем микросхемы и используемые тестовой системой и тестовым адаптером доступа.
источник
Есть то, что 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»). Любое из этих средств может быть использовано умными программистами для подачи сигналов, необходимых для перепрограммирования флеш-чипа в случае, если устройство случайно «замуровано».
источник