Є те, що 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"). Будь-який з цих засобів може бути використаний розумними програмістами для передачі сигналів, необхідних для перепрограмування флеш-мікросхеми у випадку, якщо пристрій випадково «замурований».