Що таке JTAG?


30

Я досить новачок у вбудованих системах, і я постійно бачу цей термін, який використовується, але не можу зрозуміти, що це таке. Швидкий пошук в Інтернеті дає цю сторінку Wikipedia: https://en.wikipedia.org/wiki/Joint_Test_Action_Group, яка описує це як своєрідний протокол для налагодження. Але в інших контекстах він використовувався так, як він здатний програмувати пам'ять чіпа, як програміст. Що це?


4
У цьому питанні приховано кілька корисних дорогоцінних каменів .
Девід

2
Я дав dwelch +1. Крім того, JTAG іноді неправильно використовується як значення дієслова, загалом, "для налагодження / перевірки" речі. Людина, що "JTAG'ing щось" може насправді використовувати інший протокол, який виробник пристрою перекривав фізичними шпильками JTAG (тобто SWD). Ви можете SWD або JTAG, але не обидва. Хоча ніхто не має своїх пристроїв ("дрова"?).
Джон

Так, ви можете програмувати з JTAG
Snoop

Відповіді:


21

Це як USB, SPI, I2C та інші "автобуси", і він має ряд популярних цілей використання, не обмежуючись:

  • Зокрема, це тестування кремнію перед тим, як надто багато вкладено у кожну частину, наприклад, поки чіп все ще є на вафлі, ви можете перевірити більшу частину. Дозволений набір вафлі може завдати шкоди, тому ви хочете протестувати ще раз, але, можливо, ви зробите це перед упаковкою, а може і після.

  • Ви можете використовувати його для сканування меж на дошках. Ви можете взяти плату на виробничій лінії (надана плата повинна бути спроектована правильно, і деякий відсоток мікросхем повинен підтримувати це), але ви можете робити тести на підключення з низькою швидкістю, стимулювати штифт на одному кінці траси і сканувати інші деталі, щоб побачити, що вони є або не пов'язані відповідно до конструкції дошки.

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

Це загальний спосіб, який дозволяє вам ізолювати речі в ланцюжку, до якого потрібно надіслати ряд біт або отримати серію бітів, таким чином, щоб кожна річ, з якою ви хочете поговорити, могла бути розроблена для різних номерів бітів від невеликої кількості до великої кількості. Для налагоджувача ви, природно, повинні записувати або читати з реєстру розміром у вашому чіпі - можливо, 16-бітний регістр або 32-бітний. Але для тестування кремнію або плати вашої ланцюга сканування може бути десятки біт. Кожна річ, яку ви звертаєте, може відрізнятися за розміром, якщо ви хочете, від будь-якої іншої речі, що робить це дуже універсальною шиною з відносно невеликою кількістю штифтів, привабливою для таких типів використання.

Можливо, через популярність налагодження програмного забезпечення у них зараз є кілька двох контактних рішень для економії на підрахунку контактів для мікроконтролерів, і, можливо, інші приймуть це, можливо, ні.


Чи існують технічні аспекти JTAG, які позичають це на використання, чи це лише з історичних причин?
Оуен

Добре читайте статтю у Вікіпедії. Моя думка, тому що він вже був там і з'єднаний з платами та мікросхемами, і тому, що він був досить гнучким для підтримки інших цілей використання, і принаймні деякі з них вже мали інструменти на місці, хтось, мабуть, сказав, чому б не використовувати його для цих інших речей. Я думаю, що його гнучкість проти підрахунку штифтів робить його дуже привабливим. Існують і продовжують бути іншими рішеннями для налагоджувачів або в програмуванні схем, але завдяки інструкціям FTDI MPSSE та успіху FTDI в цілому з усім USB, недорогими інструментами jtag зараз широко доступні.
old_timer

10

Спочатку JTAG був інтерфейсом, використовуваним для тестування друкованих плат після складання. Рядки IO на мікросхемах можна керувати та читати через порти JTAG, що дозволяє виконувати тестову послідовність плати. Пізніше його також почали використовувати як інтерфейс програмування та налагодження. Яка функціональність доступна через JTAG, залежатиме від конкретного ІМС, з яким ви маєте справу.

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


9

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

Пристрої в ланцюзі сканування, як правило, з'єднані у вигляді одного великого регістру зсуву, що складається з регістрів кожного окремого пристрою. Коли пристрої перебувають у стані SHIFT_IR або SHIFT_DR, вони підключаються до ланцюга сканування одного з двох тимчасових регістрів: Реєстр інструкцій та Реєстр даних.

Після зміщення значення режим UPDATE_IR або UPDATE_DR можна активувати, встановивши TMS відповідним чином під час переключення TCK. У цей момент значення, зміщене в регістр, "набуває чинності". Наприклад, переміщення різних послідовностей в ІЧ FPGA і перехід в UPDATE_IR призведе до того, що FPGA вводить різні режими, такі як конфігурація, перезавантаження, звичайний час виконання або доступ до конкретних реєстрів користувачів та специфічних для JTAG примітивів, створених у дизайні.

Точно так само стани захоплення можуть бути використані для "зчитування" значення з пристрою та введення його в ІЧ або ДР, щоб його змістити через TDO і в кінцевому рахунку прочитати програмістом JTAG.


4

JTAG визначає послідовний протокол та деякі команди, щоб дозволити доступ до внутрішніх регістрів всередині складних ІМС. Це дозволяє тестеру отримати стандартну можливість спостережливості та керованості за допомогою декількох штифтів.

Первісне використання було для "граничного сканування", де всі штифти вводу / виводу можна було прочитати та керувати великим регістром зсуву, який обводить мікросхему. Однак це було швидко розширено, щоб додати подальші регістри змін для доступу до внутрішніх даних мікросхеми, включаючи пам'ять.

Ви рідко дбаєте про JTAG, доступ зазвичай здійснюється через бібліотеки, відомі також драйвери, що постачаються виробником ІС та використовуються тестовою системою та адаптером тестового доступу.


Тож чип насправді повинен підтримувати JTAG як апаратним, так і програмним забезпеченням?
UnTraDe

@UnTraDe Ні, чіп підтримує JTAG як апаратне, так і програмне забезпечення (наприклад, FPGA може відкривати деякі інтерфейси між JTAG та користувальницьким дизайном), але не потрібно мати програмне забезпечення на мікросхемі. Інструменти, які використовувались для взаємодії з пристроями через JTAG, мали б як програмне забезпечення, так і апаратне забезпечення (програмне забезпечення на комп’ютері та апаратне забезпечення з точки зору програміста JTAG, приєднаного до цього комп'ютера)
ζ--

3

Є те, що JTAG означає «і є те, що є JTAG». Як зазначають інші, JTAG "- це" стандартний інтерфейс шини для тестування виробництва, як у J oint T est A ction G roup.

Що JTAG 'означає' для вбудованого розробника програмного забезпечення, це інтерфейс налагодження на SoC / мікропроцесорі для зовнішньої налагодження вбудованого програмного забезпечення, що працює на мікросхемі. Практично кожен процесор / SoC на ринку використовує інтерфейс JTAG не лише для виробничих тестів, але і для підтримки налагодження програмного забезпечення. Ви знайдете інтерфейс JTAG на всьому, від процесорних процесорів x86 сервера до домашніх WiFi-маршрутизаторів до 50 доларів. Завдяки правильному апаратному забезпеченню інтерфейсу та правильному програмному забезпеченню ці інтерфейси дозволять вам читати / записувати пам'ять, встановлювати точки перерви та однокроковий код.

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

Ви також запитали про використання JTAG для спалаху програми. Так, якесь програмне забезпечення також використовується для цієї мети. SoC може надавати засоби JTAG для читання / запису з адресних просторів пам'яті процесора, він може забезпечувати прямий доступ до флеш-контролерів, і як мінімум JTAG забезпечує необмежений доступ до контактів вводу-виводу на краю мікросхеми (це було первісне призначення JTAG, щоб забезпечити безперервне тестування взаємозв'язків мікросхем і мікросхем під час виготовлення тесту, тобто "сканування кордонів JTAG"). Будь-який з цих засобів може бути використаний розумними програмістами для передачі сигналів, необхідних для перепрограмування флеш-мікросхеми у випадку, якщо пристрій випадково «замурований».

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.