Comment est-JTAG utilisé comme un débogueur?
Je comprends comment JTAG utilisé pour être utilisé comme limite scanner (très propre explication à http://www.fpga4fun.com/JTAG1.html). Cependant, je ne vois pas comment JTAG ces jours-ci est utilisé comme un matériel de niveau débogueur (un Peu comme dans le circuit des émulateurs).
1. Peut-on expliquer comment JTAG est utilisé comme un matériel de niveau débogueur?
Mon hypothèse est il doit y avoir un matériel supplémentaire sur puce qui permet le débogage de tout JTAG simplement les lecteurs de matériel pour obtenir les informations de débogage. Si ma compréhension est correcte -
2a. Qu'est-ce que ce matériel?
2b. Est-il standard?
J'en doute de la partie standard depuis toutes les implémentations j'ai vu de JTAG matériel basé sur le niveau de débogueurs varient les uns des autres.
Enfin c'est vraiment déroutant d'avoir JTAG être appelé un matériel de niveau débogueur alors que le JTAG norme ne définit pas quelque chose de la sorte. Donc, il y a un nom différent pour quand JTAG est utilisé pour cela?
OriginalL'auteur tinkerbeast | 2014-01-16
Vous devez vous connecter pour publier un commentaire.
pour info: je ne suis pas sûr si j'ai bien compris vous bien, et vous pouvez déjà savoir/comprendre tout ce que j'ai écrit ci-dessous, peut-être mieux que moi. Envoyez-moi une note, et je vais supprimer la réponse.
1/2a: Le matériel utilisé est "juste" quelques " extra registres et des circuits logiques qui forme/injecter de nouvelles (orthogonal!) unis dans la norme JTAG statemachine.
Si vous comprenez comment le protocole JTAG effectue le boundary-scan et comment le bitstream est poussé/tiré de l'appareil, vous devriez être en mesure d'imaginer comment est-il utilisé à des programmes sur-puce de mémoire. Imaginez typique de chaînage, pas entre les puces, mais plutôt à l'intérieur d'une puce.
Disons que le dispositif a programmable mémoire persistante. Avec un peu plus de flops et des portes, l'appareil forme un tampon supplémentaire avant ou après le JTAG de la chaîne de la mémoire réelle:
input -> xflops -> mémoire -> yflops -> sortie
disons que x/mem/y = 16/1024/0. Maintenant, la chaîne a 1040 bits. Le précédent xflops n'affecte pas directement la mémoire, ni vice-versa. Le xflops, peut-être lié à l'lignes de contrôle de la builtin interne programmeur que les lecteurs de la mémoire.
le circuit logique à l'intérieur de la puce peuvent maintenant réagir à certaines de 16 bits "nombre magique" un.k.un. "commande d'écriture" qui va déclencher la procédure de l'écriture/effacement de la mémoire persistante. Toute autre 16bits valeurs sont ignorées et l'appareil se comporte comme 1024 r/s de données, suivies par 16bit echo ou des zéros.
Ok, nous avons donc simple de l'appareil "contrôleur" qui effectue des opérations sur un "vrai appareil". Si vous étendre l'idée à savoir le contrôleur états qui permet de contrôler ce que subdevices sont attachés à la chaîne, à la volée:
Bien entendu, il est juste un supplément de statemachine. De la même façon que vous pourriez faire presque toute fantaisie opérations, y compris le débogage comme le gel, pas à pas, la lecture/écriture des registres etc. Mais il faut pour cela tonnes de la logique supplémentaire pour être intégré dans la puce en question. En fait, c'est le fait d'avoir plusieurs appareils dans une seule puce.
2b: Malheureusement, je ne peux pas en dire plus, parce que je suis trop verte dans le sujet 😉 je sais que de nombreux fabricants de former leurs propres normes internes, le contrôleur sont simplement partagé entre les modèles et parfois, les familles de puces, mais je n'ai pas entendu parler de "global" standard commun entre les fabricants.
OriginalL'auteur quetzalcoatl
JTAG est tout simplement une méthode pour l'interfaçage avec les puces internes qui travaille aux côtés de la "habituel" de la puce de la fonctionnalité. En gros, c'est un multi-mode (mode synchrone) port série.
L'une des choses, cela permet de boundary-scan, en accédant à des broches directement.
Comme vous l'avez déduit, l'autre est l'accès à du matériel supplémentaire à l'intérieur de la puce. Ce matériel peut être mis en place pour fournir (par exemple) le matériel, les points d'arrêt, la capacité de lire des registres et de l'arbitraire des emplacements de mémoire, la programmation flash interne etc. Ce sont le genre de choses qu'un débogueur d'application peut utiliser.
Le JTAG standard, offre de l'espace pour l'appareil d'extensions spécifiques qui ont toujours été prévu pour les concepteurs de puces à utiliser pour fournir ces sortes de fonctionnalités. Il est une tentative de standardisation de l'interface, qui couvre JTAG et également plus élevés de taux de connexions à débogage matériel, qui est appelé Nexus. Cependant, je n'ai jamais vu de Freescale à mettre en œuvre, de sorte qu'il semble ne pas être aussi utile d'une norme que l'on pourrait espérer!
Au sujet de la terminologie, oui, c'est sans doute tort de les appeler "JTAG" sur son propre matériel débogueur. Je ne suis pas entièrement sûr de ce que "JTAG" est utilisée dans la question du titre) - peut-être "un JTAG pod" ou "un JTAG module d'interface" serait mieux?
Cependant des phrases comme "le JTAG debug accès" ou même "JTAG débogueur" (et même "JTAG programmeur" pour les utilisateurs qui sont tout simplement de l'utiliser pour programmer la flash) sont d'usage courant (dans le royaume-UNI au moins!) et me semble être la non-confusion, combinant que de la méthode de l'interface et la fucntion fourni.
il est généralement appelé dans certains fabricant-marque de fantaisie-nom comme par exemple de Treillis de ispTHINGY, mais vers le bas dans les bits qu'ils utilisent les mêmes 0/1 codage JTAG définit, vient de prolonger avec quelques nouveaux sous-états.. de toute façon je suis bavard encore une fois, désolé..
À l'inverse, je jamais utiliser JTAG pour niveau du conseil d'administration de tests, pour faire du debug. Je pense que la lecture de trop dans l'acronyme est une erreur (comme avec beaucoup d'acronymes 🙂 Et JTAG a été explicitement conçu pour avoir un constructeur extensions pour debug-comme des fins, il n'est donc pas comparable à SPI etc. Et je ne dis pas appeler JTAG un débogueur. C'est est cependant utile et largement utilisé débogueur interface
OriginalL'auteur Martin Thompson
Le JTAG a une interface unique qui vous permet de déboguer le matériel facilement en temps réel. Il peut contrôler directement les cycles d'horloge du contrôleur par l'intermédiaire d'un logiciel. Par conséquent, vous pouvez mettre le matériel des points d'arrêt dans votre code d'exécution. Vous pouvez démarrer, mettre en pause, arrêter l'exécution de code dans le matériel que vous le souhaitez.
Chaque fois que JTAG contrôle est définie à
1
de l'oscillateur de l'horloge sera connecté au PROCESSEUR, d'autre CPU ne recevrez pas de l'horloge et ne peut pas exécuter une instruction.De cette façon, vous pouvez contrôler l'exécution des instructions dans le matériel.OriginalL'auteur Nagendra Pulaparthi