Joint Test Action Group (kurz JTAG) bezeichnet den IEEE-Standard 1149.1, der eine Ansammlung von Verfahren zum Testen und Debuggen von elektronischer Hardware direkt in der Schaltung beschreibt. Für den SpartanMC existiert eine Peripherie-Komponente welche die Kommunikation per JTAG vereinfacht. Die Komponente besitzt eine Erweiterung um die Takt-Steuerung für MSP430 Prozessoren zu unterstützen.
Verbindungen
Neben den typischen JTAG Signalen besitzt die Komponente eine Interrupt-Leitung um das Ende einer Übertragung zu signalisieren.
Name | Richtung | Bedeutung
|
intr | out | Interrupt Signal
|
tck | out | Jtag Takt Signal
|
tms | out | Jtag Test Mode Select, steuert den Tap-Controller im Kommunikationspartner
|
tdi | out | Jtag Test Data In, Daten die versendet werden
|
tdo | in | Jtag Test Date Out, Daten die empfangen werden |
Register
Das User-Interface zum SpartanMC besteht aus 5 Registern:
Adresse | Name | Beschreibung
|
0 | Konfiguration | Schreiben der Konfiguration der Komponente
|
1 | TAP Adressen | Adressen für Schiebe-Operationen setzen
|
2 | Daten zum Target | Daten die gesendet werden sollen
|
3 | Daten-Länge | Anzahl der Bit die gesendet werden sollen
|
4 | Daten vom Target | Empfangene Daten vom Target |
Konfigurationsregister
Bit | Name | Bedeutung
|
0-9 | clkdiv | Takt-Vorteiler
|
10 | irqenable | Interrupt enable
|
11 | run | Aktivierung Automatikmodus
|
12 | tclk | Setze MSP-Takt auf diesen Wert
|
13 | tms | tms Pegel des Signals im Manuellen Modus
|
14 | tdi | tdi Pegel des Signals im Manuellen Modus
|
15 | tck | tck Pegel des Signals im Manuellen Modus
|
16 | gated_tck | Taktgenerierung nur wenn nötig
|
17 | busy | Anzeige ob Komponente arbeitet |
TAP Adressen
Bit | Name | Bedeutung
|
0-3 | Shift-State | Register in das die Daten geschoben werden
|
4-7 | End-State | TAP-Controller-Zustand der eingenommen wird wenn Daten übertragen wurden
|
8 | reverse send | 0 bedeutet LSB zuerst schieben, 1-> MSB zuerst schieben
|
9 | reverse receive | 0 -> Daten ins LSB übernehmen, 1-> Daten ins MSB übernehmen
|
17-10 | not used | ---- |
Benutzung
Initialisierung
- Konfiguration der Komponente
- Mit Hilfe der tms und tck bit im Konfigurationsregister den Run-Test-Idle-Modus fahren:
Reset und RunTestIdle
// TAP Controller to Reset
jtag->jtagfields.config.tms = 1;
for (i = 8; i > 0; i--) {
jtag->jtagfields.config.tck = 0;
jtag->jtagfields.config.tck = 1;
jtag->jtagfields.config.tck = 0;
jtag->jtagfields.config.tck = 1;
}
// TAP Controller manuell in RUN_TEST_IDLE fahren
jtag->jtagfields.config.tms = 0;
jtag->jtagfields.config.tck = 0;
jtag->jtagfields.config.tck = 1;
- Automatik-Modus über run-bit aktivieren
jtag->jtagfields.config.run = 1;
Übertragung von Daten
- Setzen der Adressen
- Setzen der zu übertragenen Daten
- Setzen der Länge (startet die Übertragung)
- Warten bis Bysy-Bit im Konfigurationsregister auf 0 weckselt
- Lesen der empfangenen Daten