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