Le JTAG (Joint Test action group) est un standard utilisé dans l’industrie en électronique embarqué pour le test, le débogage et la programmation des PCB. Elle permet aux utilisateur de parler bit à bit aux différents modules du microcontroleur.

<aside> 💡 Le principe du JTAG repose sur l’utilisation d’une interface dédiée que l’on appelle le port JTAG. Il est intégré dans la plupart des circuits intégrés modernes.

</aside>

<aside> 💡 Le terme JTAG, désignant le group de travail qui a conçu la norme, est abusivement utilisé au lieu du terme générique Boundary Scan ou sigle TAP (Test Access Port)

</aside>

Comment ça fonctionne ?

Le principe est simple, c’est une technique pour vérifier les courts-circuits ainsi que la continuité des connexions entre les composants d’une carte électronique compatible.

Cela fonctionne en plusieurs étapes :

Le vecteur de test

On envoie un ensemble de signaux logiques, appelé vecteur de test, aux broches d'entrée spécifiques des composants de la carte électronique. Ces signaux sont générés par une chaîne Boundary Scan interne.

La mesure des niveaux logiques

On observe les niveaux logiques qui apparaissent aux broches de sortie des composants connectés aux broches d'entrée où les signaux de test ont été appliqués. On mesure ces niveaux logiques pour s'assurer qu'ils correspondent aux valeurs attendues.

Vérification des pistes et des soudures

En observant les niveaux logiques mesurés, on peut déduire si les connexions entre les composants, à travers les pistes du circuit imprimé, sont de bonne qualité et s'il n'y a pas de courts-circuits indésirables. Cela permet de détecter d'éventuels défauts tels que des pistes endommagées, des soudures défectueuses ou des courts-circuits entre les broches des composants.

Il est possible de tester des mémoires en écrivant puis relisant des valeurs de test. Il est même possible de cette manière de programmer des mémoires non-volatiles (EEPROM et Flash, ces dernières nécessitant un protocole particulier).

De plus, le JTAG n'est pas limité aux connexions externes au composant. La norme JTAG est ainsi utilisée pour remplacer les émulateurs de microprocesseurs (systèmes de débug sur carte remplaçant physiquement le composant), en donnant un accès direct à l'intérieur du processeur (points d'arrêt, lecture et écriture des registres internes, des mémoires internes et externes …) sans perturber ses interactions avec l'extérieur. On nomme cette technique ICE (In-Circuit Emulator) ou ICD (In-Circuit Debugger), et elle est omniprésente sur les microprocesseurs et microcontrôleurs modernes.