O que é um JTAG?


30

Sou novato em sistemas embarcados e continuo vendo esse termo usado o tempo todo, mas não consigo entender direito o que é. Uma pesquisa rápida on-line gera esta página da Wikipedia: https://en.wikipedia.org/wiki/Joint_Test_Action_Group, que a descreve como algum tipo de protocolo para depuração. Mas em outros contextos costumava programar a memória de um chip como um programador. O que é isso?


4
Há algumas jóias úteis escondidas nesta pergunta .
David

2
Eu dei ao dwelch um +1. Além disso, o JTAG às vezes é mal utilizado como um verbo, significando, genericamente, "para depurar / testar" algo. Uma pessoa "JTAG'ing something" pode realmente estar usando um protocolo diferente que o fabricante do dispositivo se sobrepôs aos pinos JTAG físicos (ou seja, SWD). Você pode SWD ou JTAG, mas não ambos. Ninguém SWD ("swoods"?) Seus dispositivos, no entanto.
31416 Jon

Sim, você pode programar com JTAG
Snoop

Respostas:


21

É como USB, SPI, I2C e outros "ônibus" e possui vários usos populares, não limitados a:

  • Um em particular é o teste de silício antes de investir muito em cada parte, por exemplo, enquanto um chip ainda está no wafer, você pode verificar a maior parte. Cortar em cubos a bolacha pode causar danos, então você deseja testar novamente, mas talvez faça isso antes de embalar, talvez depois.

  • Você pode usá-lo para fazer a varredura de limites em placas. Você pode montar uma placa em uma linha de produção (desde que a placa tenha que ser projetada corretamente e uma porcentagem dos chips tenha suporte para isso), mas você pode fazer testes de conectividade em baixa velocidade, estimular o pino em uma extremidade de um traço e digitalizar outros peças para verificar se estão ou não conectadas de acordo com o design da placa.

  • Como os chips já possuem esses pinos dedicados, por que não usar, para os processadores, a mesma interface como uma maneira de conversar com um OCD (On Chip Debugger), projetar algo no processador e permitir que isso seja discutido via jtag.

É uma maneira genérica de permitir que você isole as coisas na cadeia para a qual deseja enviar uma série de bits ou obter uma série de bits, de maneira que cada coisa com a qual você deseja conversar possa ser projetada para vários números de bits de um número pequeno para um número grande. Para um depurador, é natural que ele escreva ou leia uma coisa do tamanho de um registro em seu chip - talvez um registro de 16 bits ou 32 bits. Mas para testes de silício ou placa, sua cadeia de varredura pode ter dezenas de bits. Cada item individual que você aborda pode variar em tamanho, se desejar, de qualquer outro item, tornando este um barramento muito versátil, com um número relativamente pequeno de pinos, atraente para esses tipos de casos de uso.

Talvez devido à popularidade da depuração de software, eles agora tenham algumas soluções de dois pinos para economizar na contagem de pinos para microcontroladores e talvez outros adotem isso, talvez não.


Existem aspectos técnicos do JTAG que o emprestam a esses usos ou é apenas por razões históricas?
Owen

Bem, leia o artigo da Wikipedia. Minha opinião é porque ele já estava lá e conectado às placas e chips, e porque era flexível o suficiente para suportar outros usos, e pelo menos alguns já tinham ferramentas, alguém deve ter dito por que não usá-lo para essas outras coisas. Eu acho que a sua flexibilidade vs contagem de pinos torna muito atraente. Existem e continuam a existir outras soluções para depuradores ou na programação de circuitos, mas graças às instruções FTDI MPSSE e ao sucesso da FTDI em geral com tudo o que é USB, as ferramentas jtag de baixo custo estão agora amplamente disponíveis.
old_timer

10

O JTAG era originalmente uma interface usada para testar PCBs após a montagem. As linhas de E / S nos chips podem ser controladas e lidas através das portas JTAG, permitindo que uma sequência de teste da placa seja executada. Mais tarde, ele também começou a ser usado como uma interface de programação e depuração. Que funcionalidade está disponível no JTAG dependerá do IC em particular com o qual você está lidando.

Uma vantagem do JTAG sobre a maioria das outras interfaces de programação é que os dispositivos podem ser encadeados. Portanto, uma porta JTAG pode servir para programar / depurar / testar vários dispositivos (embora eu recomendaria projetar seus sistemas para que diferentes marcas de chip possam ser divididas em cadeias diferentes, enquanto o protocolo JTAG de baixo nível é bastante padronizado, infelizmente, as ferramentas necessárias programar / depurar os chips não são).


9

JTAG é um termo um tanto estranho. Para começar, o termo pode especificar um conector e protocolo específicos, compostos por um sinal de relógio (TCK), seleção de modo (TMS) e entrada / saída de dados (TDI / TDO). Isso inclui uma rede de dispositivos, onde o TDO de cada dispositivo é conectado ao TDI do próximo dispositivo em uma cadeia de varredura. O TMS é usado para colocar todos os dispositivos simultaneamente em vários modos .

Os dispositivos na cadeia de varredura geralmente são conectados como um registro de turno grande composto por registros em cada dispositivo individual. Quando os dispositivos estão no estado SHIFT_IR ou SHIFT_DR, eles se conectam à cadeia de varredura um dos dois registros temporários: um registro de instruções e um registro de dados.

Depois que um valor é alternado, o modo UPDATE_IR ou UPDATE_DR pode ser ativado configurando o TMS apropriadamente enquanto alterna o TCK. Nesse ponto, o valor deslocado para o registro "entra em vigor". Por exemplo, mudar várias seqüências para o IR de um FPGA e fazer a transição para UPDATE_IR fará com que o FPGA entre em vários modos, como configuração, readback, tempo de execução normal ou acesse registros de usuários específicos e primitivas específicas para JTAG instanciadas no design.

Da mesma forma, os estados de captura podem ser usados ​​para "ler" um valor do dispositivo e colocá-lo no IR ou DR, para serem deslocados pelo TDO e, finalmente, lidos pelo programador JTAG.


4

O JTAG define um protocolo serial e alguns comandos para permitir o acesso a registros internos em CIs complexos. Isso permite que um testador obtenha observabilidade e controlabilidade de maneira padrão usando poucos pinos.

O uso original era para 'varredura de limite', onde todos os pinos de E / S podiam ser lidos e acionados por um grande registro de turnos que circula o chip. No entanto, foi rapidamente aumentado para adicionar mais registros de turno para acessar as partes internas do chip, incluindo memórias.

Você raramente faz bit-JTAG, o acesso geralmente é feito através de bibliotecas, também conhecidas como drivers, fornecidas pelo fabricante do IC e usadas pelo sistema de teste e pelo adaptador de acesso de teste.


Então o chip realmente precisa suportar um JTAG tanto por hardware quanto por software?
UnTraDe 27/03

@UnTraDe Não, o chip suporta JTAG em hardware e pode em software (por exemplo, um FPGA pode expor algumas interfaces entre JTAG e o design do usuário), mas não é necessário ter suporte de software no chip. As ferramentas que se poderia usar para interagir com os dispositivos mais de JTAG teria software e suporte de hardware (software em um computador e hardware em termos de um programador JTAG conectado a esse computador)
ζ--

3

Existe o que JTAG 'significa' e existe o que JTAG 'é'. Como outros apontaram JTAG 'é' uma interface de bus padrão da indústria para a fabricação de teste, como em J Oint T est Um cção G rupo.

O que JTAG 'significa' para um desenvolvedor de software incorporado é a interface de depuração no SoC / microprocessador para depuração externa de software incorporado em execução no chip. Quase toda CPU / SoC no mercado usa a interface JTAG não apenas para testes de fabricação, mas também para suporte à depuração de software. Você encontrará uma interface JTAG em tudo, desde CPUs x86 de classe de servidor até roteadores WiFi domésticos com menos de US $ 50. Com o hardware certo da interface e o software certo, essas interfaces permitirão ler / gravar memória, definir pontos de interrupção e código de etapa única.

A chave do curso é obter o hardware e software certos. Embora a interface JTAG básica seja padronizada, os recursos específicos de depuração de software disponíveis em um dispositivo podem não ser. JTAG é como TCP / IP. Existe no meio da pilha de aplicativos. Você precisa da camada física certa para se comunicar com o equipamento (ou seja, o que você quer dizer com essa coisa usa 10-Base-2?!?!?), E precisa do software aplicativo correto acima (o que você quer dizer com eu preciso de um Gopher cliente?!?!?!). No entanto, a força do ecossistema ARM levou a um certo grau de padronização (veja OpenOCD).

Você também perguntou sobre o uso do JTAG para programar o flash. Sim, alguns softwares também o utilizam para esse fim. O SoC pode fornecer recursos JTAG para leitura / gravação nos espaços de endereço da memória da CPU, pode fornecer acesso direto aos controladores flash e, no mínimo, o JTAG fornece acesso de baixo nível bruto aos pinos de E / S na borda do chip (isto foi o objetivo original do JTAG, para permitir o teste de continuidade de interconexões entre chips durante o teste de fabricação, ou seja, 'verificação de limites JTAG'). Qualquer uma dessas instalações pode ser usada por programadores inteligentes para direcionar os sinais necessários para reprogramar um chip flash, caso um dispositivo seja acidentalmente bloqueado.

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.