JTAG (nombre que proviene del Joint Test Action Group, el grupo que lo codificó) es un estándar de la industria para verificar los diseños y probar las placas de circuitos impresos después de su fabricación.
JTAG implementa estándares para la instrumentación en chip en la automatización del diseño electrónico (EDA) como una herramienta complementaria a la simulación digital . [ 1 ] Especifica el uso de un puerto de depuración dedicado que implementa una interfaz de comunicaciones seriales para un acceso de baja sobrecarga sin requerir acceso externo directo a los buses de direcciones y datos del sistema. La interfaz se conecta a un puerto de acceso de prueba (TAP) en chip que implementa un protocolo con estado para acceder a un conjunto de registros de prueba que presentan los niveles lógicos del chip y las capacidades del dispositivo de varias partes.
El Grupo Conjunto de Acción para Pruebas se formó en 1985 para desarrollar un método de verificación de diseños y pruebas de placas de circuitos impresos después de su fabricación. En 1990, el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) codificó los resultados de este esfuerzo en la norma IEEE 1149.1-1990, titulada Arquitectura estándar de puerto de acceso para pruebas y escaneo de límites .
Los estándares JTAG han sido ampliados por múltiples fabricantes de chips semiconductores con variantes especializadas para proporcionar características específicas del proveedor. [ 2 ]
Historia
En la década de 1980, las placas de circuitos impresos multicapa y los circuitos integrados (CI) que utilizaban matrices de rejilla de bolas y tecnologías de montaje similares se estaban convirtiendo en estándar, y se realizaban conexiones entre CI que no eran accesibles mediante sondas. La mayoría de los fallos de fabricación y de campo en las placas de circuitos impresos se debían a malas soldaduras , imperfecciones en las conexiones de la placa o a las uniones y los cables de conexión entre las almohadillas de los CI y los marcos de los pines. El Grupo Conjunto de Acción de Pruebas (JTAG) se formó en 1985 para proporcionar una vista de los pines entre las almohadillas de los CI y así poder detectar estos fallos.
El estándar de la industria se convirtió en un estándar IEEE en 1990 como IEEE Std. 1149.1-1990 [ 3 ] después de años de uso inicial. En el mismo año, Intel lanzó su primer procesador con JTAG (el 80486 ), lo que llevó a una adopción más rápida por parte de la industria por parte de todos los fabricantes. En 1994, se agregó un suplemento que contiene una descripción del lenguaje de descripción de escaneo de límites (BSDL). Se realizaron y publicaron en 2001 más refinamientos con respecto al uso de todos los ceros para EXTEST, separando el uso de SAMPLE de PRELOAD y una mejor implementación para las celdas OBSERVE_ONLY. [ 4 ] Desde 1990, este estándar ha sido adoptado por empresas de electrónica de todo el mundo. El escaneo de límites ahora es en su mayoría sinónimo de JTAG, pero JTAG tiene usos esenciales más allá de tales aplicaciones de fabricación. La revisión de 2013 [ 5 ] de IEEE Std. La versión 1149.1 ha introducido un amplio conjunto de características opcionales, extensiones asociadas a BSDL y un nuevo lenguaje de descripción de procedimientos (PDL) basado en Tcl .
Depuración
Aunque las primeras aplicaciones de JTAG se centraron en las pruebas a nivel de placa, el estándar JTAG se diseñó para facilitar las pruebas, el diagnóstico y el aislamiento de fallos en dispositivos, placas y sistemas. Actualmente, JTAG se utiliza como principal medio de acceso a los subbloques de los circuitos integrados , lo que lo convierte en un mecanismo esencial para la depuración de sistemas embebidos que podrían carecer de otro canal de comunicación con capacidad de depuración. En la mayoría de los sistemas, la depuración basada en JTAG está disponible desde la primera instrucción tras el reinicio de la CPU, lo que facilita el desarrollo de software de arranque inicial que se ejecuta antes de cualquier configuración. Un emulador en circuito (o, más correctamente, un adaptador JTAG ) utiliza JTAG como mecanismo de transporte para acceder a los módulos de depuración integrados en el chip de la CPU de destino . Estos módulos permiten a los desarrolladores de software depurar el software de un sistema embebido directamente a nivel de instrucciones de máquina cuando sea necesario, o (más comúnmente) en términos de código fuente en lenguaje de alto nivel.
Para muchos desarrolladores de software, la principal razón para interesarse en JTAG es la compatibilidad con la depuración de software del sistema. Múltiples arquitecturas de silicio, como PowerPC, MIPS, ARM y x86, construyeron una infraestructura completa de depuración de software, rastreo de instrucciones y rastreo de datos en torno al protocolo JTAG básico. Sin embargo, con frecuencia, los fabricantes de silicio solo implementan partes de estas extensiones. Algunos ejemplos son ARM CoreSight y Nexus , así como las implementaciones de Intel BTS (Branch Trace Storage), LBR (Last Branch Record) e IPT (Intel Processor Trace). Existen otras extensiones específicas de fabricantes de silicio que pueden no estar documentadas, salvo bajo un acuerdo de confidencialidad . La adopción del estándar JTAG ayudó a alejar los entornos de depuración centrados en JTAG de los primeros diseños específicos de procesadores. Los procesadores normalmente se pueden detener, ejecutar paso a paso o dejar que se ejecuten libremente. Se pueden establecer puntos de interrupción de código, tanto para el código en RAM (a menudo usando una instrucción de máquina especial, por ejemplo, INT3 ) como en ROM/flash. Los puntos de interrupción de datos suelen estar disponibles, al igual que la descarga masiva de datos a la RAM. La mayoría de los diseños cuentan con depuración en modo de parada , pero algunos permiten que los depuradores accedan a los registros y buses de datos sin necesidad de detener el núcleo que se está depurando. Algunas cadenas de herramientas pueden usar módulos ARM Embedded Trace Macrocell (ETM), o implementaciones equivalentes en otras arquitecturas, para activar la actividad del depurador (o rastreo) en eventos de hardware complejos, como un analizador lógico programado para ignorar los primeros siete accesos a un registro desde una subrutina en particular.
En ocasiones, los desarrolladores de FPGA también utilizan JTAG para desarrollar herramientas de depuración. [ 6 ] Las mismas técnicas JTAG empleadas para depurar software que se ejecuta dentro de una CPU pueden ayudar a depurar otros bloques de diseño digital dentro de una FPGA. Por ejemplo, se pueden proporcionar instrucciones JTAG personalizadas para permitir la lectura de registros construidos a partir de conjuntos arbitrarios de señales dentro de la FPGA, lo que proporciona visibilidad de comportamientos que son invisibles para las operaciones de escaneo de límites. De manera similar, la escritura de dichos registros podría proporcionar un control que de otro modo no estaría disponible.
Almacenamiento del firmware
JTAG permite que el hardware del programador de dispositivos transfiera datos a la memoria interna no volátil del dispositivo (por ejemplo, CPLD ). Algunos programadores de dispositivos cumplen una doble función: programar y depurar el dispositivo. En el caso de las FPGA, los dispositivos de memoria volátil también se pueden programar a través del puerto JTAG, normalmente durante el desarrollo. Además, se puede acceder a las funciones de monitorización interna (temperatura, voltaje y corriente) a través del puerto JTAG.
Los programadores JTAG también se utilizan para escribir software y datos en la memoria flash . Esto se suele hacer mediante el mismo acceso al bus de datos que usaría la CPU, y a veces la CPU se encarga de ello. En otros casos, los propios chips de memoria disponen de interfaces JTAG. Algunas arquitecturas de depuración modernas proporcionan acceso al bus maestro interno y externo sin necesidad de detener y tomar el control de la CPU. En el peor de los casos, suele ser posible controlar señales de bus externas mediante la función de escaneo de límites.
En la práctica, al desarrollar un sistema embebido, emular el almacén de instrucciones es la forma más rápida de implementar el ciclo de depuración (editar, compilar, descargar, probar y depurar). Esto se debe a que el emulador en circuito que simula el almacén de instrucciones se puede actualizar muy rápidamente desde el host de desarrollo, por ejemplo, mediante USB. Usar un puerto UART serie y un gestor de arranque para cargar el firmware en la memoria Flash hace que este ciclo de depuración sea bastante lento y posiblemente costoso en términos de herramientas; instalar el firmware en la memoria Flash (o en la SRAM en lugar de la Flash) mediante JTAG es una solución intermedia entre estos extremos.
Pruebas de escaneo de límites
La tecnología de escaneo de límites JTAG permite acceder a diversas señales lógicas de un circuito integrado complejo, incluyendo los pines del dispositivo. Estas señales se representan en el registro de escaneo de límites (BSR), accesible a través del TAP. Esto posibilita realizar pruebas y controlar el estado de las señales para la depuración. De esta forma, se pueden localizar fallos tanto de software como de hardware (fabricación) y monitorizar el funcionamiento del dispositivo.
En combinación con la autocomprobación integrada ( BIST ), la cadena de escaneo JTAG permite una solución integrada de bajo consumo de recursos para probar un circuito integrado en busca de ciertas fallas estáticas (cortocircuitos, circuitos abiertos y errores lógicos). El mecanismo de la cadena de escaneo generalmente no ayuda a diagnosticar ni a probar errores de temporización, temperatura u otros errores operativos dinámicos que puedan ocurrir. Los casos de prueba suelen proporcionarse en formatos estandarizados como SVF o su equivalente binario XSVF, y se utilizan en pruebas de producción. La capacidad de realizar dichas pruebas en placas terminadas es una parte esencial del diseño para pruebas en los productos actuales, lo que aumenta la cantidad de fallas que se pueden encontrar antes de que los productos se envíen a los clientes.
Características eléctricas
Una interfaz JTAG es una interfaz especial que se agrega a un chip. Según la versión de JTAG, se agregan dos, cuatro o cinco pines. Las interfaces de cuatro y cinco pines están diseñadas para que varios chips en una placa puedan tener sus líneas JTAG conectadas en cadena si se cumplen ciertas condiciones. [ 7 ] La interfaz de dos pines está diseñada para que varios chips puedan conectarse en una topología de estrella . En ambos casos, una sonda de prueba solo necesita conectarse a un único puerto JTAG para tener acceso a todos los chips en una placa de circuito .
JTAG en cadena (IEEE 1149.1)

Los pines del conector son:
- TDI (Datos de prueba de entrada)
- TDO (Datos de prueba de salida)
- TCK (Reloj de prueba)
- TMS (Selección de modo de prueba)
- TRST (Prueba de reinicio) opcional.
El pin TRST es un reinicio opcional de nivel bajo para la lógica de prueba, generalmente asíncrono, pero a veces síncrono, según el chip. Si el pin no está disponible, la lógica de prueba se puede reiniciar cambiando al estado de reinicio de forma síncrona, usando TCK y TMS. Tenga en cuenta que reiniciar la lógica de prueba no implica necesariamente reiniciar nada más. Generalmente existen algunas operaciones JTAG específicas del procesador que pueden reiniciar la totalidad o parte del chip que se está depurando.
Dado que solo hay una línea de datos disponible, el protocolo es serial . La entrada de reloj se encuentra en el pin TCK. Se transfiere un bit de datos desde TDI hacia TDO por cada flanco ascendente del reloj TCK. Se pueden cargar diferentes instrucciones. Las instrucciones para circuitos integrados típicos pueden leer la identificación del chip, muestrear los pines de entrada, controlar (o poner en punto flotante) los pines de salida, manipular las funciones del chip o realizar un bypass (enrutar TDI a TDO para acortar lógicamente las cadenas de varios chips).
Como ocurre con cualquier señal síncrona, los datos presentados a TDI deben ser válidos durante un tiempo de configuración específico del chip, antes y después del flanco ascendente del reloj correspondiente. Los datos de TDO son válidos durante un tiempo específico del chip después del flanco descendente de TCK.
La frecuencia máxima de operación de TCK varía según todos los chips en la cadena (debe usarse la velocidad más baja), pero normalmente es de 10 a 100 MHz (100 a 10 ns por bit). Además, las frecuencias de TCK dependen del diseño de la placa y de las capacidades y el estado del adaptador JTAG. Un chip puede tener un reloj JTAG de 40 MHz, pero solo si está usando un reloj de 200 MHz para operaciones que no son JTAG; y puede necesitar usar un reloj mucho más lento cuando está en modo de bajo consumo. Por consiguiente, algunos adaptadores JTAG tienen sincronización adaptativa mediante una señal RTCK (Return TCK). Las frecuencias de TCK más rápidas son más útiles cuando JTAG se usa para transferir grandes cantidades de datos, como cuando se almacena un ejecutable de programa en la memoria flash .
Los cambios de reloj en los pasos de TMS se realizan mediante una máquina de estados JTAG estandarizada . La máquina de estados JTAG puede reiniciarse, acceder a un registro de instrucciones o acceder a datos seleccionados por dicho registro.
Las plataformas JTAG suelen añadir señales a las pocas definidas por la especificación IEEE 1149.1. Una señal de reinicio del sistema (SRST) es bastante común, ya que permite a los depuradores reiniciar todo el sistema, no solo las partes compatibles con JTAG. En ocasiones, se utilizan señales de eventos para activar la actividad del host o del dispositivo monitorizado mediante JTAG, o bien, líneas de control adicionales.
Aunque pocos productos de consumo incluyen un conector de puerto JTAG explícito, estas conexiones suelen estar disponibles en la placa de circuito impreso como remanente de la fase de prototipado o producción. Cuando se aprovechan, estas conexiones suelen ser la vía más viable para la ingeniería inversa .
JTAG con número reducido de pines (IEEE 1149.7)

El JTAG con número reducido de pines utiliza solo dos cables: uno de reloj y otro de datos. Esto se define como parte del estándar IEEE 1149.7. [ 8 ] Los pines del conector son:
- TMSC (Datos de serie de prueba)
- TCK (Reloj de prueba)
Se denomina cJTAG, por JTAG compacto.
La interfaz de dos hilos redujo la presión sobre el número de pines, y los dispositivos se pueden conectar en una topología de estrella . [ 9 ] La topología de estrella permite apagar algunas partes del sistema, mientras que otras siguen siendo accesibles a través de JTAG; una conexión en cadena requiere que todas las interfaces JTAG estén alimentadas. Existen otras interfaces de dos hilos, como Serial Wire Debug (SWD) y Spy-Bi-Wire (SBW).
Modelo de comunicaciones
En JTAG, los dispositivos exponen uno o más puertos de acceso de prueba (TAP). La imagen superior muestra tres TAP, que pueden ser chips individuales o módulos dentro de un mismo chip. Una cadena de TAP se denomina cadena de escaneo o, en términos generales, objetivo. Las cadenas de escaneo pueden tener una longitud arbitraria, pero en la práctica, veinte TAP constituyen una longitud inusual.
Para usar JTAG, el host se conecta a las señales JTAG del dispositivo de destino (TMS, TCK, TDI, TDO, etc.) mediante un adaptador JTAG , que puede requerir la gestión de problemas como el cambio de nivel y el aislamiento galvánico . El adaptador se conecta al host mediante una interfaz como USB, PCI, Ethernet, etc.
Primitivos
El host se comunica con los TAP manipulando TMS y TDI junto con TCK y leyendo los resultados a través de TDO (que es la única entrada estándar del lado del host). Las transiciones de salida TMS/TDI/TCK crean la primitiva básica de comunicación JTAG sobre la cual se construyen los protocolos de capa superior:
- Cambio de estado ... Todos los TAP están en el mismo estado, y este cambia con las transiciones de TCK. Esta máquina de estados JTAG forma parte de la especificación JTAG e incluye dieciséis estados. Hay seis estados estables donde mantener TMS estable impide que el estado cambie. En todos los demás estados, TCK siempre cambia dicho estado. Además, activar TRST fuerza la entrada a uno de esos estados estables (Test_Logic_Reset), de una manera ligeramente más rápida que la alternativa de mantener TMS en alto y ciclar TCK cinco veces.
- Desplazamiento ... La mayoría de las partes de la máquina de estados JTAG admiten dos estados estables que se utilizan para transferir datos. Cada TAP tiene un registro de instrucciones (IR) y un registro de datos (DR). El tamaño de estos registros varía entre los TAP, y se combinan mediante TDI y TDO para formar un registro de desplazamiento grande. (El tamaño del DR es una función del valor del IR actual de ese TAP y, posiblemente, del valor especificado por una instrucción SCAN_N). Hay tres operaciones definidas en ese registro de desplazamiento:
- Capturar un valor temporal
- El acceso al estado estable Shift_IR se produce a través del estado Capture_IR, cargando el registro de desplazamiento con un valor parcialmente fijo (no la instrucción actual).
- El acceso al estado estable Shift_DR se realiza a través del estado Capture_DR, cargando el valor del registro de datos especificado por el IR actual del TAP.
- Al cambiar ese valor bit a bit, ya sea en el estado estable Shift_IR o Shift_DR, las transiciones TCK desplazan el registro de desplazamiento un bit, de TDI hacia TDO, exactamente como una transferencia de datos SPI en modo 1 a través de una cadena de dispositivos (con TMS=0 actuando como la señal de selección de chip, TDI como MOSI, etc.).
- Se actualiza IR o DR a partir del valor temporal introducido al pasar por el estado Update_IR o Update_DR. Cabe destacar que no es posible leer (capturar) un registro sin escribir (actualizar) en él, ni viceversa. Una práctica común consiste en añadir bits de bandera para indicar si la actualización debe tener efectos secundarios o si el hardware está preparado para ejecutarlos.
- Capturar un valor temporal
- En ejecución ... Un estado estable se denomina Run_Test/Idle. La distinción depende del TAP. La activación de TCK en el estado Idle no tiene efectos secundarios particulares, pero su activación en el estado Run_Test puede modificar el estado del sistema. Por ejemplo, algunos núcleos ARM9 admiten un modo de depuración en el que los ciclos de TCK en el estado Run_Test controlan la canalización de instrucciones.
En su nivel básico, el uso de JTAG implica leer y escribir instrucciones y sus registros de datos asociados, y a veces requiere ejecutar varios ciclos de prueba. Detrás de esos registros hay hardware que no está especificado por JTAG y que tiene sus propios estados, los cuales se ven afectados por las actividades de JTAG.
La mayoría de los hosts JTAG utilizan la ruta más corta entre dos estados, posiblemente limitada por peculiaridades del adaptador. (Por ejemplo, un adaptador solo maneja rutas cuyas longitudes son múltiplos de siete bits). Algunas capas construidas sobre JTAG monitorean las transiciones de estado y utilizan rutas no comunes para activar operaciones de nivel superior. Algunos núcleos ARM utilizan dichas secuencias para entrar y salir de un modo SWD de dos hilos (no JTAG) . Una secuencia de escaneo de cero bits (ZBS) se utiliza en IEEE 1149.7 [ 8 ] para acceder a funcionalidades avanzadas como la conmutación de TAP dentro y fuera de cadenas de escaneo, administración de energía y un modo de dos hilos diferente.
Instrucciones JTAG IEEE Std 1149.1 (exploración de límites)
Los tamaños de los registros de instrucciones suelen ser pequeños, de cuatro o siete bits. Excepto para BYPASS y EXTEST, todos los códigos de operación de las instrucciones son definidos por el implementador de TAP, al igual que sus registros de datos asociados; no se deben usar códigos de instrucción no definidos. Dos instrucciones clave son:
- La instrucción BYPASS, un código de operación compuesto únicamente por unos, independientemente del tamaño del registro de instrucciones del TAP, debe ser compatible con todos los TAP. Esta instrucción selecciona un registro de datos de un solo bit (también llamado BYPASS). Permite omitir este dispositivo (no realizar ninguna acción) mientras se procesan otros dispositivos en la ruta de exploración. [ 4 ]
- La instrucción opcional IDCODE, con un código de operación definido por el implementador, se asocia a un registro de 32 bits (IDCODE). Sus datos utilizan un formato estandarizado que incluye un código de fabricante (derivado del estándar JEDEC JEP-106), un número de pieza asignado por el fabricante y un código de versión de la pieza. IDCODE cuenta con un amplio soporte, aunque no universal.
Al salir del estado RESET, el registro de instrucciones se precarga con BYPASS o IDCODE. Esto permite a los hosts JTAG identificar el tamaño y, al menos parcialmente, el contenido de la cadena de escaneo a la que están conectados. (Pueden entrar en el estado RESET y luego escanear el Registro de Datos hasta que lean los datos que escribieron. Un registro BYPASS solo tiene un bit cero, mientras que un registro IDCODE tiene 32 bits y comienza con un uno. Por lo tanto, los bits no escritos por el host se pueden asignar fácilmente a TAPs). Esta identificación se usa a menudo para verificar la configuración manual, ya que IDCODE suele ser poco específico. Podría, por ejemplo, identificar un microcontrolador basado en ARM Cortex-M3, sin especificar el fabricante o el modelo del microcontrolador; o una FPGA en particular, pero no cómo se ha programado.
Una técnica común consiste en asignar la instrucción BYPASS a los registros de instrucciones de todos los TAP excepto uno, que recibe otra instrucción. De esta forma, todos los TAP, excepto uno, exponen un registro de datos de un solo bit, y los valores pueden asignarse o retirarse selectivamente del registro de datos de ese TAP sin afectar a ningún otro.
El estándar IEEE 1149.1 (JTAG) describe una serie de instrucciones para admitir aplicaciones de escaneo de límites. Algunas de estas instrucciones son obligatorias , pero los TAP utilizados para depuración en lugar de pruebas de escaneo de límites a veces ofrecen un soporte mínimo o nulo para estas instrucciones. Dichas instrucciones obligatorias operan sobre el Registro de Escaneo de Límites (BSR) definido en el archivo BSDL e incluyen:
- EXTEST para pruebas externas, como el uso de pines para sondear el comportamiento a nivel de placa.
- PRELOAD carga los valores de salida del pin antes de EXTEST (a veces combinado con SAMPLE)
- Lectura de MUESTRA de los valores de los pines en el registro de escaneo de límites
Las instrucciones opcionales definidas por IEEE incluyen:
- CLAMP es una variante de BYPASS que controla los pines de salida utilizando los valores precargados.
- HIGHZ desactiva las salidas de todos los pines.
- INTEST para pruebas internas, como el uso de pines para sondear el comportamiento en el chip.
- RUNBIST pone el chip en modo de autodiagnóstico.
- USERCODE devuelve un código definido por el usuario, por ejemplo, para identificar qué imagen FPGA está activa.
Los dispositivos pueden definir instrucciones adicionales, y dichas definiciones deben formar parte de un archivo BSDL proporcionado por el fabricante. A menudo, solo se marcan como PRIVADAS.
Registro de escaneo de límites
Los dispositivos se comunican con el mundo a través de un conjunto de pines de entrada y salida. Por sí solos, estos pines ofrecen una visibilidad limitada del funcionamiento del dispositivo. Sin embargo, los dispositivos que admiten el escaneo de límites contienen una celda de registro de desplazamiento para cada pin de señal. Estos registros están conectados en una ruta dedicada alrededor del límite del dispositivo (de ahí su nombre). Esta ruta crea una capacidad de acceso virtual que evita las entradas y salidas normales, proporcionando un control directo del dispositivo y una visibilidad detallada de las señales. [ 10 ]
El contenido del registro de escaneo de límites, incluidas las capacidades de entrada/salida de señal, suele estar descrito por el fabricante mediante un archivo BSDL específico del componente . Estos archivos se utilizan con las listas de conexiones de diseño de los sistemas CAD/EDA para desarrollar pruebas empleadas en la fabricación de placas. Los sistemas de prueba comerciales suelen costar varios miles de dólares por un sistema completo e incluyen opciones de diagnóstico para identificar fallos como circuitos abiertos y cortocircuitos. También pueden ofrecer visualizadores de esquemas o diseños para representar gráficamente el fallo.
Para habilitar el escaneo de límites, los fabricantes de circuitos integrados añaden lógica a cada uno de sus dispositivos, incluyendo celdas de escaneo para cada pin de señal. Estas celdas se conectan entre sí para formar el registro de desplazamiento de escaneo de límites (BSR), que a su vez se conecta a un controlador TAP. Estos diseños forman parte de la mayoría de las bibliotecas Verilog o VHDL. La sobrecarga de esta lógica adicional es mínima y, por lo general, compensa con creces el coste para permitir pruebas eficientes a nivel de placa.
Ejemplo: TAP de depuración ARM11
Un ejemplo ilustra el funcionamiento de JTAG en sistemas reales. El ejemplo que se muestra aquí es el TAP de depuración de un procesador ARM11 , el núcleo ARM1136 [ 11 ] . El procesador en sí cuenta con una amplia capacidad JTAG, similar a la que se encuentra en otros núcleos de CPU, y está integrado en chips con capacidades aún más extensas a las que se accede mediante JTAG.
Este es un ejemplo significativo, representativo de una amplia gama de sistemas compatibles con JTAG. Además, muestra cómo se construyen los mecanismos de control utilizando las primitivas de lectura/escritura de registros de JTAG y cómo se combinan para facilitar las pruebas y la depuración de elementos lógicos complejos. Si bien las CPU son comunes, las FPGA y los ASIC incluyen otros elementos complejos que requieren depuración.
Los licenciatarios de este núcleo lo integran en chips, generalmente combinándolo con otros TAP, así como con numerosos periféricos y memoria. Uno de esos otros TAP se encarga de las pruebas de escaneo de límites para todo el chip; esta función no es compatible con el TAP de depuración. Algunos ejemplos de estos chips son:
- El OMAP2420 , que incluye un TAP de escaneo de límites, el TAP de depuración ARM1136, un TAP de búfer de traza ETB11, un DSP C55x y un TAP para un motor de imágenes basado en TDMI ARM7 , con el TAP de escaneo de límites ("ICEpick-B") que tiene la capacidad de empalmar TAPs dentro y fuera de la cadena de escaneo JTAG. [ 12 ]
- El procesador i.MX31 , que es similar, aunque su TAP de escaneo de límites "System JTAG" [ 13 ] es muy diferente de ICEpick, e incluye un TAP para su motor DMA en lugar de un motor DSP y de imágenes.
Estos procesadores están diseñados para usarse en terminales inalámbricos como teléfonos celulares, razón por la cual incluyen controladores TAP que modifican la cadena de escaneo JTAG: la depuración del funcionamiento de bajo consumo requiere acceder a los chips cuando están prácticamente apagados y, por lo tanto, cuando no todos los TAP están operativos. Esta modificación de la cadena de escaneo es uno de los temas de la próxima norma IEEE 1149.7 [ 8 ] .
Instalaciones JTAG
Este TAP de depuración expone varias instrucciones estándar y algunas diseñadas específicamente para la depuración asistida por hardware , donde una herramienta de software (el depurador) utiliza JTAG para comunicarse con un sistema que se está depurando:
BYPASSyIDCODElas instrucciones estándar descritas anteriormenteEXTEST,INTEST, instrucciones estándar, pero operando en el núcleo en lugar de una cadena de exploración de límites externos.EXTESTes nominalmente para escribir datos en el núcleo,INTESTes nominalmente para leerlos; pero dos cadenas de exploración son excepciones a esa regla.SCAN_NInstrucción ARM para seleccionar la cadena de exploración numerada utilizada conEXTESToINTEST. Hay seis cadenas de exploración:0- Registro de ID del dispositivo, 40 bits de datos de identificación de solo lectura1- Registro de control y estado de depuración (DSCR), 32 bits, utilizado para operar las funciones de depuración.4- Registro de transferencia de instrucciones (ITR), de 33 bits (32 instrucciones más un bit de estado), utilizado para ejecutar instrucciones del procesador en un modo de depuración especial (véase más abajo).5- Canal de comunicaciones de depuración (DCC), de 34 bits (una palabra de datos larga más dos bits de estado), utilizado para la transferencia bidireccional de datos al núcleo. Se utiliza tanto en modo de depuración como, posiblemente, en tiempo de ejecución al comunicarse con software compatible con el depurador.6- Módulo de rastreo integrado (ETM), de 40 bits (dirección de 7 bits, una palabra de datos de 32 bits y un bit de lectura/escritura) utilizado para controlar el funcionamiento de un mecanismo pasivo de rastreo de instrucciones y datos. Este alimenta un búfer de rastreo integrado (ETB) en el chip o un módulo externo de recopilación de datos de rastreo de alta velocidad. El rastreo admite la depuración pasiva (examen del historial de ejecución) y la creación de perfiles para la optimización del rendimiento.7- Módulo de depuración, 40 bits (dirección de 7 bits, una palabra de datos de 32 bits y un bit de lectura/escritura) utilizado para acceder a puntos de interrupción, puntos de observación y más. Estos se pueden escribir mientras el procesador está en funcionamiento; no es necesario que esté en modo de depuración.
HALTyRESTART, instrucciones específicas de ARM11 para detener y reiniciar la CPU. Al detenerla, el núcleo entra en modo de depuración , donde se puede usar el ITR para ejecutar instrucciones, incluyendo el uso del DCC para transferir datos entre el host de depuración (JTAG) y la CPU.ITRSEL, instrucción específica de ARM11 para acelerar algunas operaciones con ITR.
Ese modelo se asemeja al utilizado en otros núcleos ARM. Los sistemas que no son ARM generalmente tienen capacidades similares, posiblemente implementadas mediante los protocolos Nexus sobre JTAG u otros esquemas específicos del fabricante.
Los núcleos ARM7 y ARM9 más antiguos incluyen un módulo EmbeddedICE [ 14 ] que combina la mayoría de esas funcionalidades, pero tiene un mecanismo engorroso para la ejecución de instrucciones: el depurador debe controlar la canalización de instrucciones de la CPU, ciclo a ciclo, y acceder directamente a los buses de datos para leer y escribir datos en la CPU. El ARM11 utiliza el mismo modelo para la compatibilidad con trazas (ETM, ETB) que esos núcleos más antiguos.
Los núcleos ARM Cortex más recientes se asemejan mucho a este modelo de depuración, pero se basan en un puerto de acceso de depuración (DAP) en lugar de acceso directo a la CPU. En esta arquitectura (denominada tecnología CoreSight ), el núcleo y el módulo JTAG son completamente independientes. También están desacoplados de JTAG para que puedan alojarse a través de la interfaz SWD de dos hilos de ARM (ver más abajo) en lugar de solo la interfaz JTAG de seis hilos. (ARM toma las cuatro señales JTAG estándar y agrega la señal TRST opcional, más la señal RTCK utilizada para la sincronización adaptativa). El CoreSight JTAG-DP es asíncrono a los relojes del núcleo y no implementa RTCK. [ 15 ] Además, los núcleos más recientes tienen soporte de rastreo actualizado.
Depuración en modo detenido
Una forma básica de depurar software es mediante un modelo de un solo hilo, donde el depurador detiene periódicamente la ejecución del programa y examina su estado a través del contenido de los registros y la memoria (incluidos los registros del controlador de periféricos). Cuando se aproximan eventos de interés en el programa, puede ser conveniente ejecutar las instrucciones (o líneas de código fuente) paso a paso para observar cómo se produce un comportamiento anómalo en particular.
Por ejemplo, un host JTAG podría detener el núcleo, entrar en modo de depuración y leer los registros de la CPU mediante ITR y DCC. Tras guardar el estado del procesador, podría escribir en esos registros los valores necesarios y ejecutar algoritmos arbitrarios en la CPU, accediendo a la memoria y a los periféricos para caracterizar el estado del sistema. Una vez que el depurador realiza estas operaciones, el estado se puede restaurar y la ejecución puede continuar mediante la instrucción RESTART.
El modo de depuración también se activa de forma asíncrona mediante el módulo de depuración, activando un punto de observación o un punto de interrupción, o emitiendo una instrucción BKPT (punto de interrupción) desde el software que se está depurando. Cuando no se utiliza para el seguimiento de instrucciones, el ETM también puede activar la entrada al modo de depuración; admite activadores complejos sensibles al estado y al historial, así como las comparaciones de direcciones simples expuestas por el módulo de depuración. Las transiciones asíncronas al modo de depuración se detectan sondeando el registro DSCR. Así es como se implementa el paso a paso: DETENGA el núcleo, establezca un punto de interrupción temporal en la siguiente instrucción o en la siguiente instrucción de alto nivel, REINICIE, sondee DSCR hasta que detecte la entrada asíncrona al estado de depuración, elimine ese punto de interrupción temporal, repita.
Depuración en modo monitor
El software moderno suele ser demasiado complejo para funcionar correctamente con un modelo de un solo hilo. Por ejemplo, un procesador utilizado para controlar un motor (quizás el que acciona una sierra) podría no ser capaz de entrar en modo de parada de forma segura; podría necesitar seguir gestionando interrupciones para garantizar la seguridad física de las personas y/o la maquinaria. Emitir una instrucción HALT mediante JTAG podría ser peligroso.
Los procesadores ARM admiten un modo de depuración alternativo, denominado Modo Monitor , para gestionar este tipo de situaciones. (Este modo es distinto del Modo Monitor Seguro, implementado como parte de las extensiones de seguridad en los núcleos ARM más recientes; gestiona las operaciones de depuración, no las transiciones de seguridad). En estos casos, los puntos de interrupción y los puntos de observación activan un tipo especial de excepción de hardware, transfiriendo el control a un monitor de depuración que se ejecuta como parte del software del sistema. Este monitor se comunica con el depurador mediante el DCC y puede, por ejemplo, ejecutar paso a paso un solo proceso mientras otros procesos (y los manejadores de interrupciones) continúan en ejecución.
Extensiones comunes
Los fabricantes de microprocesadores suelen definir sus propias extensiones de depuración específicas para cada núcleo. Entre ellos se incluyen Infineon , MIPS con EJTAG, entre otros. Si el fabricante no adopta un estándar (como los utilizados por los procesadores ARM o Nexus), debe definir su propia solución. Si admite el escaneo de límites, generalmente implementa la depuración a través de JTAG.
Freescale cuenta con COP y OnCE (Emulación en Chip). OnCE incluye un comando JTAG que hace que un TAP entre en un modo especial donde el IR almacena comandos de depuración OnCE [ 16 ] para operaciones como ejecución paso a paso, puntos de interrupción y acceso a registros o memoria. También define EOnCE (Emulación en Chip Mejorada) [ 17 ], que se presenta como una solución para abordar las necesidades en tiempo real.
ARM cuenta con una extensa arquitectura de depuración de núcleos de procesador (CoreSight) que comenzó con EmbeddedICE (una herramienta de depuración disponible en la mayoría de los núcleos ARM) y ahora incluye varios componentes adicionales, como una ETM (Embedded Trace Macrocell), con un puerto de rastreo de alta velocidad que admite el rastreo multinúcleo y multihilo. Cabe destacar que el rastreo no es invasivo; los sistemas no necesitan detenerse para ser rastreados. (Sin embargo, los datos de rastreo son demasiado voluminosos para utilizar JTAG como algo más que un canal de control de rastreo).
Nexus define una infraestructura de depuración de procesadores que es en gran medida independiente del fabricante. Una de sus interfaces de hardware es JTAG. También define una interfaz de puerto auxiliar de alta velocidad, utilizada para el rastreo y otras funciones. Nexus se utiliza con algunas plataformas más recientes, como los procesadores Atmel AVR32 y Freescale MPC5500.
Usos
- Salvo en algunos de los sistemas de gama más baja, prácticamente todas las plataformas de sistemas embebidos disponen de un puerto JTAG para admitir la depuración en circuito y la programación del firmware, así como para las pruebas de escaneo de límites:
- Los procesadores con arquitectura ARM incluyen compatibilidad con JTAG, y en ocasiones admiten una variante SWD de dos cables o el seguimiento de alta velocidad del tráfico en los buses de instrucciones o de datos.
- Los microcontroladores modernos de 8 y 16 bits , como los Atmel AVR y los TI MSP430 , admiten programación y depuración JTAG. Sin embargo, los chips más pequeños pueden no tener suficientes pines disponibles (y, por lo tanto, suelen depender de interfaces de programación de un solo cable propietarias); si el número de pines supera los 32, probablemente exista una opción JTAG.
- Casi todos los FPGA y CPLD que se utilizan hoy en día se pueden programar a través de un puerto JTAG. El estándar JEDEC JESD-71 define un lenguaje de prueba y programación estándar para la programación JTAG de PLD.
- Varios procesadores MIPS y PowerPC cuentan con soporte JTAG.
- Los procesadores Intel Core, Xeon, Atom y Quark son compatibles con el modo de sondeo JTAG, con extensiones específicas de Intel que utilizan el puerto de depuración extendido (XDP) de 60 pines. Además, el procesador Quark admite conectores más tradicionales de 10 pines.
- Los productos de consumo, como los dispositivos de red y los receptores/decodificadores integrados de televisión por satélite, suelen utilizar microprocesadores compatibles con JTAG, lo que proporciona un medio alternativo para recargar el firmware si el gestor de arranque existente se ha dañado de alguna manera.
- El estándar del conector de bus PCI contiene señales JTAG opcionales en los pines 1 a 5; [ 18 ] PCI Express contiene señales JTAG en los pines 5 a 9. [ 19 ] Se puede utilizar una tarjeta JTAG especial para reprogramar una BIOS corrupta .
- Las aplicaciones de prueba de escaneo de límites y programación en el sistema (dispositivo) a veces se programan utilizando el formato vectorial serie , una representación textual de las operaciones JTAG con una sintaxis sencilla. Otros formatos de programación incluyen 'JAM' y STAPL, además del formato 'ISC' (abreviatura de In-System Configuration), definido más recientemente por la norma IEEE Std. 1532. El formato ISC se utiliza junto con modelos BSDL mejorados para dispositivos lógicos programables (es decir, FPGA y CPLD) que incluyen instrucciones ISC_<operación> adicionales, además de las instrucciones básicas mínimas de la norma IEEE 1149.1. Las herramientas de programación de FPGA de Xilinx , Altera, Lattice, Cypress, Actel, etc., suelen poder exportar dichos archivos.
- Como ya se ha mencionado, varias placas incluyen conectores JTAG, o simplemente almohadillas, para dar soporte a las operaciones de fabricación, donde las pruebas de escaneo de límites ayudan a verificar la calidad de la placa (identificando uniones de soldadura defectuosas, etc.) y a inicializar la memoria flash o los FPGA.
- JTAG también puede brindar soporte para actualizaciones y solución de problemas en campo.
Soporte al cliente
Se accede a la interfaz JTAG del dispositivo objetivo mediante una aplicación compatible con JTAG y un adaptador JTAG. Existe una amplia gama de este tipo de hardware, optimizado para fines como pruebas de producción, depuración de sistemas de alta velocidad, desarrollo de microcontroladores de bajo coste, etc. Del mismo modo, el software utilizado para controlar dicho hardware puede ser muy variado. Los desarrolladores de software suelen usar JTAG para depurar y actualizar el firmware.
Conectores


No existen estándares oficiales para los conectores físicos de los adaptadores JTAG. Las placas de desarrollo suelen incluir un conector para admitir las herramientas de desarrollo preferidas; en algunos casos, incluyen varios conectores para admitir diversas herramientas. Por ejemplo, un microcontrolador, una FPGA y un procesador de aplicaciones ARM rara vez comparten herramientas, por lo que una placa de desarrollo que utilice todos estos componentes podría tener tres o más conectores. Las placas de producción pueden omitir los conectores o, cuando el espacio es limitado, proporcionar acceso a la señal JTAG mediante puntos de prueba.
Algunas configuraciones de pines comunes [ 20 ] para conectores de pines de 2,54 mm (0,100 pulgadas) son:
- ARM de 2×10 pines (o a veces el antiguo de 2×7), utilizado por casi todos los sistemas basados en ARM.
- MIPS EJTAG (2×7 pines) utilizado para sistemas basados en MIPS
- JTAG de 2×5 pines compatible con Altera ByteBlaster, ampliado por múltiples proveedores.
- El microcontrolador AVR de 2×5 pines amplía la funcionalidad JTAG de Altera con SRST (y en algunos casos TRST y una salida de eventos).
- Conector de 2×7 pines de Texas Instruments utilizado con DSP y productos basados en ARM como OMAP.
- Conector JTAG genérico de 8 pines (fila única) compatible con múltiples cables Lattice ispDOWNLOAD
- Conectores MIPI 10/20 (1,27 mm 050") para JTAG, cJTAG y SWD.
Estos conectores suelen incluir más que las cuatro señales estandarizadas (TMS, TCK, TDI, TDO). Generalmente, proporcionan señales de reinicio, una o ambas de TRST (reinicio TAP) y SRST (reinicio del sistema). El conector suele proporcionar la tensión de alimentación lógica de la placa bajo prueba para que los adaptadores JTAG utilicen los niveles lógicos adecuados . La tensión de la placa también puede servir como entrada de depuración para la detección de la placa . Se pueden proporcionar otras señales de entrada o salida de eventos, o líneas de E/S de propósito general (GPIO), para admitir arquitecturas de depuración más complejas.
Los productos de gama alta suelen utilizar conectores de alta densidad (a menudo conectores MICTOR de 38 pines ) para admitir el rastreo de alta velocidad junto con las operaciones JTAG. Una tendencia reciente es que las placas de desarrollo integren una interfaz USB para JTAG, donde un segundo canal se utiliza para un puerto serie. (Las placas más pequeñas también pueden alimentarse a través de USB. Dado que los ordenadores modernos tienden a omitir los puertos serie, estos enlaces de depuración integrados pueden reducir significativamente el desorden para los desarrolladores). Las placas de producción suelen utilizar conexiones de tipo "bed of nail" para los puntos de prueba y programación.
Hardware del adaptador
El hardware de los adaptadores varía considerablemente. Cuando no están integrados en una placa de desarrollo, constan de un cable corto para conectarlo a un conector JTAG en la placa de destino; una conexión al host de depuración, como un enlace USB, PCI o Ethernet; y la electrónica necesaria para adaptar los dos dominios de comunicación (y, en ocasiones, proporcionar aislamiento galvánico ). Puede ser necesaria una fuente de alimentación independiente. Existen adaptadores simples , donde el host decide y ejecuta todas las operaciones JTAG; y adaptadores inteligentes , donde parte de ese trabajo se realiza dentro del adaptador, a menudo controlado por un microcontrolador. Los adaptadores inteligentes eliminan las latencias de enlace para secuencias de operaciones que pueden implicar la comprobación de cambios de estado entre pasos, y, por consiguiente, pueden ofrecer un mayor rendimiento.
A partir de 2018Los adaptadores con conexión USB desde el host son la opción más común. Los productos de gama alta suelen ser compatibles con Ethernet , lo que permite que el host de depuración se encuentre bastante alejado. Los adaptadores compatibles con puertos de rastreo de alta velocidad generalmente incluyen varios megabytes de búfer de rastreo y proporcionan enlaces de alta velocidad (USB o Ethernet) para enviar esos datos al host.
Los adaptadores de puerto paralelo son sencillos y económicos, pero relativamente lentos porque utilizan la CPU del ordenador anfitrión para modificar cada bit (lo que se conoce como " bit banging "). Su utilidad ha disminuido debido a que la mayoría de los ordenadores actuales no disponen de puerto paralelo. La compatibilidad con controladores también es un problema, ya que el uso de pines por parte de los adaptadores varía considerablemente. Dado que el puerto paralelo se basa en un nivel lógico de 5 V, la mayoría de los adaptadores carecían de compatibilidad con la conversión de voltaje para voltajes de destino de 3,3 V o 1,8 V.
También existen adaptadores de puerto serie RS-232 , cuya utilidad está disminuyendo. Generalmente, implican una transmisión de datos más lenta que la de un puerto paralelo o un microcontrolador que traduce algún protocolo de comandos a operaciones JTAG. Estos adaptadores serie tampoco son rápidos, pero sus protocolos de comandos suelen poder reutilizarse en enlaces de mayor velocidad.
En todos los adaptadores JTAG, la compatibilidad con el software es fundamental. Algunos fabricantes no publican los protocolos que utiliza su hardware, lo que limita a sus clientes a las herramientas compatibles con dichos fabricantes. Esto representa un problema particular para los adaptadores "inteligentes", algunos de los cuales incorporan información detallada sobre cómo interactuar con CPU específicas.
Desarrollo de software
La mayoría de los entornos de desarrollo para software embebido incluyen soporte JTAG. En términos generales, existen tres fuentes de dicho software:
- Los fabricantes de chips suelen proporcionar las herramientas, que generalmente requieren un adaptador JTAG que ellos mismos suministran. Algunos ejemplos son fabricantes de FPGA como Xilinx y Altera , Atmel para sus líneas de productos AVR8 y AVR32, y Texas Instruments para la mayoría de sus productos DSP y microprocesadores. Estas herramientas suelen ser muy completas y pueden ser la única opción viable para chips altamente especializados como las FPGA y los DSP. Las herramientas de software más básicas pueden proporcionarse de forma gratuita. Los adaptadores JTAG en sí no son gratuitos, aunque a veces se incluyen con las placas de desarrollo.
- Los proveedores de herramientas suelen suministrarlos, generalmente en colaboración con varios fabricantes de chips para ofrecer soporte de desarrollo multiplataforma. Los productos basados en ARM cuentan con un mercado de terceros especialmente amplio, y varios de estos proveedores se han expandido a plataformas distintas de ARM, como MIPS y PowerPC . En ocasiones, los proveedores de herramientas desarrollan productos basados en software libre como GCC y GDB , con soporte para interfaz gráfica de usuario (GUI) que frecuentemente utiliza Eclipse . Los adaptadores JTAG a veces se venden junto con paquetes de soporte.
- Existen herramientas de código abierto . Como se mencionó anteriormente, GCC y GDB constituyen la base de una buena cadena de herramientas, y existen entornos con interfaz gráfica de usuario (GUI) que las respaldan.
Todo este software suele incluir funciones básicas de depuración: detención, bloqueo, ejecución paso a paso, puntos de interrupción, exploración de estructuras de datos, etc. Las herramientas comerciales suelen ofrecer herramientas como simuladores muy precisos y análisis de trazas, que actualmente no están disponibles como software de código abierto.
Estándares de interfaz similares
Serial Wire Debug (SWD) es una interfaz eléctrica alternativa de 2 pines que utiliza el mismo protocolo. Utiliza la conexión GND existente. SWD utiliza un protocolo de cableado bidireccional estándar de la CPU ARM, definido en la interfaz de depuración ARM v6. [ 21 ] Esto permite que el depurador se convierta en otro maestro de bus AMBA para acceder a la memoria del sistema y a los registros periféricos o de depuración. La velocidad de datos es de hasta 4 MB/s a 50 MHz . SWD también tiene detección de errores integrada. En dispositivos JTAG con capacidad SWD, TMS y TCK se utilizan como señales SWDIO y SWCLK, lo que permite programadores de modo dual.
Véase también
Referencias
- ↑ Neal Stollon (2011). Instrumentación en chip . Springer.
- ↑ Randy Johnson, Steward Christie (Intel Corporation, 2009), JTAG 101: IEEE 1149.x y depuración de software
- ↑ Se pueden adquirir copias de IEEE 1149.1-1990 o sus actualizaciones más recientes (2001 y 2013, respectivamente) en IEEE.
- 1 2 "IEEE 1149.1-2001" .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "IEEE 1149.1-2013" .
- ↑ Seleccione el método de depuración de FPGA correcto. Archivado el 27 de abril de 2010 en Wayback Machine, presenta uno de los modelos para dichas herramientas.
- ↑ "Preguntas frecuentes: ¿En qué condiciones puedo conectar en cadena JTAG?" . www.jtagtest.com .
- 1 2 3 Texas Instruments es uno de los adoptantes de este estándar y tiene una página wiki IEEE 1149.7 archivada el 6 de abril de 2014 en Wayback Machine con más información.
- ↑ "Principales ventajas de IEEE 1149.7" . Archivado del original el 12 de febrero de 2019.
- ↑ Oshana, Rob (29 de octubre de 2002). "Introducción a JTAG" . Diseño de sistemas embebidos . Recuperado el 29 de octubre de 2025 .
- ↑ Manual de referencia técnica de ARM1136JF-S y ARM1136J-S, revisión r1p5, ARM DDI 0211K. El capítulo 14 presenta el TAP de depuración. Otros núcleos ARM11 presentan el mismo modelo a través de sus TAP de depuración.
- ↑ La documentación del OMAP2420 no está disponible públicamente. Sin embargo, undocumento de Texas Instruments titulado "The User's Guide to DBGJTAG" ( Archivado el 31 de diciembre de 2014 en Wayback Machine) , que trata sobre una herramienta de diagnóstico JTAG, presenta este ejemplo de cadena de escaneo del OMAP2420 (y otros).
- ↑ Consulte el "Manual de referencia del procesador de aplicaciones multimedia i.MX35 (MCIMX35)" en el sitio web de Freescale . El capítulo 44 presenta su "Controlador JTAG seguro" (SJC).
- ↑ Manual de referencia técnica ARM9EJ-S, revisión r1p2. El apéndice B "Depuración en profundidad" presenta el módulo EmbeddedICE-RT, tal como se ve en el popular núcleo ARM926ejs.
- ↑ "Manual de referencia técnica de los componentes CoreSight: 2.3.2. Detalles específicos de la implementación" . infocenter.arm.com .
- ↑ AN1817/D, "Secuencias de control y comunicación del puerto OnCE MMC20xx M•CORE"; Freescale Semiconductor, Inc.; 2004. No todos los procesadores admiten el mismo módulo OnCE.
- ↑ AN2073 "Diferencias entre los puertos EOnCE y OnCE"; Freescale Semiconductor, Inc.; 2005.
- ↑ "Resumen técnico del bus local PCI, 4.10 Pines JTAG/Boundary Scan" . Archivado del original el 7 de noviembre de 2006. Consultado el 13 de julio de 2007 .
- ↑ "Asignación de pines del bus PCI Express serie 16x y nombres de señales de la asignación de pines PCIe" . www.interfacebus.com .
- ↑ JTAG Pinouts enumera algunos diseños de conectores exclusivos para JTAG que cuentan con un amplio soporte de herramientas.
- ↑ "Especificación de la arquitectura de la interfaz de depuración de Arm ADIv6.0" . developer.arm.com . Consultado el 8 de diciembre de 2025 .
Enlaces externos
- Estándar IEEE para puerto de acceso de prueba con número reducido de pines y funcionalidad mejorada y arquitectura de escaneo de límites. El estándar oficial IEEE 1149.7.
- JTAG 101 - IEEE 1149.x y depuración de software en Wayback Machine (archivado el 6 de abril de 2014) , documento técnico de Intel sobre el uso de JTAG en la depuración de software de sistema en una amplia gama de arquitecturas.
- La guía básica sobre capacidad de prueba de la norma IEEE Std 1149.1 (JTAG) incluye una sólida presentación técnica sobre JTAG, con capítulos dedicados al diseño para pruebas.
- Tutorial de Boundary Scan / IEEE 1149 que incluye detalles de variantes del estándar IEEE, BSDL, DFT y otros temas.
- Tutorial de JTAG: Tutoriales e información útil sobre la tecnología JTAG.
- ¿Qué es JTAG? Información útil sobre JTAG, cronología, arquitectura y más.
- Aplicaciones JTAG: JTAG para el desarrollo de productos, ciclo de vida, pruebas, herramientas necesarias y otros temas.
- estándares IEEE
- Fabricación de productos electrónicos
- Sistemas embebidos
- Pruebas de hardware
- Fabricación de placas de circuitos impresos
- Ingeniería informática