¿Cuál es la diferencia entre un depurador JTAG comercial y un depurador OpenOCD FT2232H de código abierto?

He visto algunos depuradores JTAG comerciales como:

  1. Analizador en chip iC6000 (compatible con el protocolo Aurora)
  2. Lauterbach: herramientas de desarrollo de microprocesadores

Y depuradores JTAG basados ​​en OpenOCD FT2232H:

  1. Matamoscas
  2. NGX BRAZO USB JTAG

¿Por qué estos depuradores comerciales son cajas grandes en comparación con los depuradores FT2232H JTAG que solo tienen una placa de circuito impreso pequeña del tamaño de una tarjeta de crédito? ¿Qué hardware adicional está presente dentro de los depuradores comerciales y en qué parte de la depuración pueden ayudar?

Voto para cerrar esta pregunta como fuera de tema porque la información requerida se encuentra en los sitios web de los fabricantes.
Tal vez debería hacer la pregunta de otra manera.

Respuestas (2)

Los cables JTAG se pueden construir alrededor de todo tipo de cosas. Los cables Xilinx JTAG, por ejemplo, tienen un chip Cypress y un FPGA. Los cables Atmel generalmente contienen un microcontrolador AVR con soporte USB. Por lo general, también contendrán algunos componentes de interfaz/traducción de nivel/protección/aislamiento. Realmente depende del fabricante, todos son propietarios y son incompatibles entre sí. Por lo general, debe tener un cable que funcione con cualquier software que necesite usar. Si todo lo que necesita es OpenOCD, entonces un cable basado en FTDI está bien. Pero si quiere usar, diga Xilinx ChipScope? Luego, debe pagar el producto real de Xilinx o una imitación china.

Los enlaces que tiene no son para simples cables JTAG, son mucho más especializados. Personalmente, los consideraría un equipo de prueba completo. Son básicamente analizadores de protocolos especializados. Están diseñados para interactuar con hardware de seguimiento especializado que se incorpora al dispositivo bajo prueba. El hardware de seguimiento es distinto de JTAG. Su propósito es registrar el seguimiento de ejecución completo del software en ejecución (es decir, todas las bifurcaciones tomadas) en todos los núcleos de ejecución y pasarlo al sistema de recopilación de seguimiento externo (la caja en cuestión) a través de un bus de alta velocidad. A continuación, la traza se analiza fuera de línea. Esto NO es lo mismo que la depuración que se puede hacer a través de JTAG estableciendo puntos de interrupción y recorriendo el código. Se supone que la recopilación de seguimiento es completamente transparente para el programa en ejecución (sin puntos de interrupción ni código agregado). Dado que el procesador bajo prueba puede ejecutar varios cientos de millones de instrucciones por segundo, almacenar la traza a medida que se produce requiere mucho ancho de banda y memoria rápida. Los dispositivos vinculados son compatibles con el protocolo Aurora (probablemente entre otros), que es un protocolo serial de alta velocidad codificado en 8b/10b, algo similar a USB 3, serial ATA, serial gigabit/10G ethernet y PCIe. Es capaz de transferir datos a 6,25 Gbps, significativamente más de lo que puede manejar el enlace USB a la PC, por lo que los datos capturados deben almacenarse en la memoria RAM integrada para el análisis fuera de línea. Estos dispositivos contendrán FPGA de gama bastante alta con deserializadores internos de alta velocidad para capturar los datos junto con bastante (varios GB) de DRAM rápida, probablemente DDR2 o quizás incluso DDR3. Los dispositivos vinculados son compatibles con el protocolo Aurora (probablemente entre otros), que es un protocolo serial de alta velocidad codificado en 8b/10b, algo similar a USB 3, serial ATA, serial gigabit/10G ethernet y PCIe. Es capaz de transferir datos a 6,25 Gbps, significativamente más de lo que puede manejar el enlace USB a la PC, por lo que los datos capturados deben almacenarse en la memoria RAM integrada para el análisis fuera de línea. Estos dispositivos contendrán FPGA de gama bastante alta con deserializadores internos de alta velocidad para capturar los datos junto con bastante (varios GB) de DRAM rápida, probablemente DDR2 o quizás incluso DDR3. Los dispositivos vinculados son compatibles con el protocolo Aurora (probablemente entre otros), que es un protocolo serial de alta velocidad codificado en 8b/10b, algo similar a USB 3, serial ATA, serial gigabit/10G ethernet y PCIe. Es capaz de transferir datos a 6,25 Gbps, significativamente más de lo que puede manejar el enlace USB a la PC, por lo que los datos capturados deben almacenarse en la memoria RAM integrada para el análisis fuera de línea. Estos dispositivos contendrán FPGA de gama alta con deserializadores internos de alta velocidad para capturar los datos junto con bastante (varios GB) de DRAM rápida, probablemente DDR2 o quizás incluso DDR3. significativamente más de lo que puede manejar el enlace USB a la PC, por lo que los datos capturados deben almacenarse en la memoria RAM integrada para el análisis fuera de línea. Estos dispositivos contendrán FPGA de gama alta con deserializadores internos de alta velocidad para capturar los datos junto con bastante (varios GB) de DRAM rápida, probablemente DDR2 o quizás incluso DDR3. significativamente más de lo que puede manejar el enlace USB a la PC, por lo que los datos capturados deben almacenarse en la memoria RAM integrada para el análisis fuera de línea. Estos dispositivos contendrán FPGA de gama alta con deserializadores internos de alta velocidad para capturar los datos junto con bastante (varios GB) de DRAM rápida, probablemente DDR2 o quizás incluso DDR3.

8GB para rastreos en el iC6000, más que la PC de tu abuela prolly :-) Y 6.25 Gbps de ancho de banda a través del cable Aurora.

La diferencia está en el software y la funcionalidad, que afecta en gran medida al hardware.

Los cables FTDI JTAG utilizan un conjunto de comandos para producir señales JTAG. Estos son comandos de muy bajo nivel, que a menudo entran en los detalles exactos de cómo funciona y se opera la máquina de estado JTAG. La lógica de enviar los comandos correctos para su configuración se realiza en el host de depuración de su PC.

Esto es hardware barato y funcional, software gratuito (GNU GCC+GDB+OpenOCD), etc. Es lo suficientemente flexible (debido al conjunto de comandos de bajo nivel) que hay puertos para depuración ARM, programación FPGA o escaneo de cadena JTAG genérico .

Los cables comerciales son mucho más específicos para una plataforma y, a menudo, contienen lógica dentro del cable. Esto permite que el programa de la PC hable con el dispositivo de una manera más abstracta que puede ser más rápida.

Por ejemplo: mira el protocolo USB JLINK . Contiene comandos como EMU_CMD_WRITE_MEM_ARM79. Los cables FTDI también pueden ejecutar este comando, pero se traduce en el lado de la PC a los comandos JTAG de bajo nivel que entiende el cable FTDI. También significa que el comando de alto nivel (escribir algo de memoria) se divide en muchos más subcomandos, lo que el JLINK puede hacer en el propio cable. Esto puede dar como resultado una mejor latencia (teniendo en cuenta las limitaciones de USB) y/o una mayor velocidad.

También depende de los proveedores comerciales de IDE qué cable admiten, y es más probable que se admita un cable comercial. Por otro lado, es más probable que los IDE gratuitos admitan los cables de depuración FTDI baratos.

Algunos programas comerciales también admiten puntos de interrupción de código de software, donde puede establecer más puntos de interrupción de código de los que permite el hardware.

El uso de la funcionalidad de seguimiento de algunos microcontroladores requiere un hardware muy rápido para capturar un bus paralelo de 4 bits. El hardware capaz de esta función a menudo contiene un FPGA para hacerlo.

Por no hablar del ancho de banda que estos pueden manejar; el del Xilinx de gama alta sobre el que pregunta el OP (iC6000) puede hacer seguimientos de 6,25 Gbps con el protocolo Aurora, que (1) no es compatible con Flyswatters e incluso si lo fuera, ¿qué ancho de banda manejarían? Y memoria interna que tienen estos: 8GB para huellas en el iC6000.