Qual é a diferença entre um depurador JTAG comercial e um depurador FOC2232H OpenOCD de código aberto?


10

Eu já vi alguns depuradores comerciais JTAG, como:

  1. Analisador no chip iC6000 (com suporte ao protocolo Aurora)
  2. Lauterbach - Ferramentas de desenvolvimento de microprocessador

E depuradores JTAG baseados em OpenOCD FT2232H:

  1. Mata-moscas
  2. NGX ARM USB JTAG

Por que esses depuradores comerciais são grandes caixas comparados aos depuradores JTAG FT2232H, que possuem apenas um pequeno PCB do tamanho de um cartão de crédito? Que hardware adicional está presente nos depuradores comerciais e em qual parte da depuração eles podem ajudar?


3
Estou votando para encerrar esta questão como fora de tópico, porque as informações necessárias estão nos sites dos fabricantes.
Leon Heller

Talvez eu devesse perguntar a questão de uma forma diferente
robomon

Respostas:


7

Os cabos JTAG podem ser construídos em torno de todos os tipos de coisas. Os cabos Xilinx JTAG, por exemplo, possuem um chip Cypress e um FPGA. Os cabos Atmel geralmente contêm um microcontrolador AVR com suporte a USB. Eles também geralmente contêm alguns componentes de interface / nível de conversão / proteção / isolamento. Realmente depende do fabricante, todos são proprietários e incompatíveis entre si. Geralmente, você precisa ter o cabo que funciona com qualquer software que você precise usar. Se tudo o que você precisa é OpenOCD, um cabo baseado em FTDI é bom. Mas se você quiser usar, diga Xilinx ChipScope? Então você precisa pagar pela coisa real da Xilinx ou por uma imitação chinesa.

Os links que você possui não são para cabos JTAG simples, eles são muito mais especializados. Pessoalmente, considero que estes são um equipamento completo de teste. Eles são basicamente analisadores de protocolo especializados. Eles foram projetados para interagir com o hardware de rastreamento especializado incorporado ao dispositivo em teste. O hardware de rastreamento é diferente do JTAG. Seu objetivo é registrar o rastreamento de execução completo do software em execução (ou seja, todas as ramificações obtidas) em todos os núcleos de execução e transmiti-lo ao sistema de coleta de rastreamento externo (a caixa em questão) em um barramento de alta velocidade. O rastreamento é então analisado offline. Isso NÃO é o mesmo que depuração que pode ser feita no JTAG, definindo pontos de interrupção e percorrendo o código. A coleção de rastreamento deve ser completamente transparente para o programa em execução (sem pontos de interrupção ou código adicionado). Como o processador em teste pode executar várias centenas de milhões de instruções por segundo, armazenar o rastreio conforme é produzido requer muita largura de banda e memória rápida. Os dispositivos vinculados suportam o protocolo Aurora (provavelmente entre outros), que é um protocolo serial de alta velocidade codificado em 8b / 10b, algo semelhante ao USB 3, ATA serial, gigabit serial / 10G ethernet e PCIe. Ele é capaz de transferir dados a 6,25 Gbps, significativamente mais do que o link USB de volta ao PC pode suportar, portanto os dados capturados devem ser armazenados na RAM integrada para análise offline. Esses dispositivos conterão FPGAs de ponta com desserializadores internos de alta velocidade para capturar os dados, juntamente com bastante (vários GB) de DRAM rápida,


8 GB para rastreamentos no iC6000, mais do que o PC da sua gramática :-) E largura de banda de 6,25 Gbps via cabo Aurora.
Fizz

6

A diferença está no software e na funcionalidade, o que afeta muito o hardware.

Os cabos FTDI JTAG usam um conjunto de comandos para produzir sinais JTAG. Esses são comandos de nível muito baixo, geralmente detalhando como a máquina de estado JTAG funciona e é operada. A lógica de enviar os comandos corretos para a sua configuração é feita no host de depuração no seu PC.

É hardware funcional e barato, software livre (GNU GCC + GDB + OpenOCD), etc. É flexível o suficiente (por causa do conjunto de comandos de baixo nível) que há portas para depuração do ARM, programação FPGA ou varredura de cadeia JTAG genérica .

Os cabos comerciais são muito mais específicos para uma plataforma e geralmente contêm lógica dentro do cabo. Isso permite que o programa do PC fale com o dispositivo de uma maneira mais abstrata, o que pode ser mais rápido.

Por exemplo: veja o protocolo JLINK USB . Ele contém comandos como EMU_CMD_WRITE_MEM_ARM79. Os cabos FTDI também podem executar este comando, mas são traduzidos no lado do PC para os comandos JTAG de baixo nível que o cabo FTDI entende. Isso também significa que o comando de alto nível (grava um pouco de memória) é dividido em muitos outros subcomandos, o que o JLINK pode executar no próprio cabo. Isso pode resultar em melhor latência (levando em consideração as limitações do USB) e / ou velocidade mais alta.

Também cabe aos fornecedores comerciais de IDE quais cabos eles suportam e é mais provável que um cabo comercial seja suportado. Por outro lado, é mais provável que os IDE gratuitos suportem os cabos de depuração baratos do FTDI.

Alguns softwares comerciais também contêm suporte para pontos de interrupção de código de software, onde você pode definir mais pontos de interrupção de código do que o hardware permite.

O uso da funcionalidade de rastreamento de alguns microcontroladores requer hardware muito rápido para capturar um barramento paralelo de 4 bits. O hardware capaz desse recurso geralmente contém um FPGA para fazer isso.


Para não falar da largura de banda que eles podem suportar; aquele do Xilinx topo de linha que o OP pergunta (iC6000) pode fazer rastreamentos de 6,25 Gbps com o protocolo Aurora, que (1) não é suportado por Flyswatters e, se fosse, com qual largura de banda eles lidariam? E a memória interna possui: 8 GB para rastreamentos no iC6000.
Fizz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.