Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
jtag:tutorials:start [Mon. 12.03.2018 13:43]
wikiadmin [Aller Anfang ist schwer...]
jtag:tutorials:start [Tue. 13.03.2018 06:26] (aktuell)
wikiadmin
Zeile 81: Zeile 81:
  
 ===== Wie kommuniziere ich nun mit dem Chip? ===== ===== Wie kommuniziere ich nun mit dem Chip? =====
 +
 +== Erstes Etappenziel:​ IDCODE auslesen ==
 +
 +Um schnell einen Erfolg zu erziehlen und auch das ganze Setup zu überprüfen,​ nehmen wir uns etwas einfaches vor, das auslesen des IDCODEs aus dem Chip. Um das hinzubekommen musst Du erst ein klein Wenig Theorie kennen.
 +
 +== Automatische IDCODE Bereitstellung nach Reset ==
 +
 +Ein JTAG-Controller soll seinen IDCODE nach einem Reset in das Datenregister stellen. Durch geeignete Ansteuerung der Statemachine über den TMS-Pin kann man dieses Register dann zwischen TDI und TDO schalten und die darin befindlichen Bits "​heraustakten"​.
 +
 +Neben dem Reset nach einschalten kann man aber auch per Hardware oder Software einen Reset durchführen. Hierzu führen manche JTAG-Header einen zusätzlichen Pin, namens ''​TRST''​ (oder manchmal auch ''​nTRST''​ bezeichnet) heraus. Der ist active-Low und sollte während des Betriebs mit einem Pullup auf den HIGH-Pegel gezogen werden. Eine andere Möglichkeit ist den Reset per Software auszulösen,​ indem man über TMS eine bestimmte Bitfolge einschreibt.
 +
 +Um das Ziel zu erreichen musst Du also nun wissen wie man einen Soft-Reset auslöst, wie man das Datenregister aktiviert und wie man die Daten dann daraus ausliest. Das zeige ich dir nun...
  
 == Grundlegende Kommunikation == == Grundlegende Kommunikation ==
  
-Diese ist seriell, sowohl für die Daten als auch für die Befehle. Die Daten werden ​an den TDI und TDO-Pins gesendet ​bzw. empfangen, die Befehle ​über den TMS-Pin. ​Wann die jeweilige Information an den Pins stabil ist und übernommen ​wird, regelt ​die Taktleitung TCK. Hierbei sind die Übergänge ​von 0 nach 1 bzwnach 0 entscheident.+Diese ist seriell, sowohl für die Daten als auch für die Befehle. Die Daten werden ​am TDO Pin gesendet ​und am TDI-Pin ​empfangen. Der Betriebszustand des JTAG-Controllers wird über eine State-Machine bestimmtwelche vom TMS-Pin gesteuert wird. Der Betriebszustand entscheidet was mit eingehenden Daten zu tun ist, bzw. welche ausgenden Daten bereitgestellt werden sollen. 
 + 
 +Der Aufbau und die Funktion der State-Machine sind wichtig, bedarf aber etwas Erklärung. Kurz gesagt sendet man eine bestimmte Bitfolge ​über den TMS-Pin ​um einen bestimmten Zustand zu erwirken([[nerdwissen_statemachine|Nerd-Wissen:​ Die JTAG State-Machine]])) 
 + 
 +Zur Synchronisation der Zustands- ​und Datensignale ​wird die Taktleitung TCK genutztBeim Übergang ​von LOW zu HIGH (steigende Flanke) wird das an TMS anstehende Signal übernommen. 
 + 
 +nach LOW oder umgekehrt, werden bestimmte Zustände übernommen.
  
 Intern liegt zwischen TDI und TDO ein Schieberegister. Die Breite dieses und die Verwendung der darin befindlichen Daten bestimmt der Betriebsmodus des Chips, der über JTAG-Befehle gesteuert wird. Intern liegt zwischen TDI und TDO ein Schieberegister. Die Breite dieses und die Verwendung der darin befindlichen Daten bestimmt der Betriebsmodus des Chips, der über JTAG-Befehle gesteuert wird.