-
Die Erfindung betrifft ein Verfahren zum Ansteuern einer Zustandsmaschine und eine Anordnung zur Durchführung des Verfahrens.
-
Stand der Technik
-
Eine Zustandsmaschine, die auch als endlicher Automat bezeichnet wird, stellt ein Modell eines Systems dar, welches aus Zuständen, Zustandsübergängen und Aktionen besteht. Als endlich wird der Automat bezeichnet, wenn die Menge an Zuständen, die der Automat einnehmen kann, endlich ist.
-
Ein Zustand speichert die Informationen über die Vergangenheit, d.h. er reflektiert die Änderungen der Eingabe seit dem Systemstart bis zum aktuellen Zeitpunkt. Ein Zustandsübergang zeigt eine Änderung des Zustands des Automaten an und wird durch eine logische Bedingung beschrieben, die erfüllt sein muss, um den Zustandsübergang zu ermöglichen. Eine Aktion ist die Ausgabe des Automaten, die in einer bestimmten Situation erfolgt.
-
Eine Zustandsmaschine kann als Zustandsübergangsdiagramm dargestellt werden. Zusätzlich können unterschiedliche Typen von Übergangstabellen benutzt werden.
-
Zustandsmaschinen werden vornehmlich in der Entwicklung digitaler Schaltungen und der Modellierung des Applikationsverhaltens von Steuerungen sowohl bei Hardware, Software als auch bei gemischten Systemen eingesetzt.
-
Zum Testen von elektronischen Einheiten bzw. von elektronischer Hardware ist eine Anzahl von Verfahren bekannt. Diese haben zum Ziel, Fehler in der Hardware zu erkennen und diese zu beseitigen, was auch als Debuggen bezeichnet wird.
-
Die sogenannte Joint Test Action Group (JTAG) bezeichnet einen Standard, der eine Ansammlung von Verfahren zum Testen und Debuggen von elektronischer Hardware direkt in der Schaltung beschreibt. Ein derzeit verbreitetes Verfahren ist der sogenannte Boundary Scan Test.
-
Das Verfahren dient dazu, integrierte Schaltungen auf Funktion zu testen, während diese sich bereits in ihrer Arbeitsumgebung befinden. Hierzu kann diese bspw. auf einer Platine verlötet sein. Ein JTAG-fähiges IC kann Komponenten besitzen, die im Normalbetrieb vollkommen abgetrennt sind und somit die Funktion des Bauteils nicht beeinträchtigen. Erst durch Aktivierung der JTAG-Funktion durch eine Sequenz wird die Kontrolle bestimmter Funktionen an JTAG übergeben. Die Schnittstelle von JTAG zur Außenwelt ist in der Regel als Schieberegister implementiert.
-
Eine JTAG-Komponete besteht im Wesentlichen aus folgenden Teilen:
Dem Test Access Port (TAP) mit Steuerleitungen, der auch als JTAG Port oder JTAG-Schnittstelle bezeichnet wird.
-
Dem TAP-Controller, der eine Zustandsmaschine bzw. State-Machine darstellt, welche die Testlogik steuert.
-
Zwei Schieberegistern, dem Instruction Register (IR) und dem Data Register (DR).
-
Der Test Access Port (TAP) umfasst fünf Steuerleitungen:
- 1. Test Data Input (TDI): serieller Eingang der Schieberegister,
- 2. Test Data Out (TDO): serieller Ausgang der Schieberegister,
- 3. Test Clock (TCK): das Taktsignal für die gesamte Testlogik,
- 4. Test Mode Select Input (TMS): diese Leitung bestimmt, in welchen folgenden Zustand die Zustandsmaschine des Test Access Port bei der nächsten positiven Signalflanke des TCK-Signals springt,
- 5. Test Reset (Reset der Testlogik): dieses Signal ist optional.
-
An eine JTAG-Schnittstelle können mehrere integrierte Schaltungen angeschlossen werden. Es kommt dabei zu einer Reihenschaltung der Schieberegister der beteiligten ICs.
-
Der TAP-Controller ist ein von TCK getakteter und von der TMS-Leitung gesteuerter Zustandsautomat. Die TMS-Leitung bestimmt dabei, in welchem Folgezustand beim nächsten Takt gesprungen wird. Der TAP-Controller hat sechs stabile Zustände, d.h. Zustände, in denen mehrere Takte über verblieben werden kann.
-
JTAG stellt somit eine zumindest zum Teil standardisierte Schnittstelle zur Verfügung. Über diese Schnittstelle kann ohne Unterstützung eines Mikrocontrollers auf diesen zugegriffen werden.
-
Für den Zugriff auf den Mikrocontroller über die standardisierte Schnittstelle, dem TAP mittels des TAP-Controllers, der als Zustandsmaschine beschrieben werden kann, sind unterschiedliche Methoden bzw. Sprachen bekannt. Eine solche Sprache bzw. Dateiformat ist bspw. das sogenannte Serial Vector Format (SVF).
-
SVF ist ein Dateiformat zum Austausch von Boundary Scan Testvektoren. Es wurde mit dem Ziel einer herstellungsunabhängigen Beschreibung von JTAG-Operationen entwickelt.
-
SVF-Dateien enthalten eine Folge von SVF-Anweisungen, die beschreiben, wie die JTAG-State-Machine durchlaufen werden soll. Die beiden wesentlichen Kommandos sind die Schiebeanweisung SIR (Scan Instruction Register) und SDR (Scan Data Register). SIR führt eine Schiebeoperation in das Instruction Register, SDR eine Schiebeoperation in das momentan aktive Datenregister durch, jeweils mit einer angegebenen Anzahl an Bits.
-
SVF ist ein ASCII-Format, das leicht zu lesen und zu modifizieren ist.
-
Nachteilig bei SVF ist, dass nur auf vorbestimmte Weise die Zustände der Zustandsmaschine des TAP-Controllers durchlaufen werden können. Wenn dies nicht ausreichend ist, kann SVF nicht verwendet werden.
-
Offenbarung der Erfindung
-
Vor diesem Hintergrund werden ein Verfahren zum Ansteuern einer elektronischen Einheit gemäß Patentanspruch 1 und eine Anordnung zur Durchführung des Verfahrens mit den Merkmalen des Anspruchs 7 vorgestellt. Weitere Ausgestaltungen der Erfindung ergeben sich aus den abhängigen Patentansprüchen und der Beschreibung.
-
Das vorgestellte Verfahren ermöglicht, eine Zustandsmaschine anzusteuern und dabei nicht nur vorgegebene Pfade abzulaufen bzw. zu beschreiben. Dies ist insbesondere bei der Ansteuerung eines TAP-Controllers als JTAG-Schnittstelle von Bedeutung.
-
Über die JTAG-Schnittstelle wird auf einen Mikrocontroller zugegriffen, ohne dass dessen Unterstützung notwendig ist. SVF, das ein bekanntes Skript darstellt, das standardisiert ist, kann in diesem Fall nicht verwendet werden. Mit dem vorgestellten Verfahren kann jeder beliebige Pfad innerhalb der Zustandsmaschine beschritten werden. Dies ist insbesondere bei Mikrocontrollern von Bedeutung, die einen Pfad durch den TAP-Controller erfordern, der nicht durch SVF abgedeckt ist.
-
Bei dem Verfahren wird ein Skript eingesetzt, das mit einer Sprache bzw. einer Programmiersprache erstellt wird. Eine solche Sprache wird auch als Skriptsprache bezeichnet. Skriptsprachen sind Programmiersprachen, die vor allem für kleine und überschaubare Programmieraufgaben eingesetzt werden. Programme, die in einer Skriptsprache geschrieben sind, werden als Skripte bzw. Scripts bezeichnet.
-
Die eingesetzte Sprache ermöglicht es, Skripte zu generieren, die einen Prozesshersteller und Chip unabhängigen Zugriff über eine dazu ausgebildete Anordnung, eine Hardware, auf die JTAG-Schnittstelle ermöglichen.
-
Ein Vorteil des vorgestellten Verfahrens ist die volle Flexibilität durch Generierung beliebiger, hardwarenaher Sequenzen für den JTAG-TAP Controller des Mikrocontrollers, d.h. es muss keine Firmware geändert werden, um z.B. neue Derivate des Mikrocontrollers oder andere Hersteller des Mikrocontrollers mit neuen oder unterschiedlichen JTAG-Kommandos zu unterstützen. Eine Werkzeug gestützte Generierung der entsprechenden Skripte (ASCII-File) wird ermöglicht.
-
Allerdings ist eine genaue Kenntnis der Hardware (JTAG TAP Controller) für die Generation der richtigen Sequenzen erforderlich.
-
Grundsätzlich können zwei Befehle verwendet werden, nämlich "Step", der einen Weg vornimmt, ohne Daten auszutauschen, und "Data Transfer" bzw. "Data", bei dem ein Weg vorgenommen wird und Daten ausgetauscht werden. Weiterhin ist ein Schleifenmechanismus durchführbar.
-
Befehl:
step
-
Parameter:
TDI-Wert
Anzahl an Schritten
TMS Sequenz bzw. Bitfolge
-
Eigenschaften:
erzeugt eine Anzahl an steigenden TCK-Flanken und die spezifizierte TMS-Sequenz
TDI bleibt wie spezifiziert konstant
-
Befehl:
Data Transfer
-
Parameter:
Anzahl der Bits
TMS Sequenz
TDI Sequenz
erwartete TDO Sequenz
TDO Bit-Maske
-
Retry Count (x)
Definition einer Step- bzw. Schrittsequenz, um den TAP-Controller zurück zum Beginn der Datenübertragung zu bewegen, damit wird die Anzahl der Wiederholungen dieser Schrittsequenz angezeigt
-
Eigenschaften:
erzeugt eine Anzahl an TCK-Takt-Flanken mit den spezifizierten TMS und TDI Signalen
eine Datenübertragung wird wiederholt durchgeführt, bis TDO mit dem erwarteten Wert übereinstimmt oder eine Anzahl von Wiederholungen überstiegen wird
-
Weitere Befehle können sein:
Befehl:
Request JTAG
-
Parameter:
Anfangswerte für TMS, TDI
-
Eigenschaften:
JTAG-Signale werden nicht während der Befehlsausführung geändert (d.h. keine Erzeugung einer TCK-Flanke, TCK hoch) Businhaberschaft bleibt, bis zur expliziten Freigabe über Befehl Release JTAG
-
Befehl:
Release JTAG
-
Parameter:
keine
-
Eigenschaften:
JTAG-Signale werden nicht während der Befehlsausführung geändert (d.h. keine Erzeugung einer TCK-Flanke, TCK hoch) Businhaberschaft wird freigegeben
-
Die Befehle Request und Release sind nur notwendig, wenn mehrere konkurrierende Schnittstellen-Geräte an einer JTAG-Schnittstelle angeschlossen sind.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und den beiliegenden Zeichnungen.
-
Es versteht sich, dass die voranstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen.
-
Kurze Beschreibung der Zeichnungen
-
1 zeigt in einem Zustandsdiagramm einen TAP-Controller.
-
2 zeigt eine Ausführung einer Anordnung zur Durchführung des vorgestellten Verfahrens in einer schematischen Darstellung.
-
3 zeigt eine Ausführung eines Schnittstellen-Controllers.
-
4 zeigt Signalverläufe beim Befehl Request/Release JTAG Bus.
-
5 zeigt Signalverläufe beim Befehl Step.
-
6 zeigt die Befehlsstruktur des Befehls Data.
-
7 zeigt Signalverläufe des Befehls Data.
-
8 zeigt Signalverläufe des Befehls Data.
-
Ausführungsformen der Erfindung
-
Die Erfindung ist anhand von Ausführungsformen in den Zeichnungen schematisch dargestellt und wird nachfolgend unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
-
In 1 ist in einem Zustandsdiagramm 10 ein TAP-Controller 11 dargestellt, der dazu dient, eine Testlogik zu steuern. Dieser TAP-Controller 11 stellt eine Zustandsmaschine 13 dar, deren Verhalten durch das Zustandsdiagramm 10 beschrieben wird. Die Darstellung zeigt eine Anzahl von Zuständen und Zustandsübergänge. Gezeigte Zustände sind: TEST-LOGIC-RESET 12, RUN-TEST/IDLE 14, SELECT-DR-SCAN 16, CAPTURE-DR 18, SHIFT-DR 20, EXIT1-DR 22, PAUSE-DR 24, EXIT2-DR 26, UPDATE-DR 28, SELECT-IR-SCAN 30, CAPTURE-IR 32, SHIFT-IR 34, EXIT1-IR 36, PAUSE-IR 38, EXIT2-IR 40, UPDATE-IR 42.
-
Eine Dateneingabe und Datenausgabe erfolgt bei den mit Bezugsziffer 20 und 34 bezeichneten Zuständen. Das dargestellte Zustandsdiagramm 10 entspricht dem JTAG-Standard.
-
Eine Sequenz, d.h. eine Abfolge von Zustandsübergängen, die nicht mit SVF dargestellt werden kann ist folgende:
Zustand 14 – Zustand 16 – Zustand 18 – Zustand 20 – Zustand 22 – Zustand 24 – Zustand 26 – Zustand 28 – Zustand 14
-
2 zeigt eine Ausführung einer Anordnung zur Durchführung des vorgestellten Verfahrens, die insgesamt mit der Bezugsziffer 50 bezeichnet ist. Die Darstellung zeigt ein Werkzeug 52, auf dem ein Skript abgelegt ist. Weiterhin ist eine Zugangshardware 54 mit einer Recheneinheit 56 und eine Schnittstelle 58 wiedergegeben. Diese Schnittstelle 58, bspw. eine JTAG-Schnittstelle, stellt die Verbindung zu einem Gerät 60 dar.
-
Das Skript in dem Werkzeug 52 definiert auf relativ abstraktem Niveau, welche Daten über die Schnittstelle 58 an das Gerät 60 übertragen werden. Die Recheneinheit 56 führt das Skript aus und nutzt dazu die in der Zugangshardware 54 vorhandene Schnittstelle 58.
-
3 zeigt das Gerät 60 aus 2 und dabei insbesondere die Schnittstelle 58 in detaillierter Ansicht. Diese ist als Multi-Core-Controller ausgebildet und umfasst eine JTAG HW IF (IF: Interface; Schnittstelle) 72, einen JTAG (TAP Master) 74, einen JTAG-Kern (TAP Core 1) 76, einen JTAG-Kern (TAP Core 2) 78 und einen JTAG-Kern (TAP Core 3) 80. An die JTAG-Schnittstelle 72 werden die Steuerleitungen TCK, TMS, TDI, TDO und optional TRST angelegt. den JTAG- Kernen 76, 78 und 80 sind jeweils Register zugeordnet.
-
Zu beachten ist, dass jedes JTAG IF im Controller (TAP) den JTAG-Zustandsautomaten implementiert. JTAG HW IF 72 terminiert in einem JTAG Master 74. Um den Zugriff vom JTAG Master 74 zu einem anderen JTAG TAP zu lenken, gibt es häufig spezielle Befehle. Um den Zugriff von einem JTAG TAP zurück zum Master 74 oder zu einem anderen TAP zu lenken, muss in der Regel der JTAG Zustandsautomat in einer speziellen Sequenz durchlaufen werden.
-
3 stellt eine Möglichkeit einer JTAG-Implementierung dar, bei der eine spezielle Sequenz durchlaufen werden muss, die mit SVF nicht dargestellt werden kann.
-
4 stellt ein Zeitdiagramm für den Request JTAG Befehl dar. Die Darstellung zeigt neben dem Verlauf der Signale an den Steuerleitungen die Struktur des Befehls dar, nämlich in einer ersten Reihe 100 die allgemeine Befehlsstruktur und in einer zweiten Reihe 102 die konkrete Befehlsstruktur. In der ersten Reihe enthält ein erster Block 104 den Befehlsbezeichner (Command Identifier (7 Bits), ein nächster Block 106 die Zuweisungsvorschrift 1 = Request, 0 = Release (1 Bit) und ein dritter Block 108 eine Zuweisung für Anfangswerte (Initial values for TMS, TDI (8 Bits). In der zweiten Reihe 102 umfasst ein erster Block 110 den Befehlsbezeichner (Command Identifier (7 Bits), ein zweiter Block 112 die Zuweisung "1" = "Request" und ein dritter Block 114 die Zuweisungen TMS = "0", TDI = "0".
-
Die entsprechenden Verläufe der Signale an den Steuerleitungen sind darunter dargestellt, nämlich TCK 120, TMS 122, TDI 124, BREQ 126 und BGRANT 128.
-
5 stellt ein Zeitdiagramm für ein Beispiel des Step Befehls dar. In einer ersten Reihe 150 ist die grundsätzliche Befehlsstruktur dargestellt. Eine zweite Reihe 152 umfasst eine konkrete Befehlsstruktur.
-
Die erste Reihe 150 umfasst einen ersten Block 154 für den Befehlskennzeichner (Command Identifier (8 Bits)), einen zweiten Block 156 für den TDI-Wert (TDI value (8 Bits)), einen dritten Block 158 für die Feldbreite (Field width m in Bytes (8 Bits)), einen vierten Block 160 für die Anzahl an Schritten (Number of steps n (8 Bits)) und einen fünften Block 162 für eine Zuweisung (N TMS Bits (N ≤ m·8)).
-
Die zweite Reihe 152 umfasst einen ersten Block 180 mit einem Befehlskennzeichner (Command Identifier (8 Bits)), einen zweiten Block 182 mit einer Zuweisung TDI = "0", einen dritten Block 184 mit einer Zuweisung Field width = 0x2, einen vierten Block 186 mit einer Zuweisung Number of steps = 0xE und einen fünften Block 188 mit einer Zuweisung TMS = 0x1803.
-
Die entsprechenden Verläufe der Signale an den Steuerleitungen sind darunter dargestellt, nämlich TCK 190, TMS 192 und TDI 194.
-
In 6 stellt in einer ersten Reihe 200 die allgemeine Befehlsstruktur des Data-Befehls und in einer zweiten Reihe 202 eine konkrete Struktur des Befehls Data dar.
-
Die erste Reihe 200 umfasst einen ersten Block 204 mit einem Befehlsbezeichner (Command Identifier (8 Bits)), einen zweiten Block 206 mit einer Zuweisung zur Feldbreite (Field width m in Bytes (8 Bits)), einen dritten Block 208 mit Angabe der Datenbits (Data Bits n (8 Bits)), einen vierten Block 210 mit einer Zuweisung (n TMS Bits (m·8 Bits)), einen fünften Block 212 mit einer Zuweisung (n TDI Bits (m·8 Bits)), einen sechsten Block 214 mit einer Zuweisung (n expected TDO Bits (m·8 Bits)), einen siebten Block 216 mit einer Zuweisung (n TDO mask Bits (m·8 Bits)), einen achten Block 218 mit der Zuweisung (TDI repeat value (8 Bits)), einen neunten Bock 220 mit einem Wiederholungszähler (Repeat count x (8 Bits), einen zehnten Block 222 zur Angabe der Feldbreite (Field width p in Bytes (8 Bits)), einen elften Block 224 zur Angabe der Anzahl an Schritten (Number of steps q for repeat sequence (8 Bits)) und einen zwölften Block 226 mit einer Zuweisung (q TMS Bits for repeat sequence (p·8 Bits)).
-
Die zweite Reihe 202 umfasst einen ersten Block 234 mit einem Befehlsbezeichner (Command Identifier (8 Bits)), einen zweiten Block 236 mit einer Zuweisung zur Feldbreite = 0x1 (Field width = 0x1), einen dritten Block 238 mit Angabe der Datenbits = 0x8(Data Bits = 0x8), einen vierten Block 240 mit einer Zuweisung (TMS = 0x80), einen fünften Block 242 mit einer Zuweisung (TDI = 0x48), einen sechsten Block 244 mit einer Zuweisung (expected TDO = 0x2A), einen siebten Block 246 mit einer Zuweisung (TDO mask = 0x0F), einen achten Block 248 mit der Zuweisung (repeat count x = 0xA), einen neunten Bock 250 mit der Zuweisung (TDI repeat value = "0", einen zehnten Block 252 zur Angabe der Feldbreite (Field width = 0x1), einen elften Block 254 zur Angabe der Anzahl an Schritten (Number of steps = 0x4) und einen zwölften Block 256 mit einer Zuweisung (TMS = 0x03).
-
Die entsprechenden Verläufe an den Signaleingängen sind in 7 dargestellt, nämlich TCK 260, TMS 262, TDI 264 und TDO 266. Dies bedeutet, dass an den Signalen die dargestellten Signalverläufe anzulegen sind, um den genannten Befehl auszuführen.
-
7 stellt folglich ein Zeitdiagramm für ein Beispiel des Data Transfer Befehls mit erfolgreichem Abschluss dar, d.h. der TDO-Wert entspricht dem erwarteten TDO-Wert unter Berücksichtigung der Maske. Dies wird zu einem Zeitpunkt 270 ermittelt.
-
8 entspricht 7, lediglich mit nicht erfolgreichem Abschluss, d.h. der Zugriff wird wiederholt, sofern die maximale Anzahl noch nicht erreicht ist. Hierbei sind wieder die Verläufe an den Signaleingängen wiedergegeben, nämlich TCK 280, TMS 282, TDI 284 und TDO 286. Der Ablauf wird beispielsweise bis zu zehnmal wiederholt (Pfeil 290). Die Überprüfung des TDO-Werts erfolgt zu einem Zeitpunkt 294
-
Das vorgestellte Verfahren ermöglicht es, einen Pfad von einem Zustand zu einem nächsten Zustand explizit vorzugeben. Im Gegensatz zu SVF werden keine impliziten Übergänge bestimmt.
-
Auf diese Weise kann von außen gezielt Einfluss auf das zu testende Gerät, das Software und/oder Hardware umfassen kann, genommen werden. Dies kann einem Testen des Geräts dienen, mögliche Anwendungen sind jedoch nicht darauf beschränkt. Somit kann das Verhalten eines Steuergeräts geändert werden, ohne dass dieses den Vorgang aktiv unterstützen muss.