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

10

He visto algunos depuradores JTAG comerciales como:

  1. iC6000 On-chip Analyzer (con compatibilidad con el protocolo Aurora)
  2. Lauterbach - Herramientas de desarrollo de microprocesadores

Y los depuradores JTAG basados en OpenOCD FT2232H:

  1. Flyswatter
  2. NGX ARM USB JTAG

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

    
pregunta robomon

2 respuestas

7

Los cables JTAG pueden construirse 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. También suelen contener algunos componentes de traducción / protección / aislamiento de interfaz / nivel. Realmente depende del fabricante, todos son propietarios y mutuamente incompatibles. En general, necesita tener el 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 quieres usar, digamos Xilinx ChipScope? Entonces debes pagar por lo real de Xilinx o una imitación china.

Los enlaces que tiene no son para cables JTAG simples, son mucho más especializados. Personalmente consideraría que se trata de un equipo de prueba completo. Son básicamente analizadores de protocolo especializados. Están diseñados para interactuar con el hardware de rastreo especializado que se incorpora al dispositivo bajo prueba. El hardware de rastreo es distinto de JTAG. Su propósito es registrar el seguimiento de ejecución completo del software en ejecución (es decir, todas las ramas tomadas) a través de todos los núcleos de ejecución y pasarlo al sistema de recolección de rastreo externo (la caja en cuestión) a través de un bus de alta velocidad. La traza se analiza fuera de línea. Esto NO es lo mismo que la depuración que se puede realizar a través de JTAG estableciendo puntos de interrupción y recorriendo el código. Se supone que la colección de rastreo es completamente transparente para el programa en ejecución (sin puntos de interrupción o 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 con codificación 8b / 10b, algo similar a USB 3, ATA serial, gigabit serial / 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 su análisis fuera de línea. Estos dispositivos contendrán FPGA más bien de gama alta con deserializadores internos de alta velocidad para capturar los datos junto con un poco (varios GB) de DRAM rápido, probablemente DDR2 o incluso DDR3.

    
respondido por el alex.forencich
6

La diferencia está en el software & 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 explican exactamente cómo funciona y funciona el statemachine de JTAG. La lógica de enviar los comandos correctos para su configuración se realiza en el host de depuración en su PC.

Esto es funcional, hardware barato, software libre (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 genéricos Escaneo de cadena JTAG.

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 PC se comunique con el dispositivo de una manera más abstracta que puede ser más rápida.

Por ejemplo: consulte el protocolo USB JLINK . Contiene comandos como EMU_CMD_WRITE_MEM_ARM79. Los cables FTDI también pueden ejecutar este comando, pero se traducen 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, que JLINK puede hacer en el propio cable. Esto puede resultar en una mejor latencia (teniendo en cuenta las limitaciones del USB) y / o una velocidad más alta.

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

Algunos programas comerciales también contienen soporte para 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 rastreo de algunos microcontroladores requiere un hardware muy rápido para capturar un bus paralelo de 4 bits. El hardware capaz de esta característica a menudo contiene un FPGA para hacerlo.

    
respondido por el Hans

Lea otras preguntas en las etiquetas