sim e nao... o JTAG eh padrao para teste eletrico, onde um bus muito similar ao SPI permite vc pode cascatear dispositivos diferentes de forma bastante simples:
e assim testar eletricamente um por um deles, pino por pino.
obviamente os dispositivos nao sao iguais, mas pelo menos 3 registros sao meio que padronizados e sao acessados meio que da mesma forma:
- device ID register para vc saber q dispositivo eh
- bypass register para vc pular o dispositivo e ir para o proximo na cadeia JTAG
- boundary scan register para vc entrar nas entranhas do dispositivo
em principio cada dispositivo tem seu boundary scan register de acordo com o tamanho do encapsulamento e a funcao primaria do JTAG seria testar a conectividade do encapsulamento. imagine o caso de um BGA, onde vc nao tem acesso fisico aos pinos... como vc vai saber se ficou bem soldado ?
entao vc pode setar valores ou ler valores em cada pino. adicionalmente ao boundary scan, vc pode ter registros internos para testar conexoes intrinsicas e mesmo registros de debug, mas dae jah eh para devices mais avancados.
portanto, tem nao ae no meio, o JTAG nao eh muito padrao neste aspecto, pq os registros variam de encapsulamento para encapsulamento e de dispositivo para dispositivo, daih o negocio fica mais complicado.
quanto mais complicado ? imagina um 68040 com 179 pinos. ele tem JTAG para fazer scan dos pinos. entao como grava uma flash com ele ? vc altera os valores dos pinos no bus um a um e continuamente no tempo, simulando acessos ao bus e assim grava uma flash por exemplo. cada alteracao logica do bus envolve alterar um por um cada um dos 179 pinos e vc precisa de dezenas para gravar um unico byte! jah uma flash com suporte a JTAG direto que tenha um registrinho proprietario de gravacao torna a vida infinitamente mais simples. descarrega um byte no registro e grava. algo como 10 mil vezes mais veloz que o outro caso
alguns softwares conseguem mostrar as cadeias JTAG completas em uma placa e realmente o negocio eh muito interessante e pratico!
um exemplo legal disso eh o software da xilinx:
outro mais generico eh o xjdeveloper. note que ele tem devices de fabricantes variados na mesma cadeia:
soh que nesse caso mais generico precisa criar scripts de teste e eh meio complicado... alguns exemplos mais ilustrativos de como os testes eletricos sao feitos com JTAG:
http://www.xjtag.com/support-jtag/jtag- ... -guide.php
http://www.xjtag.com/support-jtag/jtag- ... -guide.php
http://www.inaccessnetworks.com/ian/pro ... intro.html
http://www.corelis.com/products/JTAG_Tutorial.htm
e claro, tem q tomar cuidado para nao misturar as coisas: BDM e outros mecanismos de debug em background nao sao JTAG!