O que é JTAG?

Para "abobrinhas" use o " Boteco"

Moderadores: andre_luis, 51, guest2003, Renie

O que é JTAG?

Mensagempor Renie » 24 Jan 2009 09:56

Olá pessoALL,

Peço que me expliquem o que é JTAG.

Ha vários anos , quando ainda tinha tempo e tentando mexer
com eletrônica, pesquisando outros uC além dos PICs, ví que
alguns uC usavam este tipo de interface/gravação.

Certamente estou errado, mas, na época pelo que eu entendí,
era um padrão de interface com os uC para gravar e depurar.

Insistindo no meu erro, se era um padrão deveria uma única
montagem servir para qualquer uC que usasse JTAG, mas
pelo que tenho visto não é bem assim!

Apesar de não ter mais tempo de brincar com outros uC, gostaria de
saber o que é afinal essa tal de JTAG e para que serve realmente.

[]'s
Renie
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor Djalma Toledo Rodrigues » 24 Jan 2009 10:39

No 'onisciente' Google tem 3 250 000 JTAG
Avatar do usuário
Djalma Toledo Rodrigues
Dword
 
Mensagens: 2334
Registrado em: 03 Ago 2008 13:22

Mensagempor xultz » 24 Jan 2009 10:51

Certamente estou errado, mas, na época pelo que eu entendí,
era um padrão de interface com os uC para gravar e depurar.

Você está errado ao pensar que está errado, o que quer dizer que está certo. A Jtag é uma porta de gravação e depuração.
O Jtag é um circuito que fica dentro do microcontrolador, mas funciona meio que independente. Ele monitora alguns ítens do micro, como por exemplo o program counter. Aí, é possível setar o Jtag para parar o funcionamento do micro em determinado valor do PC (esta é uma das coisas que o Jtag consegue fazer, congelar o funcionamento do micro), ler qualquer variável, posição de memória, etc, alterar o valor, e fazer o micro voltar a funcionar.
Então, em se tratando de depuração, Jtag é uma tremenda mão na roda. Além de poder gravar firmware na maioria dos micros que têm Jtag. Resumidamente, a Jtag é isso, mas ela é capaz de mais coisas.

Sim, deveria ser um padrão, e sim, deveria funcionar em qualquer micro. Mas sabe como é, para ter uma vantagem competitiva, vocẽ fabrica um microcontrolador amanhã e coloca alguns recursos a mais para ter vantagens em relação ao teu concorrente. Daí coloca algumas coisas a mais na tua Jtag prá ficar mais bacana, e pimba, é incompatível com o resto. Aí teu micro usa níveis elétricos diferentes, e pimba, mais incompatível ainda. Aí já viu a salada que vira...[/quote]
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor jeanfernandes » 24 Jan 2009 11:19

É isso mermo
O JTAG deveria ser padrao essa onça.
Eu feliz querendo testar uma MB com um JTAG la que o rodrigo me vendeu mas nao vira.
É uma disgraça mermo.
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor msamsoniuk » 24 Jan 2009 11:59

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:

Imagem

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:

Imagem

outro mais generico eh o xjdeveloper. note que ele tem devices de fabricantes variados na mesma cadeia:

Imagem

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!
#innovation #poweredby #riscv https://github.com/darklife/darkriscv
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Re: O que é JTAG?

Mensagempor Renie » 25 Jan 2009 13:19

Olá pessoALL,

Obrigado pelas respostas.

É bom saber que meus neurônios não estão tão enferrujados, e
resumindo é um padrão que não é padronizado! hehehehhehe

A incompatibilidade por niveis elétricos é até aceitável, o que poderia ou
deveria ser contornável com adaptadores para casar os níveis, não
entendi porque o acréscimos de recursos gera mais incompatibilidade
já que é uma comunicação serial seguindo um "padrão", seria mais
coerente que comandos extras apenas fossem ignorados.

Marcelo Sam, interessantes os links, poupou bastante desperdício de
tempo já que em 3.250.000 disponíveis, provavelmente 3.249.000 não
sejam úteis. :wink:

[]'s
Renie
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor mastk » 25 Jan 2009 21:13

Ainda assim eh estranho, pensem comigo...

...Se a ideia eh enviar sinais, imcompatibilidade eletrica, tem jeito de resolver, mas ate ai o JTAG nada mais eh que um meio de comunicacao e o problema de imcompatibilidade de registros serial algo trivial, afinal eh apenas software, o que em teoria, coloca todos na mesmo, eh um dos motivos que nao gosto de ARM, pq tem ULINK e NLINK e outros e sao apenas "tradutores", para mim eh golpe para faturar um extra...
Avatar do usuário
mastk
Dword
 
Mensagens: 4407
Registrado em: 14 Out 2006 20:43

Mensagempor xultz » 25 Jan 2009 21:26

Ainda assim, a Jtag é um milhão de vezes melhor que aquela tralha chamada In Circuit Debugger, né...
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor msamsoniuk » 25 Jan 2009 23:05

bom, sobre a historia de cada processador ter uma interface JTAG diferente e usar software diferente jah nao sei... na minha concepcao JTAG deve ser compativel!

pela logica qq interface JTAG low-cost deveria funcionar para qq componente em uma longa cadeia JTAG. se nao eh assim, jah eh um motivo para comecar a desconfiar do seu fabricante preferido! se os caras nao conseguem nem ler e interpretar uma norma simples e clara como JTAG, sera q eles tem capacidade para projetar um microcontrolador ? ;)

bom, existe um antigo AN da motorola sobre um metodo um tanto quanto generico para programacao de memorias flash atraves do bus de um dispositivo qualquer com suporte a JTAG:

http://www.freescale.com/files/archives ... AN1264.pdf

ao que parece, eh generico o suficiente para funcionar em qualquer dispositivo que possua barramento externo que possa ser testado via JTAG, embora um tanto quanto lento. e possui um defeito adicional, ateh onde percebi, de nao diferenciar multiplos dispositivos JTAG encadeados (pela idade dos componentes, mais de um componente JTAG na placa devia ser raro). questao de corrigir o software, que nao eh muito simples...

evidentemente nao eh tao eficiente quando fazer o mesmo via BDM pq BDM e JTAG na verdade sao coisas complementares: JTAG deveria ser usado para teste eletrico e BDM para programacao e debug.
#innovation #poweredby #riscv https://github.com/darklife/darkriscv
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor jeanfernandes » 27 Jan 2009 10:28

Concordo.
Há um certo protecionismo na questao.
Exemplos que o JTAG que tenho alias tenho alguns.
Nenhum deles serve pra placa do BFin...tem que comprar um pra ele e assim vai.... mas da pra depurar sim, so que as vezes nao como a gente pretende (real Time em sistemas de alta velocidade sao meio f* pra fazer isso).
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB


Voltar para Assuntos Gerais

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x