-
Die vorliegende Erfindung bezieht sich im Allgemeinen auf Debug-Trigger-Vorrichtungen in Datenverarbeitungssystemen, und im Besonderen auf eine anpassungsfähige Debug-Trigger-Vorrichtung.
-
Gegenwärtig werden Debug-Operationen, beispielsweise das Anhalten der Programmausführung, das Umschalten eines Pins zur Messung, das Erzeugen von Ablaufverfolgungs-Nachrichten und ähnliches, im Ansprechen auf einen spezifischen Wert oder eine spezifische Variable initiiert, der / die in einem Register oder einem Speicher gespeichert ist. Alternativ kann die Debug-Operation im Ansprechen auf einen Wert oder eine Variable ausgelöst werden, der / die in einem besonderen Funktionsregister gespeichert ist, beispielsweise ein A/D-Wandlungs-Ergebnis.
-
Zusätzlich zum Auslösen von Debug-Operationen mit einer Variablen ist es möglich, die Debug-Operation im Ansprechen auf einen Wechsel zwischen aufeinander folgenden Abtastungen auszulösen. Zwei Herangehensweisen werden verwendet, um einen Wechsel in Echtzeit zum Debuggen von Hardware und Software zu berechnen, eine Herangehensweise mit Instrumentierung und eine Herangehensweise mit Pipeline-Analyse.
-
Mittels der Herangehensweise mit Instrumentierung, die sich im Allgemeinen auf das Modifizieren der Software auf der Zielmaschine bezieht, wird die ausgetestete Software modifiziert, um explizit einen Wechsel zu berechnen. Der Wechselwert wird dann als besondere oder virtuelle Variable gespeichert. Die besondere oder virtuelle Variable wird sodann durch die Trigger-Logik analysiert. Diese Herangehensweise kann nicht in Situationen angewandt werden, in denen der Code festgelegt ist, oder in denen Timing kritisch ist, beispielsweise, wenn die Speicherung in einem nicht flüchtigen Speicher oder in timing-kritischen Anwendungen stattfindet, z.B. DSP-basiertes Filtern. In diesen Fällen hat das System zu dem Zeitpunkt, an dem die Trigger-Berechnung abgeschlossen ist, den Punkt überschritten, an dem der Trigger hätte ausgegeben werden sollen.
-
Mittels einer Pipeline-Analyse wird eine Variable verfolgt, und der Wechsel wird außerhalb des Chips (off-chip) entweder quasi-parallel berechnet mittels eines Host-Computers für schnelles Debuggen oder als Post-Mortem-Analyse, nachdem der Triggerwert erreicht worden ist. Selbstverständlich kann die Post-Mortem-Analyse keine Debug-Daten in Echtzeit liefern. Die parallele oder Off-Chip Verarbeitung ist der oben genannten Herangehensweise mit Instrumentierung ähnlich, wobei zu dem Zeitpunkt, an dem die Triggerberechnung abgeschlossen ist, das System den Punkt, an dem der Trigger hätte ausgegeben werden sollen, überschritten hat.
-
1 zeigt eine bekannte Debug-Trigger-Vorrichtung 100. Die Debug-Trigger-Vorrichtung 100 weist eine Registerdatei 10 und einen Komparatorblock 20 auf. Die Registerdatei 10, die die Parameter für den Komparatorblock 20 speichert, weist ein Vorzeichenregister 12, ein Maskenregister 14, ein Referenzregister 16 und ein Bereichsregister 18 auf. Der Komparatorblock 20 weist Berechnungsblöcke 22, 24, 26 und 28 auf. Der Komparatorblock 20 verwendet die in der Registerdatei 10 gespeicherten Parameter, um zu ermitteln, ob ein Debug-Trigger 40 ausgegeben werden sollte, durch Analysieren von über den Bus 30 empfangenen Daten. Typischerweise ist der Bus 30 ein 32-Bit Bus.
-
Im Betrieb führt der Komparatorblock 20 eine festgelegte Berechnung durch, um zu ermitteln, wann der Debug-Trigger auszugeben ist. Ein Datenwort wird von dem Bus 30 für den Berechnungsblock 22 bereitgestellt, der das ankommende Datenwort ausblendet, so dass nur die relevanten Daten übrig bleiben. Im Betrieb wird die Maske typischerweise mittels eines logischen UND implementiert. Die relevanten Daten werden dem Vorzeichenerweiterungs-Block 24 übermittelt, der das Vorzeichen-Bit für alle nicht relevanten Bits höherer Ordnung in dem Wort repliziert mittels des Vorzeichenwerts, der aus einer Bitposition, die in dem Vorzeichenregister 12 gespeichert ist, entnommen wurde. Dann subtrahiert der Berechnungsblock 26 einen Referenzwert X, der in dem Referenzregister 16 gespeichert ist, von dem verfolgten Wert, der der vorzeichenerweiterte Datenausgang aus Berechnungsblock 24 ist. Typischerweise ist der in dem Referenzregister 16 gespeicherte Wert die konstante Untergrenze des Bereichskomparators. Schließlich ermittelt der Berechnungsblock 28, ob die in dem Berechnungsblock 26 ermittelte Differenz innerhalb des Bereichs Y liegt, der in dem Bereichsregister 18 dargelegt ist. In Abhängigkeit von diesem Vergleich wird ein Triggersignal 40 ausgegeben. Es wird angemerkt, dass die in 1 gezeigte Schaltung in der Registerdatei 10 konstante Werte hält.
-
Im Betrieb hat die Schaltung von
1 die Gesamtgleichung
-
Somit wird gemäß Gleichung 1 ein Trigger-Signal ausgegeben, wenn sich die Daten zum Zeitpunkt t minus dem Referenzbetrag X nicht innerhalb des Bereichs zwischen 0 und Y, der Obergrenze des Bereichs, befinden.
-
DE 10 2005 035 473 A1 beschreibt ein Verfahren und ein System zur digitalen Triggerung für Oszilloskope. Zur Bestimmung eines Triggerzeitpunkts wird jeweils zwischen zwei aufeinander folgenden Abtastwerten eines Referenz-Signals und eines Schwellwerts ein Pegelvergleich durchgeführt. Ferner wird zwischen zwei aufeinander folgenden Abtastwerten des Referenz-Signals mindestens ein zusätzlicher Abtastwert des Referenz-Signals mittels Interpolation ermittelt.
-
DE 39 36 932 A1 beschreibt einen Triggersignalerzeuger für Oszilloskope. Der Triggersignalerzeuger weist einen A/D-Wandler und einen Digitalvergleicher auf. Der Digitalvergleicher vergleicht den digitalisierten Wert des analogen Eingangssignals mit einem von einem Speicher gelieferten Digitalwert und leitet hieraus die Triggerbedingung ab.
-
Der vorliegenden Erfindung liegt die Aufgabe zugrunde, eine Vorrichtung bereitzustellen, welche Debug-Daten in einem kürzeren Zeitraum zur Verfügung stellt, als dies nach dem Stand der Technik der Fall ist.
-
Diese Aufgabe wird durch eine Echtzeit-Debug-Trigger-Vorrichtung gemäß Anspruch 1 gelöst.
-
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben.
-
Gemäß einem Aspekt der Erfindung wird eine Echtzeit-Debug-Trigger-Vorrichtung bereitgestellt, die aufweist: einen Trigger-Logik-Block, der so konfiguriert ist, dass er bei einer Trigger-Berechnung abhängig von einem durch den Trigger-Logik-Block berechneten Wert und von einem aktuell in einem Referenzregister gespeicherten Wert ein Debug-Trigger-Signal für eine Software-Debug-Operation ausgibt; und Mittel zum Überschreiben des in dem Referenzregister gespeicherten Werts mit dem von dem Trigger-Logik-Block berechneten Wert zur Verwendung bei einer auf die Trigger-Berechnung nachfolgenden weiteren Trigger-Berechnung.
-
Figurenliste
-
- 1 zeigt eine bekannte Debug-Trigger-Vorrichtung.
- 2 zeigt eine Debug-Trigger-Vorrichtung gemäß einer Ausführungsform der Erfindung.
- 3 zeigt eine Debug-Trigger-Vorrichtung gemäß einer Ausführungsform der Erfindung.
- 4 ist ein Flussdiagramm, das ein Verfahren zum Ausgeben eines Debug-TriggerSignals zeigt, gemäß einer Ausführungsform der vorliegenden Erfindung.
-
DETAILLIERTE BESCHREIBUNG
-
2 zeigt eine Echtzeit Debug-Trigger-Vorrichtung 200 gemäß einer Ausführungsform der vorliegenden Erfindung. Insbesondere ist die Debug-Trigger-Vorrichtung 200 eine Debug-Trigger-Vorrichtung auf einem Chip (on-chip), die die Berechnung einer Triggerfunktion von außen bereitstellt. Die Debug-Trigger-Vorrichtung 200 weist eine Registerdatei 210 und einen Trigger-Logik-Block 220 auf. Die Registerdatei 210 weist ein Vorzeichenregister 12, ein Maskenregister 14, ein Referenzregister 216, ein Modusregister 208, ein Bereichsregister 218 und einen Eingang 212 auf. Der Trigger-Logik-Block 220 weist verschiedene interne Funktionsblöcke auf, die so ausgelegt sind, dass sie eine vorgegebene Triggerfunktion implementieren.
-
Wie gezeigt ist, können die Daten in einem Referenzregister 216 mit einem verfolgten Wert überschrieben werden, der von dem Trigger-Logik-Block 220 bereitgestellt wird. Der aktuell gespeicherte Wert wird während der Trigger-Berechnung verwendet, um zu ermitteln, ob ein Trigger-Signal 240 ausgegeben werden sollte. Der Wert wird teilweise unter Steuerung des Modusregisters 208 über die Nachlade-Steuerleitung 214 überschrieben. Ein Steuersignal, das den Zeitpunkt angibt, zu dem der Wert überschrieben wird, basiert auf Informationen von dem umgebenden System, beispielsweise Gültigkeit des Eingangs, Adresskomparatoren und/oder dem Trigger-Signal 240 selbst, usw. Die neu gespeicherte Variable wird in Folgeberechnungen verwendet, um festzustellen, wann das Trigger-Signal 240 ausgegeben wird. Es wird angemerkt, dass der Trigger-Logik-Block so ausgelegt ist, dass er eine Differenz zwischen Variablen, den absoluten Wert einer Differenz, die Summe von Variablen oder eine beliebige andere mathematische Beziehung zwischen Variablen berechnet. Es wird angemerkt, dass die Berechnung ebenso ein nichtlineares Ergebnis, z.B. eine dB-Skala für Tondaten oder Sättigung ergeben kann.
-
Die Registerdatei 210 weist einen Eingang 212 auf, der Daten bereitstellt, um den Inhalt der Register in der Registerdatei 210 zu ändern. Der Eingang 212 stellt ein Aktualisierungssignal für das Modusregister 208 bereit, das anzeigt, wenn eine Aktualisierung des Referenzregisters 216 erforderlich ist. Dieses Aktualisierungssignal wird im Allgemeinen unter Systemsteuerung erzeugt. Bei einer Ausführungsform ist der Eingang 212 ein Bus ähnlich dem Bus 30. Bei einer Ausführungsform stellt das Referenzregister 216 und/oder die anderen Register in der Registerdatei 210 Werte für eine Vielzahl von Trigger-Logik-Blöcken bereit.
-
Zusätzlich dazu, dass der Eingang 212 als Programmierschnittstelle fungiert, ist der Eingang 212 bevorzugt so konfiguriert, dass er, wie oben erläutert, ein Steuersignal für das Modusregister 208 bereitstellt, das anzeigt, wann das Aktualisierungssignal erzeugt wird und über die Nachlade-Steuerleitung 214 an das Referenzregister 216 ausgegeben wird. Typische Daten, die für das Modusregister 208 bereitgestellt werden, die teilweise verwendet werden, um zu ermitteln, wann ein Aktualisierungssignal erzeugt wird, das über die Nachlade-Steuerleitung 214 bereitgestellt wird, umfassen neue Daten auf dem Bus 30, eine Adressen-Komparator-Anpassung, usw. Es wird angemerkt, dass, obwohl ein einziger Eingang 212 gezeigt ist, eine Vielzahl von Eingangsleitungen vorliegen können, die Daten an die Registerdatei 210 liefern, einschließlich Daten, die über den Bus 30 an die Registerdatei 210 geliefert werden.
-
3 zeigt eine Debug-Trigger-Vorrichtung
300 gemäß einer weiteren Ausführungsform der vorliegenden Erfindung. Insbesondere zeigt
3 eine Debug-Trigger-Vorrichtung
300, die als Differenzkomparator oder Δ-Komparator implementiert ist. Die Debug-Trigger-Vorrichtung
300 weist eine Registerdatei
310 und einen Trigger-Logik-Block
320 auf. Die Registerdatei
310 weist ein Vorzeichenregister
12, ein Maskenregister
14, ein Referenzregister
316, ein Modusregister
308 und ein Bereichsregister
318 auf. Ein Eingangsbus
312 stellt Daten für die Registerdateien bereit. Der Trigger-Logik-Block
320 weist verschiedene interne Funktionsblöcke auf, die so ausgelegt sind, dass sie eine festgelegte Triggerfunktion implementieren. Insbesondere ist die Debug-Trigger-Vorrichtung
300 so ausgelegt, dass sie die folgenden Debug-Funktionen implementiert:
-
Bei der in 3 gezeigten Ausführungsform isoliert ein erster Berechnungsblock 22 die relevanten Datenbits von einem Datenwort. Insbesondere führt der erste Berechnungsblock 22 ein logisches UND durch mittels Eingangsdaten von dem Bus 30 und einer in dem Maskenregister 14 gespeicherten Maske. Dann repliziert der Vorzeichenerweiterungs-Block 24 das Vorzeichenbit von der in dem Vorzeichenregister 12 gespeicherten Position für alle nicht relevanten Bits höherer Ordnung in dem Datenwort. Der Subtraktionsblock 326 subtrahiert die Daten in dem Referenzregister 316 von dem relevanten Datenausgang aus dem Vorzeichenerweiterungs-Block 24, wie in Gleichung 2a oder 2b gefordert. Schließlich stellt der Berechnungsblock 28 fest, ob ein Debug-Trigger 340 ausgegeben werden sollte, basierend wenigstens teilweise auf einem in dem Bereichsregister 318 gespeicherten Wert, gemäß Gleichung 2a oder Gleichung 2b.
-
Es wird angemerkt, dass die Debug-Trigger-Vorrichtung 300 die Differenz in dem Subtraktionsblock 326 sowohl von einem positiven als auch von einem negativen Anstieg berechnen kann. Das Modusregister 308 stellt Daten für den Subtraktionsblock 326 über die Eingangsleitung 322 bereit, um zwischen einem positiven und einem negativen Anstieg zu unterscheiden. Zusätzlich wird der Datenausgang aus dem Vorzeichenerweiterungs-Block 24 an das Referenzregister 316 geliefert. Das Modusregister 308 enthält Daten, die zusätzlich dazu, dass sie ermitteln, wann die Subtraktionsfunktion zu negieren ist, um hinsichtlich eines positiven oder negativen Anstiegs zu korrigieren, auch ermitteln, wann die Referenzvariable in dem Referenzregister 316 aktualisiert werden sollte. Ein Aktualisierungssignal wird dem Referenzregister 316 von dem Modusregister 308 über die Nachlade-Steuerleitung 314 bereitgestellt. Der in dem Modusregister 308 gespeicherte Wert wird gemäß dem Debug-Programm bestimmt, das außerhalb des Umfangs der vorliegenden Offenbarung liegt.
-
Der Eingang 312 ist so konfiguriert, dass er Daten zum Aktualisieren eines oder mehrere der Register in der Registerdatei 310 bereitstellt. Gemäß dem Debug-Programm oder anderer Systemsteuerung wird das Aktualisierungssignal auf der Grundlage der Einstellung des Modusregisters 308 berechnet, das steuert, wann die Daten in dem Referenzregister 316 aktualisiert werden. Das Maskenregister 14 kann mit Daten geladen werden, um verschiedene Bits in dem Datenwort in dem Bus 30 zu isolieren. Das Bereichsregister 318 kann ebenso aktualisiert werden. Der Eingang 312 ist bevorzugt ein Bus ähnlich dem Bus 30. Bei einer anderen Ausführungsform liefert der Bus 30 die Aktualisierungsdaten an die Registerdatei 310.
-
Zusätzlich dazu, dass der Eingang 312 als Programmierschnittstelle fungiert, ist der Eingang 312 bevorzugt so konfiguriert, dass er, wie oben erläutert, ein Steuersignal für das Modusregister 308 bereitstellt, das anzeigt, wann das Aktualisierungssignal erzeugt wird und über die Nachlade-Steuerleitung 314 an das Referenzregister 316 ausgegeben wird. Typische Daten, die für das Modusregister 308 bereitgestellt werden, die teilweise verwendet werden, um zu ermitteln, wann ein Aktualisierungssignal erzeugt wird, das über die Nachlade-Steuerleitung 314 bereitgestellt wird, umfassen neue Daten auf dem Bus 30, eine Adressen-Komparator-Anpassung, usw. Es wird angemerkt, dass, obwohl ein einziger Eingang 312 gezeigt ist, eine Vielzahl von Eingangsleitungen vorliegen können, die Daten an die Registerdatei 310 liefern, einschließlich Daten, die über den Bus 30 an die Registerdatei 310 geliefert werden.
-
Obwohl der Trigger-Logik-Block 320 als Differenzblock erläutert worden ist, ist er nicht darauf beschränkt. Alternativ kann der Trigger-Logik-Block 320 eine andere Funktion aufweisen oder als andere Funktion implementiert sein, beispielsweise eine Summe, ein absoluter Wert, eine Logarithmusfunktion, oder ähnliches. Außerdem kann der Trigger-Logik-Block 320 so konfiguriert sein, dass er die Beziehung zwischen verschiedenen Bits in einem Wort analysiert. Mittels der in den 2 und 3 offenbarten Debug-Trigger-Vorrichtung können Berechnungen eines verfolgten Datenobjekts und die Verwendung des Ablaufverfolgungsdatenwerts zum Vergleich in Echtzeit durchgeführt werden.
-
Die offenbarte Trigger-Vorrichtung stellt einen flexibleren Trigger-Ausgang für eine Debug Operation bereit. Wenn beispielsweise die Daten, die in den Bus 30 eingegeben werden, der Ausgang eines Zählers sind, d.h. eines sequentiellen Zählers, der von 1 bis 10 läuft, isoliert die in dem Maskenregister 14 gespeicherte Maske die spezifischen Bits, die die Zählinformationen enthalten. Die isolierten Daten werden durch den Vorzeichenerweiterungs-Funktionsblock verarbeitet, so dass die Datenbits, anders als die spezifischen Zählbits, denselben Wert haben. Dieses Datenwort wird dann an das Referenzregister 316 geliefert, so dass es nach jedem Vergleich mit dem aktuellen Zählwert aktualisiert wird. Das Bereichsregister 318 speichert den Schrittwert, d.h. um 1 in dem vorliegenden Beispiel. Wenn der Zähler des vorliegenden Beispiels nicht sequentiell wäre, sondern stattdessen um 3 erhöht werden würde, d.h. 0, 3, 6, 9 ..., würde das Bereichsregister eine 3 enthalten. Somit wird der Trigger bei einer Differenz, die größer ist als der Bereich, z.B. wenn der Zähler einen Wert überspringt, aktiviert.
-
4 ist ein Flussdiagramm 400, das ein Verfahren zum Ausgeben eines Debug-Trigger-Signals gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie gezeigt ist, wird ein Datenwort von der Vorrichtung (S100) empfangen. Wenigstens ein relevantes Datenbit wird von dem Datenwort isoliert (S110). Es können verschiedene Verfahren verwendet werden, um die wenigstens einen relevanten Daten zu isolieren, einschließlich des Durchführens eines logischen UND für ein Maskenwort und das Datenwort. Dann wird für alle der nicht relevanten Bits ein Vorzeichenbit repliziert, um einen verfolgten Wert zu erzeugen (S120). Das System berechnet ein Daten-Sample basierend teils auf dem verfolgten Wert und dem in dem Referenzregister gespeicherten Wert (S130). Der berechnete Samplewert wird dann mit einem Bereichswert verglichen (S140). Danach wird ermittelt, ob ein Debug-Trigger ausgegeben werden sollte (S150). Wenn das Sample innerhalb des akzeptierbaren Bereichs liegt, wird kein Debug-Trigger ausgegeben (S160). Alternativ wird, wenn das Sample nicht innerhalb des akzeptierbaren Bereichs liegt, ein Debug-Trigger ausgegeben (S170), und der Debug-Trigger initiiert dann eine Debug-Funktion. Das System ermittelt dann, ob der gespeicherte Referenzwert zu aktualisieren ist (S180). Diese Entscheidung kann auf der Ankunft eines neuen Werts in (S100) basieren, dem Einstellen eines Modusregisters, einer anderen Eignung von außerhalb des Umfangs dieser Trigger-Logik (z.B. einem Adressenkomparator), oder auch auf dem Trigger-Ausgang (S170) selbst. Wenn der Referenzwert zu aktualisieren ist, wird der verfolgte Wert in dem Referenzregister gespeichert (S190). Es wird angemerkt, dass, da der Debug-Trigger in Echtzeit ermittelt wird, die Debug-Funktion die relevantesten Daten erfasst. Obwohl sie in einer bestimmten Reihenfolge erläutert worden sind, wird angemerkt, dass die oben genannten Schritte nicht notwendigerweise in dieser Reihenfolge durchgeführt werden. Die Entscheidung, den Referenzwert zu aktualisieren (S180), kann beispielsweise jederzeit getroffen werden, nachdem die aktuell gespeicherten Daten verwendet werden, um das Sample zu berechnen (S130). Alternativ kann, wenn ein überarbeiteter Referenzwert zu verwenden ist, um das Muster zu berechnen (S130), der Referenzwert vor dieser Berechnung gespeichert werden.
-
Obwohl hier spezifische Ausführungsformen gezeigt und beschrieben worden sind, ist es für den Fachmann selbstverständlich, dass eine Vielzahl anderer und/oder äquivalenter Implementierungen die gezeigten und beschriebenen spezifischen Ausführungsformen ersetzen können, ohne vom Umfang der vorliegenden Erfindung abzuweichen. Es ist beabsichtigt, dass die vorliegende Anmeldung alle Anpassungen oder Änderungen der hier erläuterten spezifischen Ausführungsformen mit umfasst. Es ist daher beabsichtigt, dass die vorliegende Erfindung nur durch die Patentansprüche und deren Äquivalente eingeschränkt wird.