Débogage JTAG vs SWD

41

Après avoir parcouru cet article , je me demande quels sont les avantages du débogage SWD par rapport au débogage JTAG?

Je comprends que SWD utilise moins de fils / broches, prend moins de place, etc. Mais comment se comporte-t-il en termes de performances, de fonctionnalités et de coût des dispositifs de programmation / débogage matériels? Le code peut-il toujours être mis en pause / interrompu et inséré dans IDE comme Eclipse?

Une puce ARM peut-elle être programmée à l'aide de l'interface SWD, comme je pense que cela peut être fait avec JTAG?

josef.van.niekerk
la source
Les puces basées sur ARM avec les cœurs les plus récents (Cortex, par exemple) peuvent être programmées et mises au point via SWD.
B Pete
@BPete: J'ai constaté qu'avec SWD, il est difficile de déboguer des puces basées sur ST qui utilisent le mode veille. nos conseils actuels n'ont pas les épingles disponibles pour JTAG, mais je me demandais si JTAG pourrait être mieux à cet égard?
Supercat
2
Cela ressemble un peu au Spy Bi-Wire interfagce que TI a mis sur un sous-ensemble de leurs processeurs MSP430. Il s'agit d'un câble JTAG identique (plus alimentation et mise à la terre) avec SBWTCLK et SBWTDIO multiplexé sur deux broches non GPIO (TEST et RST / NMI) sur un exemple de périphérique. Pris en charge par le kit de développement EZ430. Et il (SBW) prend en charge la progression et les points d'arrêt! Je ne sais pas si les ARM de TI ont la même interface, mais il serait intéressant qu'ils aient suffisamment de points communs pour partager des outils de programmation / débogage.
Brian Drummond
Le lien de votre article est mort, mais c'était peut-être l'article? arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples Le

Réponses:

12

SWD devrait pouvoir programmer le chipset ARM et vous pouvez déboguer et ajouter des points d'arrêt. L'autre avantage de SWD est que vous pouvez utiliser le visualiseur de fil série pour vos instructions printf à des fins de débogage. Je ne l'ai utilisé qu'avec le compilateur Keil.

utilisateur468662
la source
Regardez ce lien sur la visionneuse de câble série. keil.com/download/files/swv_on_cortex-m3.pdf
user468662
37

Électriquement

  • Nombre de broches
    • JTAG nécessite 4 lignes de signal
    • SWD nécessite seulement 2 lignes de signal
    • L'interface JTAG à 2 fils spécifiée dans IEEE 1149.7 supprime le nombre de broches mais ne semble pas être largement disponible sur de nombreux circuits intégrés. Cela réduit également la bande passante.
  • Topologie
    • JTAG utilise une configuration en guirlande pour ses lignes de données entre puces. La vitesse de JTAG est donc limitée par la puce la plus lente de la chaîne. Ses lignes de réinitialisation et de dégagement sont en bus (non chaînées), ce qui permet une interopérabilité via SWDJ-DP (voir la discussion ci-dessous).
    • JTAG à 2 fils permet une topologie en étoile, mais il n’est pas utilisé souvent.
    • SWD permet les topologies en étoile

Fonctionnellement

  • SWD est un protocole spécifique à ARM conçu spécifiquement pour le micro-débogage.
  • JTAG (Joint Test Action Group) a été conçu principalement pour les tests de puces et de cartes. Il est utilisé pour le balayage des limites , la vérification des défauts dans les puces / cartes en production. Les micros de débogage et de flashing ont été une évolution de son application dans le temps.
  • JTAG est utilisé pour plusieurs architectures de microcontrôleurs / processeurs en dehors de ARM.

Discussion générale

JTAG est plus largement pris en charge, à compter de 2017, par les micros, les programmeurs et les chaînes de production non-ARM. Les programmeurs pour JTAG peuvent être achetés à bas prix sous forme de répartitions FT232H [*] et autres dispositifs de programmation de ce type. Cependant, SWD a un net avantage en termes de vitesse et d’autres domaines de débogage de puces ARM.

En raison de la scission de la nature recherchée de JTAG lors des tests et de SWD pour le débogage, ARM fournit SWJ-DP (port de débogage série fil / jtag) via sa technologie CoreSight qui mappe les broches de SWD sur les lignes d'horloge et de réinitialisation de JTAG. SWJ-DP permet donc d’utiliser les deux protocoles sur la même connexion physique, mais pas nécessairement au même moment ou avec les mêmes programmeurs, car JTAG et SWD devraient être multiplexés dans le temps.

Références utiles

rétrodiffusé
la source
7

Je serai peut-être un peu trop tard pour OP, mais cela sera peut-être utile pour d'autres personnes qui ont la même question. Donc, c'est parti (expérience personnelle): Il est possible de programmer et de déboguer (récupérer de la mémoire / enregistrer des cartes, interrompre, exécuter à partir d'un point spécifique, etc.) avec SWD. Utiliser Eclipse ici avec GDB via J-Link EDU, pour un montant de ~ 50 euros. Il y a quelques bugs (réinitialiser la cible via le débogueur, parfois ne pas connecter ou récupérer des cartes), mais c'est relativement peu coûteux et utilisable, une fois que vous avez découvert ses bizarreries

stiebrs
la source
7

Ancienne question, mais aucune des réponses n’aborde la comparaison des performances. Bien que les fonctionnalités définies entre SWD et JTAG (lors de l'utilisation d'un CoreSight DAP) soient assez similaires, les séquences SWD sont environ 10% plus courtes que les séquences JTAG équivalentes.

Il n'y a aucune perte de bande passante de données dans la plupart des cas (en particulier la lecture ou l'écriture en continu où la bande passante est la plus importante).

Sean Houlihane
la source