Question:
Comment identifier et utiliser JTAG?
mrduclaw
2013-03-29 23:32:04 UTC
view on stackexchange narkive permalink

Je suis un spécialiste des logiciels de bout en bout. Mais périodiquement, lorsque je démonte du matériel, je sais que je recherche des ports JTAG et des ports RS232. Jusqu'à présent, j'ai toujours eu de la chance et j'ai pu souder sur des broches au port RS232 et obtenir une connexion série.

Pour les moments où je suis malchanceux dans le futur, quelqu'un peut-il m'expliquer ce que JTAG est (c'est-à-dire qu'il n'y a qu'un seul type de JTAG et je peux m'attendre à le connecter à un seul type de port, comme un DB-9 pour la série?) Et comment je l'utiliserais pour vider le micrologiciel d'un système embarqué ou est-ce que tout est spécifique au fabricant?

Quatre réponses:
#1
+24
Mellowcandle
2013-03-30 01:54:24 UTC
view on stackexchange narkive permalink

Il y a quelques connecteurs JTAG disponibles, il est donc difficile de dire lequel et comment les broches sont positionnées.

Je vous suggère de prendre une loupe et de lire le modèle du microcontrôleur. Avec le modèle, vous pourrez trouver la fiche technique sur Internet. Jetez un coup d'œil au code PIN du microcontrôleur et voyez combien de sorties JTAG il a. Certaines puces plus récentes ont des sorties de trace, d'autres non. Cela peut vraiment restreindre vos options.

Vous voudrez peut-être jeter un coup d'œil ici, pour un aperçu rapide des différents connecteurs JTAG.

Une autre chose vaut la peine mentionner, divers microcontrôleurs, ont un bit spécifique, que lorsqu'il est défini, les connecteurs JTAG sont désactivés. Ceci est fait à la sortie, pour s'assurer que personne n'essaye de voler le firmware ou de déboguer le système. La seule façon de réactiver le JTAG est de réinitialiser le microcontrôleur. Cela entraînera une réinitialisation complète du flash interne, donc tout le firmware sera perdu ...

Je voudrais juste ajouter que d'après mon expérience (appareils haut de gamme), la réinitialisation matérielle ne fonctionne le plus souvent pas pour activer le JTAG. Ces interfaces sont souvent verrouillées en permanence en faisant sauter un fusible. Dans les autres cas, ils sont protégés par mot de passe par des clés 64 bits avec des délais importants (millisecondes jusqu'à une seconde) entre les éventuelles tentatives de déverrouillage. Juste pour vous assurer que vous ne voulez même pas penser à les forcer avec une batterie d'appareils. Et pour vous tromper un peu, ils aiment aussi parfois vous donner 1 tentative de déverrouillage, puis ignorer silencieusement la réinitialisation jusqu'à une réinitialisation à froid.
#2
+21
0xC0000022L
2013-04-25 00:17:13 UTC
view on stackexchange narkive permalink

JTAG a été initialement créé pour tester / vérifier les périphériques matériels. Le processus s'appelle le balayage des limites et JTAG a été nommé d'après le groupe de travail: J oint T est A ction G roup, quelque temps dans les années 1980.

L'idée était de définir une interface permettant de tester le matériel (micro-contrôleurs et périphériques connectés après fabrication). C'est à dire. après le développement du matériel et la production ultérieure de celui-ci.

Les appareils utilisés pour effectuer le scan des limites selon JTAG sont appelés sondes JTAG . Ils étaient auparavant connectés au port parallèle de votre machine, mais ces jours-ci sont plus souvent connectés via USB et basés sur l'une des puces FTDI.

Sur un PCB, les puces et les périphériques forment un "daisy chain" connecté au TAP (port d'accès de test). Ainsi, vous pouvez tester les différents composants via un seul port. L'instruction BYPASS est utilisée pour dire à un appareil plus tôt sur la chaîne d'ignorer vos commandes et de les transmettre. IDCODE est utilisé pour identifier l'appareil et quelques caractéristiques de base.

Un aperçu soigné de certains détails techniques peut être trouvé ici: JTAG - Un aperçu technique, mais l ' article Wikipédia et sa liste de références fournissent également des informations précieuses. Gardez à l'esprit que cela a été établi avant la création du WWW et que de nombreuses informations le concernant ont été interdites sur les arbres morts.

Le terme analyse des limites est toujours utilisé pour décrire le processus et fait partie de l'acronyme BSDL ( langage de description de l'analyse des limites), que vous devriez normalement contacter. avec si vous deviez scanner un périphérique / une puce et que le fournisseur s'attendait à ce que vous le fassiez. Sinon, ils ont tendance à être assez secrets à ce sujet. La raison du secret est qu'ils donnent essentiellement une partie de leur conception matérielle, que la plupart de ces fournisseurs de matériel considèrent comme un secteur commercial. J'ai eu la chance d'accéder au fichier BSDL, sous NDA, même si ce n'était pas pour la révision de silicium exacte que je déboguais. Mais on m'a assuré que le fichier BSDL fonctionnerait très bien avec la révision en silicium de la puce que j'avais. Mais à moins que vous ne puissiez vous permettre de détruire votre matériel, vous devez vous assurer que vos données BSDL correspondent au matériel auquel vous vous connectez .

De nos jours, JTAG n'est pas seulement utilisé pour testing seulement, cependant. Bien sûr, le débogage matériel est un sous-ensemble de tests, ce n'est donc pas ce que je veux dire. Ce que je veux dire, c'est que les sondes JTAG vous permettent également de flasher le micrologiciel sur du matériel par ailleurs obsolète. Et c'est essentiel dans le débranchement du matériel en brique .

Problèmes possibles

Il y a plusieurs problèmes dans l'utilisation de JTAG que vous devez éviter à part d'identifier les connecteurs. Et je vais ignorer le bit Mellowcandle mentionné dans sa réponse.

Vous devez être sûr que vous avez bien fait les choses, sinon vous pouvez faire frire votre matériel au lieu de, par exemple , en le débranchant.

Identifiez les broches JTAG

Souvent, vous trouverez TMS, TCK, TDI, etc. inscrits sur votre PCB, vous savez donc que vous avez affaire à un appareil qui prend en charge JTAG. Les loupes peuvent être utiles;)

Mais ce n'est pas vraiment un art des arcanes - cela devient plus difficile lorsque les broches ne sont pas étiquetées et que vous devez vous fier à une documentation tierce.

Bien sûr, il est également possible que votre carte ait un en-tête JTAG au lieu de simples broches / contacts.

Identifiez le microcontrôleur

Oui, en effet, vous devez identifier le type de puce que vous avez devant vous et savoir à quelle tension elle s'attend, car sinon vous pouvez faire frire votre puce ou votre sonde JTAG ou les deux .

Si vous avez de la chance, vous avez un en-tête JTAG sur votre appareil qui vous aide à découvrir de quoi il s'agit et implicitement à quelle tension il attend, etc. Il existe des quasi-standards pour ARM et MIPS à ma connaissance. Reportez-vous à la réponse de Mellowcandle pour le premier et à ceci et ceci pour le second.

Utilisez toute la documentation disponible que vous pouvez trouver pour vérifier les hypothèses. tu fais. Les routeurs DSL ont souvent des processeurs MIPS, mais les ARM sont également courants et peut-être d'autres aussi. Les projets tels que OpenWRT ont une mine d'informations disponibles sur le matériel, même le matériel non pris en charge directement par eux.

Les sondes JTAG

Habituellement, les fournisseurs de matériel affirment qu'ils soutiennent le McCraigor Wiggler ou une autre sonde JTAG affreusement chère. Cela signifie que vous êtes seul si vous n'utilisez pas une sonde JTAG "non prise en charge" (par le fournisseur)! Cela ne veut pas dire que cela ne fonctionnera pas, mais cela signifie que vous devez être absolument sûr de ce que vous faites (tension, commandes JTAG que vous envoyez, etc.).

Outils

FLOSS pour utiliser JTAG

GDB () peut être utilisé en conjonction avec ceux-ci dans certains scénarios (par exemple, OpenOCD).

"Bon marché "Sondes JTAG

Remarque: vous entendrez parfois les termes débogueur ou émulateur pour les sondes JTAG elles-mêmes.

  • AVR JTAGICE, Atmel - si vous utilisez des contrôleurs AVR ce sont les sondes de choix
  • JTAGkey2 et amis, Amontec
  • PicoTAP, Gopel - le PicoTAP a également été offert il y a quelque temps dans un kit d'apprentissage (avec CD et autres)
  • plusieurs solutions JTAG bon marché existent d'Olimex (en particulier utiles si vous optez pour OpenOCD)
  • BusBlaster par Dangerous Prototypes
  • Dernier point mais non le moindre: si vous êtes dans le soudage: OpenJTAG
#3
+8
Igor Skochinsky
2013-06-19 21:35:57 UTC
view on stackexchange narkive permalink

Pour déterminer le brochage JTAG, il existe de nombreux appels sur Google pour "JTAG Finder". J'ai aussi ma propre implémentation:

http://mbed.org/users/igorsk/code/JTAG_Search/

C'est pour mbed mais j'ai essayé pour le rendre facilement portable (la version originale était pour une carte Stellaris).

Voici une citation du commentaire qui décrit l'approche de base:

  L'idée générale: 1) choisissez 2 broches comme TMS et TCK 2) en les utilisant, réinitialisez TAP puis décalez DR, tout en observant l'état de toutes les autres broches 3) pour chaque broche qui a reçu quelque chose comme un ID TAP (c'est-à-dire que le bit 0 est 1): 4) en utilisant la broche comme TDI, introduisez un modèle connu dans le TAP 5) continuez à déplacer et surveillez le reste des broches 6) si l'une des broches restantes a reçu le modèle, c'est TDO  
#4
+7
samuirai
2013-06-19 18:54:25 UTC
view on stackexchange narkive permalink

J'ai créé une vidéo montrant comment j'ai identifié une possible connexion JTAG avec un multimètre. Voici une image montrant quelles broches sont connectées et correspond à un brochage JTAG standard pour VCC et GND . C'est une indication qu'il pourrait s'agir de JTAG, bien que cela ne soit pas obligatoire.

example JTAG connector



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...