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.