Je suis assez nouveau dans les systèmes embarqués, et je continue à voir ce terme utilisé tout le temps, mais je ne comprends pas très bien de quoi il s'agit. Une recherche rapide en ligne donne cette page Wikipedia: https://en.wikipedia.org/wiki/Joint_Test_Action_Group qui la décrit comme une sorte de protocole de débogage. Mais dans d'autres contextes, il a utilisé comme s'il était capable de programmer la mémoire d'une puce comme un programmeur. Qu'Est-ce que c'est?
30
Réponses:
C'est comme USB, SPI, I2C et d'autres "bus", et il a un certain nombre d'utilisations populaires, sans s'y limiter:
L'un en particulier consiste à tester le silicium avant d'en investir trop dans chaque pièce, par exemple pendant qu'une puce est encore sur la plaquette, vous pouvez vérifier la majeure partie de la pièce. Certes, le découpage en tranches de la plaquette peut faire des dégâts, vous voulez donc tester à nouveau, mais peut-être que vous le faites avant l'emballage, peut-être après.
Vous pouvez l'utiliser pour effectuer un balayage des limites sur les cartes. Vous pouvez prendre une carte sur une ligne de production (étant donné que la carte doit être bien conçue et qu'un certain pourcentage des puces doivent le prendre en charge), mais vous pouvez faire des tests de connectivité à faible vitesse, stimuler la broche à une extrémité d'une trace et en scanner d'autres pièces pour voir qu'ils sont ou ne sont pas connectés selon la conception de la carte.
Étant donné que les puces ont déjà ces broches dédiées, pourquoi pas, pour les processeurs, utiliser cette même interface comme un moyen de parler à un débogueur sur puce (OCD), de concevoir quelque chose dans le processeur et de permettre à cela d'être parlé via jtag.
C'est une façon générique de vous permettre d'isoler des éléments de la chaîne à laquelle vous souhaitez envoyer une série de bits ou d'obtenir une série de bits, de manière à ce que chaque chose à laquelle vous souhaitez parler puisse être conçue pour différents nombres. de bits d'un petit nombre à un grand nombre. Pour un débogueur, vous le feriez naturellement écrire ou lire à partir d'une chose de la taille d'un registre dans votre puce - peut-être un registre 16 bits ou 32 bits. Mais pour les tests de silicium ou de carte, votre chaîne de numérisation peut contenir des dizaines de bits. Chaque élément individuel que vous abordez peut varier en taille, si vous le souhaitez, de toute autre chose, ce qui en fait un bus très polyvalent avec un nombre relativement petit de broches qui est attrayant pour ces types de cas d'utilisation.
Peut-être en raison de la popularité du débogage de logiciels, ils ont maintenant quelques solutions à deux broches pour économiser sur le nombre de broches pour les microcontrôleurs et peut-être que d'autres adopteront cela, peut-être pas.
la source
JTAG était à l'origine une interface utilisée pour tester les PCB après assemblage. Les lignes d'E / S sur les puces pouvaient être contrôlées et lues via les ports JTAG permettant d'effectuer une séquence de test de carte. Plus tard, il a également commencé à être utilisé comme interface de programmation et de débogage. La fonctionnalité disponible sur JTAG dépendra du CI particulier avec lequel vous traitez.
Un avantage de JTAG sur la plupart des autres interfaces de programmation est que les périphériques peuvent être connectés en guirlande. Ainsi, un port JTAG peut servir à programmer / déboguer / tester plusieurs appareils (bien que je conseille de concevoir vos systèmes afin que différentes marques de puces puissent être réparties sur différentes chaînes, tandis que le protocole JTAG de bas niveau est assez standardisé, malheureusement, les outils dont vous avez besoin pour programmer / déboguer les puces ne le sont pas).
la source
JTAG est un terme un peu étrange. Pour commencer, le terme peut spécifier un connecteur et un protocole spécifiques, composés d'un signal d'horloge (TCK), d'un mode de sélection (TMS) et de données d'entrée / sortie (TDI / TDO). Cela comprend un réseau de périphériques, où le TDO de chaque périphérique est connecté au TDI du périphérique suivant dans une soi-disant chaîne de balayage. TMS est utilisé pour mettre tous les appareils simultanément dans différents modes .
Les dispositifs sur la chaîne de balayage sont généralement connectés en tant qu'un grand registre à décalage composé de registres dans chaque dispositif individuel. Lorsque les périphériques sont dans l'état SHIFT_IR ou SHIFT_DR, ils se connectent à la chaîne de balayage l'un des deux registres temporaires: un registre d'instructions et un registre de données.
Une fois qu'une valeur est déplacée, le mode UPDATE_IR ou UPDATE_DR peut être activé en réglant TMS de manière appropriée tout en basculant TCK. À ce stade, la valeur décalée dans le registre "prend effet". Par exemple, le déplacement de diverses séquences dans l'IR d'un FPGA et la transition vers UPDATE_IR entraîneront le FPGA à entrer dans différents modes tels que la configuration, la relecture, l'exécution normale ou l'accès à des registres d'utilisateurs spécifiques et à des primitives spécifiques à JTAG instanciées dans la conception.
De même, les états de capture peuvent être utilisés pour «lire» une valeur de l'appareil et la mettre dans l'IR ou le DR, pour être déplacé via TDO et finalement lu par le programmeur JTAG.
la source
JTAG définit un protocole série et certaines commandes pour permettre l'accès aux registres internes au sein de circuits intégrés complexes. Cela permet à un testeur d'obtenir l' observabilité et la contrôlabilité de manière standard en utilisant peu de broches.
L'usage d'origine était pour le «balayage des limites», où toutes les broches d'E / S pouvaient être lues et pilotées par un grand registre à décalage qui entoure la puce. Cependant, il a été rapidement augmenté pour ajouter d'autres registres à décalage pour accéder aux composants internes de la puce, y compris les mémoires.
Vous bit-bang JTAG rarement, l'accès se fait généralement par le biais de bibliothèques, également appelées pilotes, fournies par le fabricant du CI, et utilisées par le système de test et l'adaptateur d'accès au test.
la source
Il y a ce que JTAG «signifie» et il y a ce que JTAG «est». Comme d' autres l' ont souligné JTAG 'est' une interface de bus standard de l' industrie pour les tests de fabrication, comme dans J Oint T EST A ction G roupe.
Ce que JTAG «signifie» pour un développeur de logiciels embarqués, c'est l'interface de débogage sur le SoC / microprocesseur pour le débogage externe des logiciels embarqués exécutés sur la puce. Presque tous les CPU / SoC du marché utilisent l'interface JTAG non seulement pour les tests de fabrication, mais pour la prise en charge du débogage logiciel. Vous trouverez une interface JTAG sur tout, des processeurs x86 de classe serveur aux routeurs WiFi domestiques à moins de 50 $. Avec le bon matériel d'interface et le bon logiciel, ces interfaces vous donneront la possibilité de lire / écrire la mémoire, de définir des points d'arrêt et du code en une seule étape.
La clé est bien sûr d'obtenir le bon matériel et les bons logiciels. Même si l'interface JTAG de base est normalisée, les fonctionnalités de débogage logiciel spécifiques disponibles dans un périphérique peuvent ne pas l'être. JTAG est comme TCP / IP. Il existe au milieu de la pile d'applications. Vous avez besoin de la bonne couche physique pour communiquer avec l'équipement (c'est-à-dire que voulez-vous dire que cette chose utilise 10-Base-2?!?!?), Et vous avez besoin du bon logiciel d'application au-dessus (que voulez-vous dire, j'ai besoin d'un Gopher client?!?!?!). Cependant, la force de l'écosystème ARM y a conduit à un certain degré de standardisation (voir OpenOCD).
Vous avez également demandé comment utiliser JTAG pour programmer le flash. Oui, certains logiciels l'utilisent également à cette fin. Le SoC peut fournir des fonctionnalités JTAG pour lire / écrire à partir des espaces d'adressage de la mémoire du processeur, il peut fournir un accès direct aux contrôleurs flash et, au minimum, JTAG fournit un accès brut de bas niveau aux broches d'E / S sur le bord de la puce (c'était le but initial de JTAG, qui était de permettre le test de continuité des interconnexions puce à puce pendant le test de fabrication, c'est-à-dire «JTAG edge scan»). N'importe laquelle de ces fonctionnalités pourrait être utilisée par des programmeurs intelligents pour piloter les signaux nécessaires à la reprogrammation d'une puce flash au cas où un appareil serait accidentellement «maçonné».
la source