jtag:tutorials:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
jtag:tutorials:start [Sun. 11.03.2018 15:28] wikiadminjtag:tutorials:start [Sun. 11.03.2018 15:52] wikiadmin
Zeile 38: Zeile 38:
 == Grundlegende Kommunikation == == Grundlegende Kommunikation ==
  
-Mit JTAG kann man mehr als einen Chip verbindenDiese sind dabei datentechnisch in Reihe geschaltetDas nennt man eine "JTAG-Chain"Es gilt also erstmal herauszufinden wieviele Chips intern im Gerät vorhanden sind.+Diese ist seriell, sowohl für die Daten als auch für die BefehleDie Daten werden an den TDI und TDO-Pins gesendet bzwempfangen, die Befehle über den TMS-PinWann die jeweilige Information an den Pins stabil ist und übernommen wird, regelt die Taktleitung TCK. Hierbei sind die Übergänge von 0 nach 1 bzw. 1 nach 0 entscheident.
  
-Die Kommunikation erfolgt seriellÜber den TDI-Pin des Chips werden Daten von außen in diesen hinein geschriebenDer TDO-Pin gibt Daten aus dem Chip heraus. Die Synchronisation dieser Pins erfolgt über den TCK-Pindem Taktsignal.+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. 
 + 
 +Sind mehrere JTAG-fähige Chips auf einem Board vorhanden, werden deren Datenleitungen in Reihe geschaltetAlso TDO des einen an TDI des nächsten Chips. Dadurch ergibt sich eine Kette, "JTAG-Chain" genannt, der einzelnen Schieberegister: 
 + 
 +TAP               Chip 1                  Chip 2 
 +  TDO ---->| TDI [010100011] TDO |---->| TDI [11111] TDO |---. 
 +  TDI <------------------------------------------------------'                                                    
 + 
 +Will man also nur die Daten eines bestimmten Chips lesen oder schreiben, muss man wissen an welcher Stelle der Chain sich dieser befindet. 
 + 
 + 
 +Die Befehls- und Taktleitung liegt an allen parallel an, was bedeutet das immer alle den gleichen Betriebszustand einnehmen werden. 
 + 
 + 
 + 
 + 
 + 
 +Mit JTAG kann man mehr als einen Chip verbindenDiese sind dabei datentechnisch in Reihe geschaltet und man nennt das eine "JTAG-Chain". Man kann sich das wie eine Verkettung von Schieberegistern vorstellen: 
 + 
 + 
 +Die Kommunikation vom Testadapter (unserem Arduino) mit der Chain erfolgt also seriell. Jeder Chip enthält seinen eigenen JTAG-Controller. Sein Betriebsmodus bestimmt, was mit den einfließenden Daten an TDI zu tun ist und welche Daten an TDO anliegen. Dieser Modus wird über die separate TMS-Leitung eingestellt, ebenfalls seriell. 
 + 
 +Zur Synchronisation dient das Clocksignal TCK. Bei der steigenden, bzw. fallenden Flanke des Signals werden bestimmte Ein-, Ausgangssignale verarbeitet. Man muss wissen das TCK und TMS im Gegensatz zu TDI und TDO bei allen JTAG-Chips einer Chain parallel anliegen. Man steuert also über TMS nicht nur einen Chip sondern alle und der Betriebszustand ist immer für alle gleich. 
 + 
 +===== Anzahl der JTAG-Controller einer Chain bestimmen ===== 
 + 
 +Es gilt als erstes herauszufinden wieviele Chips in einer Chain verkettet sind. Das ist die Basis für alle weiteren UntersuchungenSpäter wirst Du das verstehen!
  
-In einer JTAG-Chain ist der TDO-Pin eines Chips mit dem TDI des nächsten verbunden. So ergibt sich eine Kette. Im Chip selbst wird zwischen TDI und TDO ein Schieberegister verbunden. Bei jedem Taktübergang wird ein Bit vom TDI in das Register geschoben und ein Bit aus diesem an den TDO gelegt. An allen Chips der Chain liegt das TCK-Signal parallel an. Somit ergibt sich ein großes, langes Schieberegister: 
  
-  TDO ----> TDI [010100011] TDO ----> TDI [11111] TDO ---. 
-  TDI <--------------------------------------------------'                                                    
  
-Wozu die Bits im Schieberegister dienen und wie "lang" (Bits) dieses ist, hängt vom JTAG-Controller im Chip und seines Betriebsmodus ab. Hier regelt die Norm nur wenig. 
  
-== Der Betriebsmodus der JTAG-Controller in der Chain wird mit dem TMS-Signal bestimmt == 
  
-Hierzu muss man wissen das das TMS-Signal parallel an allen Chips der JTAG-Chain anliegt. Man stellt damit also den Betriebsmodus von JEDEM Chip ein. Der Modus wird seriell eingestellt. Über den TMS ist eine Statemachine verbunden. Ausgehend von einem Betriebszustand wird eine Folge von Bits einen anderen Betriebszustand wählen. 
  
 Nach dem einschalten des Chips befindet sich der Controller im Zustand "Test-Logic Reset". Im Modus "Shift IR" verbindet der Controller das Befehlsregister an TDI+TDO. Dann kann man einen JTAG-Befehl senden. Oder im Modus "Shift DR" die Scandaten des Chips auslesen oder einschreiben. Dazu später mehr. Nach dem einschalten des Chips befindet sich der Controller im Zustand "Test-Logic Reset". Im Modus "Shift IR" verbindet der Controller das Befehlsregister an TDI+TDO. Dann kann man einen JTAG-Befehl senden. Oder im Modus "Shift DR" die Scandaten des Chips auslesen oder einschreiben. Dazu später mehr.
  • jtag/tutorials/start.txt
  • Zuletzt geändert: Tue. 13.03.2018 07:26
  • von wikiadmin