DE68924507T2 - Verfahren und Gerät zur Markierung von Emulationsanalysezuständen. - Google Patents
Verfahren und Gerät zur Markierung von Emulationsanalysezuständen.Info
- Publication number
- DE68924507T2 DE68924507T2 DE68924507T DE68924507T DE68924507T2 DE 68924507 T2 DE68924507 T2 DE 68924507T2 DE 68924507 T DE68924507 T DE 68924507T DE 68924507 T DE68924507 T DE 68924507T DE 68924507 T2 DE68924507 T2 DE 68924507T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- block
- information
- state
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 18
- 238000012360 testing method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000000354 decomposition reaction Methods 0.000 description 8
- 239000003550 marker Substances 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 230000009977 dual effect Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000009414 blockwork Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/25—Testing of logic operation, e.g. by logic analysers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
- Diese Erfindung bezieht sich auf Emulationssysteme (Emulatoren), die zur Entwicklung von auf Mikroprozessor basierenden Systemen verwendet werden, und insbesondere auf Techniken und auf Hardware zum Schaffen einer zusätzlichen Markierung in einem Speicher auf Emulationsanalysezuständen, die in Emulatoren zu Analysezwecken während Warteschlangenauflösungs- und Verfolgungs-Operationen verwendet werden.
- Emulatoren unterstützen die Entwicklung von auf Mikroprozessoren basierenden Systemen (Zielsystemen), indem Entwicklern eine Einrichtung bereitgestellt wird, um Software (Zielprogramme) zu laden und auszuführen, bevor irgendeine Hardware aufgebaut wird. Der Emulator kann das Zielsystem entweder teilweise oder ganz ersetzen. Emulatoren können an einem beliebigen Punkt bei der Systementwicklung mit dem Zielsystem verbunden werden. Fig. 1 ist ein Blockdiagramm eines typischen auf einem Mikroprozessor basierenden Systems mit einem Mikroprozessor 10, einem Speicher 12 und einer Eingabe/Ausgabe-Vorrichtung 14. Fig. 2 ist ein Blockdiagramm eines Emulationssystems mit einem Emulator 18, einem Zentralrechner 20 und einem Benutzerterminal 22. Fig. 3 ist ein Blockdiagramm eines Emulators, der mit einem auf einem Mikroprozessor basierenden System verbunden ist. Der Emulator ist anstelle des Mikroprozessors 10, der in Fig. 1 gezeigt ist, in den Mikroprozessorsockel 16 in dem Zielsystem gesteckt und wird von dem Zentralrechner 20 unterstützt. Der Emulator liefert die Funktionen des Mikroprozessors und einige des Speichers für das Zielsystem, da der Benutzer nicht eine beliebige oder alle Speicherfunktionen des Zielsystems besitzen muß. Wenn sich die Entwicklung dem Abschluß nähert, werden die Funktionen, die von dem Emulator ausgeführt werden, allmählich zu dem Zielsystem übertragen. Während der Entwicklung liefert der Emulator zusätzliche Mikroprozessorsteuerungen, die üblicherweise nicht verfügbar sind und bei der Störungssuche von Zielsoftwareproblemen nützlich sind, welche folgende einschließen: Einzelschrittbetrieb, Unterbrechungspunkte für bestimmte Speicheradressen, Unterbrechungspunkte auf unsachgemäßen Speicherzugriffen, Anzeigen und Modifizieren interner Register, usw..
- Eine spezielle Mikroprozessorsteuerung, die nützlich ist, wird "Befehlsanalyse" genannt. Die Befehlsanalyse besteht aus einer "Verfolgung", welche die Erfassung einer Ansammlung von Zuständen während der Ausführung eines Zielprogramms ist; und einer Zerlegung, welche die Analyse der erfaßten Sammlung von Zuständen ist, die der Ausführung des Zielprogramms durch den Mikroprozessor folgen. Die Befehlsanalyse versucht, den tatsächlichen Befehlsprozess wiederherzustellen. Das Standardverfahren der Erfassung untersucht die Befehle, die vor der Ausführung abgerufen werden, um Zustandsinformationen zu erhalten, welche üblicherweise die Adresse, Daten und Zustandsinformationen eines einzelnen Mikroprozessorzyklusses einschließen. Jedoch kann ein signifikanter Unterschied zwischen den Befehlen, die abgerufen werden, und den Befehlen, die ausgeführt werden, existieren. Das Verfahren des Versuchens, eine Befehlsausführung aus den Befehlsabrufen wiederherzustellen, wird "Warteschlangenauflösung" ("Dequeueing") genannt.
- Ein Warteschlangenauflösungsverfahren, das früher gelehrt wurde, wurde "Hardware-Warteschlangenauflösung" genannt. Dieses Warteschlangenauflösungsverfahren war ein Versuch, die Mikroprozessor-Warteschlange mit Schaltungstechnik wiederherzustellen. Dies war schwierig zu erreichen und daher zeitverbrauchend, aufwendig und nicht immer genau. Jede Hardware-Warteschlangenauflösungs-Vorrichtung war von der Architektur des Zielprozessors abhängig, weshalb diese schwierige Aufgabe für jeden Entwurf eines neuen Emulators wiederholt wurde. Kritische Informationen über die Mikroprozessor-Architektur, die zum Entwurf erforderlich war, war oft nicht verfügbar, wobei viele andere Prozessoren Warteschlangen aufwiesen, die nicht auf diese Art und Weise wiederhergestellt werden konnten.
- Ein zweites Warteschlangenauflösungs-Verfahren, das gemäß dem Stand der Technik gelehrt wurde, war als "Software-Warteschlangenauflösung" bekannt. Dieses Warteschlangenauflösungsverfahren versucht, die Warteschlange des Mikroprozessors durch Decodieren der Befehlsabrufinformationen, die in einer Verfolgung eingefangen werden, wiederherzustellen. Dieses Verfahren war im wesentlichen billiger zu implementieren als das Hardware-Verfahren der Warteschlangenauflösung, wies jedoch schwerwiegende Genauigkeitsprobleme auf. Ein Hauptgrund für die Verschlechterung der Genauigkeit war die Schwierigkeit bei der Warteschlangenauflösung von Befehlen einer Verzweigung oder einer bedingten Verzweigung, da Verzweigungen in einem Warteschlangen-Mikroprozessor mehrere unbenutzte Befehlsabrufe verursachten, was die Ausführung von Befehlen in einer von der Befehlsabrufreihenfolge unterschiedlichen Reihenfolge zur Folge hatte. Andere Befehle schlossen Einzelworte, Doppelworte oder lange Worte (Vierfachworte) und Befehle ein, die ein Argument (einen Operand), der zu dem Befehl gehört, aufwiesen (wie in einem Befehl "addiere Konstante"). Da die Decodierung der Befehlsabrufinformationen typischerweise an einem Punkt begann, der von dem Benutzer in dem Zielprogramm ausgewählt wurde, gab es kein Verfahren zum Bestimmen dessen, daß das erste Wort auch der Beginn eines Befehls war. Wenn das erste Wort nicht der Beginn eines Befehls war, würde die Warteschlangenauflösungs-Vorrichtung dasselbe ungeachtet dessen als den Beginn eines Befehls interpretieren. Das häufige Ergebnis bestand darin, daß die decodierten Befehlsabrufinformationen wenig Ähnlichkeit mit dem trugen, was tatsächlich in dem Zielprogramm von dem Prozessor ausgeführt wurde. Folglich war die "Software-Warteschlangenauflösungs"-Lösung extrem unzuverlässig, obwohl dieselbe weniger aufwendig als die "Hardware-Warteschlangenauflösungs"-Lösung war.
- Die US-A-4205370 offenbart ein Datenverarbeitungssystem, das Einrichtungen aufweist, die wirksam sind, wenn das System während der Verarbeitung von Programmbefehlen in einem Verfolgungsmodus konditioniert ist, um den Operationscode jedes Befehls aufzuzeichnen, der durch den Bitinhalt einer Tabelle, auf die vor dem Beginnen der Befehlsausführung verwiesen wurde, als ausführbar bezeichnet wurde. Wenn der Operationscode eines Befehls durch die Tabelle als nicht ausführbar bezeichnet ist, fängt das System den Befehl ein und erzeugt einen Aufruf an die Betriebssystemsoftware, ohne den Operationscode desselben aufzuzeichnen. Das selektive Aufzeichnen und Einfangen von Befehls-Operationscodes erleichtert die Diagnose von Programmfehlern oder Fehlern in dem System. Dies ist besonders wertvoll, wenn das System eine Emulationsvorrichtung einschließt, die nicht in jedem Detail mit dem System, das emuliert wird, kompatibel sein muß.
- Die Merkmale der Erfindung sind durch die jeweiligen Ansprüche 1 und 5 definiert.
- Gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ist die verbesserte Befehlsanalyse in Emulatoren die Folge des Vorsehens eines zusätzlichen Speichers in einem Emulator, der Marken hält, die gemäß einem vorbestimmten Codierschema, das den Instruktionen von einem Zielprogramm entspricht, bestimmt sind; die Marken liefern der Zentralsteuerung des Emulators während der Befehlsanalyse zusätzliche Zustandsinformationen für eine genauere Umwandlung der Zustandsinformationen, die während der Zielprozessorausführung des Zielprogramms erzeugt werden, in eine Liste von Zuständen, die dem Testprogramm entsprechen, das von der Zielprozessoreinrichtung ausgeführt wird.
- Das Markierungssystem kann auf einen beliebigen Prozessor und gemäß einem beliebigen vorbestimmten Codierungsschema angewendet werden, derart, daß die maximalen Ergebnisse mit einem minimalen zusätzlichen Aufwand erreicht werden können.
- Der zusätzliche Speicheraufwand und die notwendige Software zur Markierung sind gering, wodurch ein Vorteil über die bekannte Hardware-Warteschlangenauflösungs-Lösung, die einen relativ hohen Aufwand aufweist, geschaffen wird; während die Genauigkeit der resultierenden Verfolgungsinformationen der der Hardware-Warteschlangenauflösungs-Lösung nahekommt, liefert dieselbe einen Vorteil über die bekannte Software-Warteschlangenauflösungs-Lösung.
- Fig. 1 ist ein Blockdiagramm eines typischen auf einem Mikroprozessor basierenden Entwicklungssystems (Zielsystem).
- Fig. 2 ist ein Blockdiagramm eines Emulationssystems (Emulator).
- Fig. 3 ist ein Blockdiagramm, das ein Emulationssystem zeigt, welches mit einem auf einem Mikroprozessor basierenden Entwicklungssystem verbunden ist.
- Fig. 4 zeigt ein Blockdiagramm des bevorzugten Ausführungsbeispiels eines Emulators mit einer Markierungshardware.
- Fig. 5 zeigt ein Flußdiagramm des Markierungssoftware-Optionsmoduls.
- Fig. 6 zeigt ein Flußdiagramm des Markierungssoftware-Syntax-Moduls.
- Fig. 7 zeigt ein Flußdiagramm des Markierungssoftware-Zustandsmaschinenmoduls.
- Fig. 8 zeigt ein Flußdiagramm des Markierungssoftware-Zerlegungsmoduls.
- Fig. 4 zeigt ein Blockdiagramm des bevorzugten Ausführungsbeispiels eines Emulators mit einer Markierungshardware. Die Beschreibung jedes Blocks wird nachfolgend geliefert.
- Dieser Block empfängt Zentralsteuerungsbefehle und erzeugt geeignete Signale für verschiedene Blöcke in dem Emulator. Wenn z.B. ein Marken-Laden-Befehl zu diesem Block gesendet wird, wird derselbe ein Schreiben-Übernahmesignal zu einer Dualtor-Zugriffssteuerung 34, ein Markenadreß-Blocksignal zu dem Adreßauswahlblock 40 und ein Freigabesignal zu dem Markenspeicherblock 38 erzeugen. Dieser Block liest ferner den Zustand von dem Steuerregister und dem Zustandsblock 28 und kann Informationen in das Steuerregister desselben Blocks schreiben.
- Dieser Block enthält die gesamte Emulator-spezifische Software, die notwendig ist, um den Emulator zu betreiben. Z.B. liegt die gesamte Markierungs-spezifische Software in diesem ROM vor, ebenso wie die Software, um Unterbrechungen zu erzeugen, Register zu lesen, den Emulator zu konfigurieren, usw..
- Dieser Block enthält das Emulatorsteuerregister, das den Emulator für verschiedene Betriebsmodi konfiguriert. Z.B. enthält derselbe das Rücksetzsignal, welches den Emulator in einen initialisierten (rückgesetzten) Zustand versetzt, wenn das Signal aktiv ist. Dieser Block enthält ferner das Statusregister, das zu einer beliebigen Zeit von dem Zentralsteuerungs-Decodierblock 24 gelesen werden kann, um zu bestimmen, in welchem Zustand der Emulator ist (z.B. im Vordergrund laufend oder in den Hintergrund zurückgesetzt).
- Dieser Block empfängt die Adressen, Daten und den Status, die von dem Prozessor 52 (80C196) ausgegeben werden, zur Speicherung und späteren Ausführung. Er empfängt ferner die Marken, die von dem Markenspeicher ausgegeben werden, welche wesentliche Informationen über den Operationscode-Standort liefern.
- Dieser Block arbeitet in Verbindung mit der Dualtor-Speicherzugriffssteuerung, um zu ermöglichen, daß die Zentralsteuerung auf den gleichen Speicher zugreift, auf den der Prozessor 52, der bei diesem Ausführungsbeispiel ein 80C196 ist, zugreifen kann. Er puffert und speichert Zentralsteuerungsdaten zu den verschiedenen Speicherblöcken zur Verwendung zur geeigneten Zeit zwischen.
- Dieser Block bestimmt die Zugriffe von der Zentralsteuerung und dem Prozessor 52, derart, daß beide einen Zugriff zu den verschiedenen Speicherblöcken, wie z.B. dem Emulationsspeicher 36 und dem Überwachungsspeicher 42, erlangen können. Er erzeugt die Lesen- und Schreiben-Übernahmesignale zu den Speicherblöcken und erzeugt ferner die erforderlichen Zeitgebungs-Wartesignale zurück zu den abfragenden Blöcken.
- Dieser Block enthält den Speicher, der verwendet wird, wenn der Prozessor im Vordergrund-Emulationsspeicher läuft.
- Dieser Block enthält den Speicher, der verwendet wird, um die Markenkennungen zu halten. Dieser Speicher wird ausschließlich durch den Zentralsteuerungs-Decodierblock 24 geladen (der 80C196-Prozessor 52 kann nicht auf denselben schreiben) und wird ausschließlich durch den Analysator 30 gelesen. Der Zentralsteuerungs-Decodierblock 24 lädt die Markenkennungen in spezifische Adressen des Markenspeichers 38, derart, daß, wenn der Prozessor 52 identische Adressen ausgibt, die gewünschten Markenkennungen zu dem Analysator 30 gesendet werden. Der Markenspeicher 38 wird auf Null-Kennungswerte (unmarkiert) initialisiert, wenn der Emulator initialisiert wird, oder wenn ein Emulationsspeicherort modifiziert wird, nachdem er markiert wurde.
- Dieser Block arbeitet in Verbindung mit der Dualtor-Zugriffssteuerung 34, um den verschiedenen Speicherblöcken zu den geeigneten Zeiten gültige Adressen zu liefern. Er wird den richtigen Speicherblock, um in denselben zu schreiben, und die für diesen Block geeignete Adresse auswählen.
- Dieser Block enthält den Speicher, der verwendet wird, wenn der Prozessor 52 im Hintergrund-Emulationsspeicher läuft. Dieser Speicher enthält den Überwachungscode und enthält den Kommunikationsspeicherbereich, der verwendet wird, um mit der Zentralsteuerungs-Decodierung 25 in Verbindung zu treten.
- Dieser Block enthält Marken, die für einen ordnungsgemäßen Betrieb des Überwachungsgeräts verwendet werden. Signale in diesem Speicher 44 steuern Zugriffe zu dem Vordergrundspeicher während sie in dem Überwachungsgerät sind, und steuern ferner das Verlassen des Überwachungs-(Hintergrund-)Zustands.
- Dieser Speicherblock enthält Informationen über den Adreßstandort-Zugriffsstatus. Er kann durch den Zentralsteuerungs-Decodierungsblock 24 rückgesetzt werden.
- Dieser Block arbeitet in Verbindung mit der Dualtor-Speicherzugriffssteuerung 34, um zu ermöglichen, daß der 80C196-Prozessor 52 auf den gleichen Speicher zugreift, auf den die Zentralsteuerungs-Decodierung 24 zugreifen kann. Er puffert und speichert Daten des Prozessors 80C196 zu den verschiedenen Speicherblöcken zur Verwendung zu der geeigneten Zeit zwischen.
- Dieser Block fängt die Prozessorübernahmesignale ab, um Übernahmesignale mit einer geeigneteren Zeitgebung und Funktion zur Verwendung durch den Emulator zu erzeugen, wie z.B. Zeitgebungs-Übernahmesignale für die Dualtor-Zugriffssteuerung 34 und für den Analysator 30.
- Dies ist der Zielprozessor, der das Zielprogramm ebenso wie die Überwachungs- und weitere Funktionen ausführt.
- Dieser Block kann eine Unterbrechung der Ausführung des Benutzercodes zu gewünschten Zeiten bewirken, um eine Überwachung der Register und des Speichers durchzuführen, oder um eine Modifikation des gegenwärtigen Zustands des 80C196-Prozessors 52 durchzuführen. Die Unterbrechung wird sorgfältig ausgeführt, so daß eine Wiederherstellung des gegenwärtigen Zustands erreicht werden kann, wenn der Überwachungs-(Hintergrund-)Zustand verlassen wird.
- Dieser Block simuliert den Betrieb der Toranschlußstifte des Prozessors 80C196, indem die interne Funktionalität des Prozessors 52 vervielfältigt wird. Dies ermöglicht es, daß die Emulator-Benutzersonde funktionsmäßig genauso wirkt wie der 80C196-Prozessor 52, während andere Funktionen in dem Emulator intern tatsächlich weiterlaufen.
- Dieser Block führt die notwendige Speicheradreß/Datenbus- Steuerung durch, um eine Ausführung des Codes zu ermöglichen, der auf dem Zielsystem des Benutzers vorliegt (dem System, in das der Emulator eingesteckt ist).
- Diese ist die physikalische Einheit, die eine Steckverbindung in das Zielsystem des Benutzers herstellt. Der Benutzer entfernt den Prozessor 80C196 von seinem Zielsystem und steckt die Benutzersonde 60 des Emulators an dessen Stelle.
- Das bevorzugte Ausführungsbeispiel der Markierungshardware verwendet vier verschiedene Softwareblöcke zum Erzeugen und Interpretieren von Marken. Ein Optionsmodul ist verwendet, um verschiedene Optionen zur Verwendung bei der Erzeugung der Marken zu definieren. Zwei Module werden beim Erzeugen der Marken verwendet: ein Syntax-Modul zum Testen geeigneter Adreßbereiche; und ein Zustandsmaschinenmodul zum Gewinnen der Operationscode-Informationen, zum Erzeugen der Marken und zum Speichern der Marken an den geeigneten Orten im Speicher. Ein Markierungssoftware-Zerlegungsmodul ist das vierte Modul und wird zum Gewinnen der Marken und zum Verwenden derselben verwendet, um zerlegte Operationscode-Informationen zu erzeugen.
- Fig. 5 zeigt ein Flußdiagramm des Optionsmoduls. Dieses Modul wird vor dem Zerlegen der Analysezustände durch den Inversassembler aufgerufen, um die verschiedenen Optionen, die von dem Benutzer ausgewählt werden, zu implementieren. Nach dem Zugreifen des Benutzers auf das Modul (Block 62), werden die Optionsvariablen überprüft, um zu bestimmen, ob eine Änderung der Inversassembler-Konfiguration (Block 64) durchgeführt wurde. Wenn die Optionsvariablen nicht gesetzt sind, wurde die Inversassembler-Konfiguration (Block 68) nicht geändert und das Optionsmodul endet (Block 70). Wenn die Optionsvariablen gesetzt sind, werden die Variablen überprüft, um zu bestimmen, ob die Optionen zulässig sind (Block 66). Wenn die Optionsvariablen nicht zulässig sind, wird die Inversassembler-Konfiguration nicht geändert (Block 72), wird dem Benutzer ein Fehler angezeigt und das Optionsmodul endet (Block 74). Wenn die Optionsvariablen gültig sind, werden die entsprechenden Inversassembler-Flag-Variablen geändert (Block 76) und das Optionsmodul endet (Block 78).
- Fig. 6 zeigt ein Flußdiagramm des Syntax-Moduls. Wenn ein Markenbefehl implementiert ist, wird das Syntax-Modul aufgerufen (Block 80). Zuerst werden die Parameter des Befehls erfaßt (Block 82) und eine Überprüfung nach gültigen Adreßbereichen wird durchgeführt (Block 84). Wenn die Bereiche nicht gültig sind, wird der Befehl abgebrochen, dem Benutzer wird ein Fehler angezeigt, und das Syntax-Modul endet (Block 86). Wenn die Bereiche gültig sind, wird das Markierungssoftware-Zustandsmaschinenmodul aufgerufen (Block 88). Wenn das Zustandsmaschinenmodul von einem Problem in dem Zustandsmaschinenmodul eine Fehlerbedingung zurückgibt, wird dem Benutzer ein Fehler angezeigt und der Befehl wird abgebrochen (Block 90). Wenn von der Zustandsmaschine kein Fehler zurückgegeben wird, springt das Zustandsmaschinenmodul nach dem Plazieren der geeigneten Marken im Speicher für den Adreßbereich zurück. Das Syntax-Modul bestimmt, ob zusätzliche Speicherbereiche spezifiziert sind, die markiert werden sollen (Block 92). Wenn zusätzliche Speicherbereiche markiert werden sollen, wird die Gültigkeit der Bereiche bestimmt (Block 84). Wenn keine zusätzlichen Speicherbereiche markiert werden sollen, zeigt das Syntax-Modul dem Benutzer keinen Fehler und endet (Block 94).
- Fig. 7 zeigt ein Flußdiagramm des Markierungssoftware-Zustandsmaschinenmoduls. Nachdem dieses Modul durch das oben beschriebene Syntax-Modul aufgerufen ist (Block 96), wird der Markenzeiger auf die Anfangsadresse für den Bereich der Adressen, die markiert werden sollen, oder die Startadresse initialisiert (Block 98). Der Lesezeiger wird ebenfalls auf die Startadresse initialisiert (Block 100). Die Operationscode-Informationen werden aus dem Standort gewonnen, der durch den Lesezeiger angezeigt wird (Block 102), und der geeignete Markencode wird durch Bezugnahme auf eine Nachschlagtabelle erzeugt (Block 104). Diese Nachschlagtabelle enthält ein vorbestimmtes Codierungsschema zum Markieren von Emulationsanalysezuständen. Bei diesem Ausführungsbeispiel wird angenommen, daß der Prozessor zwei Bytes für einen Befehlsabruf maximaler Größe verwendet, wobei drei Bits mit folgenden Definitionen zum Markieren verwendet werden:
- 000 - Null (wurde nicht markiert oder wurde beeinflußt)
- 001 - das niederwertige Byte ist der einzige Operationscode
- 010 - das höherwertige Byte ist der einzige Operationscode
- 011 - beide Bytes sind Operationscodes
- 100 - kein Byte ist ein Operationscode, sondern ist markiert (Operand)
- Die übrigen Definitionen werden nicht verwendet. Wenn der Operationscode nicht gültig ist, wird der Markenbefehl abgebrochen, wobei dem Syntax-Modul ein Fehler zurückgegeben wird (Block 106). Wenn der Operationscode gültig ist, wird die bezeichnete Marke an dem Ort des Markenzeigers (Block 108) in den Markenspeicher geladen. Wenn die gewonnenen Operationscode-Informationen ein gültiger Nicht-Operationscode (Operand) sind, werden die Nicht-Operationscode-Markeninformationen an dem Ort des Markenzeigers in den Markenspeicher geladen (Block 108). Die Zeiger werden um den geeigneten Betrag, wie er in der Nachschlagtabelle vorgesehen ist, inkrementiert, welcher von der Byte-Größe des Operationscodes und des Operands abhängt, wenn einer vorliegt (Block 110). Dann werden die Zeiger mit dem Adreßbereich verglichen, um zu bestimmen, ob der Markenbefehl beendet werden soll (Block 112). Wenn der Bereich nicht abgeschlossen ist, springt das Zustandsmaschinenmodul zu dem früheren Schritt des Gewinnens der Operationscode-Informationen aus dem Leseort, der durch die gegenwärtige Position des Lesezeigers spezifiziert ist, zurück (Block 102) und fährt auf die gleiche Art und Weise fort, die oben aufgeführt ist. Wenn der Bereich abgeschlossen ist, zeigt das Zustandsmaschinenmodul dem Benutzer einen erfolgreichen Abschluß an und beendet den Markenbefehl und das Zustandsmaschinenmodul, wobei zu dem Syntax-Modul zurückgekehrt wird (Block 114).
- Fig. 8 zeigt ein Flußdiagramm eines Markierungssoftware- Zerlegungsmoduls. Dieses Modul wird von dem Benutzer aufgerufen, wenn eine Verfolgung implementiert ist (Block 116). Das Zerlegungsmodul wird verwendet, um einen einzelnen Zustand zu zerlegen und wird durch ein Modul aufgerufen, das das Zerlegungsmodul für eine Reihe von Zuständen wiederholt aufrufen würde. Zuerst wird der Inversassembler initialisiert (Block 118). Die Options-Flag-Einstellungen werden gewonnen und überprüft, um zu bestimmen, ob für diesen Befehl eine Markierung freigegeben ist (Block 120). Wenn keine Markierung freigegeben ist, wird ein Software-Warteschlangenauflösungs-Verfahren (oder eine Busmodus-Zerlegung) angewendet, um den Operationscode oder den Operanden zu bestimmen (Block 122), und das Zerlegungsmodul wird beendet (Block 124). Wenn für diese Adresse eine Markierung freigegeben ist, werden die Markeninformationen gewonnen (Block 126). Wenn die gewonnenen Markeninformationen zeigen, daß für diese spezielle Adresse keine Marke vorliegt, wird die Busmodus-Zerlegung wie oben erörtert wurde, angewendet (Block 122). Wenn die gewonnenen Markeninformationen zeigen, daß für diese spezielle Adresse eine Marke vorliegt, wird bei diesem speziellen Ausführungsbeispiel die Marke überprüft, um zu bestimmen, ob es eine Nicht-Operationscode-Marke, eine normale Operationscode-Marke oder eine spezielle Operations-Marke ist (Block 126). Wenn die Marke eine Nicht-Operationscode-Marke ist, wird der Operanden-Abrufzustand gezeigt (Block 128) und das Modul endet (Block 130). Wenn die Marke eine spezielle Operationscode-Marke ist, z.B. eine Null-Operationscode-Marke, wird eine spezielle Markenzerlegung angewendet, um den Operationscode zu bestimmen und zu zeigen (Block 132) und das Modul wird beendet (Block 134). Wenn die Marke eine Standard-Operationscode-Marke ist, wird eine Operationscode-Zerlegung angewendet, der zerlegte Operationscode wird gezeigt (Block 136) und das Modul wird beendet (Block 138).
- Ein Beispiel einer Markierung ist geschaffen, das den Code (in "C" programmiert), der verfolgt wird, zeigt, dann die tatsächliche Sequenz von Befehlen, die ausgeführt wird, eine Verfolgungslistenanzeige mit einer freigegebenen Markierung und eine Verfolgungslistenanzeige mit einer nicht freigegebenen Markierung, ähnlich der bekannten Software-Warteschlangenauflösungs-Lösung.
- Die zwei gezeigten Verfolgungsprotokolle stammen von identischen Prozessorschritten, wobei bei dem ersten eine Markierung freigegeben ist, und bei dem zweiten eine Markierung nicht freigegeben ist. Der Code, der verfolgt wird, lautet wie folgt:
- Die tatsächliche Befehlssequenz lautet:
- Beispiel der Verfolgung mit freigegebener Markierung
- Beispiel der Verfolgung mit nicht freigegebener Markierung
- Das Verfolgungsprotokoll mit freigegebener Markierung liefert eine sehr genaue Darstellung der tatsächlichen Befehle, die in der ordnungsgemäßen Sequenz ausgeführt werden. Die Narkierungskennungen liefern zusätzliche Zustandsinformationen für eine Verwendung während der Umwandlung in eine Liste von Zuständen, die dem Testprogramm entspricht, das von der Zielprozessoreinrichtung ausgeführt wird.
- Im Gegensatz zu dem Verfolgungsprotokoll mit freigegebener Markierung fehlen dem Verfolgungsprotokoll mit nicht freigegebener Markierung ausreichende Informationen, um die Zustandsinformationen korrekt in eine Liste von ausgeführten Befehlen umzuwandeln. Die Verfolgung begann bei einem Nicht-Operationscode-Abruf in Zeile 4 und zerlegt das unausgeführte Byte als einen ausgeführten AND-Befehl und überspringt den ersten Befehl JE (jump if equal = springe wenn gleich). Schließlich erholt sich das Verfolgungsprotokoll in Zeile 8 und identifiziert den Befehl LDB (load register = lade Register) korrekt. Jedoch treten in den Zeilen 13 und 14 erneut Fehler auf. Das Ergebnis besteht darin, daß es für den Benutzer schwierig ist, Kenntnis davon zu haben, wann das Verfolgungsprotokoll zuverlässig ist und wann nicht. Die Verwendung der Markierung liefert eine stark verbesserte, wenn auch nicht perfekte, Zuverlässigkeit.
Claims (8)
1. Vorrichtung zur Verwendung bei der Befehlsanalyse, die
eine Verfolgung, um Zustandsinformationen für jeweilige
Befehle zu erfassen, die in einem zu testenden Programm
ausgeführt werden, und eine Warteschlangenauflösung, um
aus den Zuständen, die durch die Verfolgung erfaßt
werden, eine Befehlsausführung wiederzugewinnen verwendet,
wobei die Vorrichtung folgende Merkmale aufweist:
einen Speicher (38) zum Speichern von Marken, die die
Orte der Codes darstellen, die den jeweiligen Befehlen
in dem Programm zugeordnet sind;
einen Zielprozessor (52) zum Ausführen des Programms;
eine Einrichtung (30) zum Empfangen verfolgter
Informationen von dem Zielprozessor (52) und von Marken von
dem Speicher (38); und
eine Zentralsteuerung (24), die mit der Einrichtung (30)
zum Empfangen der verfolgten Informationen und dem
Speicher (38) verbunden ist; wobei die Zentralsteuerung (24)
zum Zerlegen der verfolgten Informationen, zum Zuordnen
von Marken zu den jeweiligen Befehlen und den auf
dieselben bezogenen Zustandsinformationen und zum Speichern
der Marken in dem Speicher (38) vorgesehen ist; wobei
die Zentralsteuerung (24) ferner die
Warteschlangenauflösung mit der Unterstützung der Zustandsinformationen,
die den Marken, die in dem Speicher (38) gespeichert
sind, zugeordnet sind, durchführt.
2. Die Vorrichtung gemäß Anspruch 1, bei der die
Zustandsinformationen eine Adresse, Daten und
Statusinformationen
aufweisen.
3. Die Vorrichtung gemäß Anspruch 1, bei der die Codes
Operationscodes sind.
4. Vorrichtung gemäß Anspruch 2, bei der jeder Zustand
mindestens zwei Bytes aufweist und bei der die Marken eine
Anzeige der Anzahl von Bytes, die einen Zustand bilden,
liefert.
5. Ein Verfahren zur Verwendung bei einer Befehlsanalyse,
das eine Verfolgung, um Zustandsinformationen für
jeweilige Befehle, die in einem zu testenden Programm
ausgeführt werden, zu erfassen, und eine
Warteschlangenauflösung verwendet, um eine Befehlsausführung aus den
Zuständen, die durch die Verfolgung erfaßt werden,
wiederzugewinnen, wobei das Verfahren folgende Schritte
aufweist:
Zuordnen von Marken, die die Orte von Codes darstellen,
zu jeweiligen Befehlen und den auf dieselben bezogenen
Zustandsinformationen;
Speichern der Marken;
Durchführen der Verfolgung während der Ausführung des
Programms;
Zerlegen der verfolgten Informationen; und
Durchführen der Warteschlangenauflösung mit der
Unterstützung der Zustandsinformationen, die den
gespeicherten Marken zugeordnet sind.
6. Das Verfahren gemäß Anspruch 5, bei dem die
Zustandsinformationen eine Adresse, Daten und
Statusinformationen aufweisen.
7. Das Verfahren gemäß Anspruch 5, bei dem die Codes
Operationscodes sind.
8. Das Verfahren gemäß Anspruch 6, bei dem jeder Zustand
mindestens zwei Bytes aufweist, und bei dem die Marken
erzeugt werden, um eine Anzeige der Anzahl von Bytes,
die einen Zustand bilden, zu liefern.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/230,807 US5073968A (en) | 1988-08-09 | 1988-08-09 | Method and apparatus for marking emulation analysis states |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68924507D1 DE68924507D1 (de) | 1995-11-16 |
DE68924507T2 true DE68924507T2 (de) | 1996-04-04 |
Family
ID=22866657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68924507T Expired - Fee Related DE68924507T2 (de) | 1988-08-09 | 1989-06-26 | Verfahren und Gerät zur Markierung von Emulationsanalysezuständen. |
Country Status (4)
Country | Link |
---|---|
US (1) | US5073968A (de) |
EP (1) | EP0354654B1 (de) |
JP (1) | JP2886191B2 (de) |
DE (1) | DE68924507T2 (de) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581695A (en) * | 1990-05-09 | 1996-12-03 | Applied Microsystems Corporation | Source-level run-time software code debugging instrument |
US5228039A (en) * | 1990-05-09 | 1993-07-13 | Applied Microsystems Corporation | Source-level in-circuit software code debugging instrument |
US5488688A (en) * | 1994-03-30 | 1996-01-30 | Motorola, Inc. | Data processor with real-time diagnostic capability |
US5446876A (en) * | 1994-04-15 | 1995-08-29 | International Business Machines Corporation | Hardware mechanism for instruction/data address tracing |
TW247949B (en) * | 1994-11-10 | 1995-05-21 | Motorola Inc | Data processor with transparent operation during a background mode and method therefor |
US5941995A (en) * | 1997-05-20 | 1999-08-24 | Hewlett-Packard Company | Reloading state analyzer |
US5938778A (en) * | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
US5968188A (en) * | 1998-03-10 | 1999-10-19 | Grammar Engine | System for providing real-time code coverage |
DE10021517C1 (de) * | 2000-05-03 | 2002-01-10 | Kuelps Heinz Juergen | Zurückdrängung und Verminderung der Hochtemperatur-Halogen-Korrosion in Verbrennungsanlagen durch den Einsatz von Wirkstoffen sowie Wirkstoff-Mischungen |
US7409711B1 (en) * | 2002-12-24 | 2008-08-05 | The Chamberlain Group, Inc. | Method and apparatus for troubleshooting a security gate system remotely |
US7290174B1 (en) * | 2003-12-03 | 2007-10-30 | Altera Corporation | Methods and apparatus for generating test instruction sequences |
US7403887B1 (en) * | 2004-01-14 | 2008-07-22 | Microsoft Corporation | Emulated memory management |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4205370A (en) * | 1975-04-16 | 1980-05-27 | Honeywell Information Systems Inc. | Trace method and apparatus for use in a data processing system |
US4419368A (en) * | 1978-06-05 | 1983-12-06 | Syntex (U.S.A.) Inc. | Naphthoquinone anti-psoriatic agents |
US4694420A (en) * | 1982-09-13 | 1987-09-15 | Tektronix, Inc. | Inverse assembly method and apparatus |
US4488228A (en) * | 1982-12-03 | 1984-12-11 | Motorola, Inc. | Virtual memory data processor |
JPS59133610A (ja) * | 1983-01-19 | 1984-08-01 | Omron Tateisi Electronics Co | プログラマブルコントロ−ラ |
US4636940A (en) * | 1983-03-31 | 1987-01-13 | Hewlett-Packard Company | Logic analyzer using source program or other user defined symbols in the trace specification and the trace listing |
US4636941A (en) * | 1983-05-24 | 1987-01-13 | Iwatsu Electric Co., Ltd. | Method and apparatus for analysis of microprocessor operation |
US4598364A (en) * | 1983-06-29 | 1986-07-01 | International Business Machines Corporation | Efficient trace method adaptable to multiprocessors |
JPS60238944A (ja) * | 1984-05-14 | 1985-11-27 | Mitsubishi Electric Corp | トレ−ス用記憶装置 |
JPS62214443A (ja) * | 1986-03-17 | 1987-09-21 | Fanuc Ltd | エミユレ−シヨン実行方法 |
FR2598001B1 (fr) * | 1986-04-23 | 1990-11-02 | Dassault Electronique | Dispositif pour le controle de logiciels industriels, en particulier de logiciels operant en temps reel, et procede correspondant |
US4802165A (en) * | 1986-10-08 | 1989-01-31 | Enteleki, Inc. | Method and apparatus of debugging computer programs |
-
1988
- 1988-08-09 US US07/230,807 patent/US5073968A/en not_active Expired - Fee Related
-
1989
- 1989-06-26 EP EP89306439A patent/EP0354654B1/de not_active Expired - Lifetime
- 1989-06-26 DE DE68924507T patent/DE68924507T2/de not_active Expired - Fee Related
- 1989-08-09 JP JP1206576A patent/JP2886191B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE68924507D1 (de) | 1995-11-16 |
EP0354654A3 (de) | 1991-07-17 |
EP0354654A2 (de) | 1990-02-14 |
US5073968A (en) | 1991-12-17 |
JP2886191B2 (ja) | 1999-04-26 |
JPH0281140A (ja) | 1990-03-22 |
EP0354654B1 (de) | 1995-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4313594C2 (de) | Mikroprozessor | |
DE69330537T2 (de) | System zur Analyse und Fehlerbeseitigung integrierter Software durch dynamischen und interactiven Gebrauch von Kode-Markierern | |
DE69831732T2 (de) | Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem | |
DE69720821T2 (de) | Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle | |
DE69523549T2 (de) | Mikroprozessor mit Fehlersuchsystem | |
DE3854546T2 (de) | Verfahren und Gerät zur Programmablaufmessung. | |
DE69830718T2 (de) | Ablaufdaten-cachespeicher fuer mikroprozessorbasierte anordung | |
DE69225750T2 (de) | Datenverarbeitungssystem mit internem Befehlspufferspeicher | |
DE69127992T2 (de) | Mikroprozessor zur Buszykluseinfügung zwecks Informationslieferung für eine Emulation | |
DE69903629T2 (de) | Prüfung der funktionsfähigkeit eines gerätetreibers | |
DE69129565T2 (de) | Hochleistungsfähiger Emulator mit Pipelining | |
DE69027471T2 (de) | Fehlersuchperipherie für Mikrorechner, Mikroprozessoren und Kernprozessor beinhaltende integrierte Schaltungen und Vorrichtung die diese Fehlersuchperipherie verwendet | |
DE69216020T2 (de) | Verbessertes fehlersuchsystem und -verfahren, besonders für die fehlersuche in einer multi-architekturumgebung | |
DE4329336C2 (de) | Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors | |
DE3687842T2 (de) | Verfahren und Gerät zum Software-Austesten. | |
DE69604347T2 (de) | Bestimmung der dynamischen Eigenschaften von Programmen | |
DE3903835A1 (de) | Verfahren und vorrichtung zum pruefen von mikroprozessorsystemen unter verwendung von speicheremulationstechniken | |
DE68924507T2 (de) | Verfahren und Gerät zur Markierung von Emulationsanalysezuständen. | |
DE69908682T2 (de) | Prozessor mit Echtzeit-Ablaufsteuerung zur Fehlerbeseitigung ohne Fehlerbeseitigungsmonitor | |
DE69612075T2 (de) | Vorrichtung zur Fehlerbeseitigung und Verfahren zur Fehlerbeseitigung in einem Spielprogramm in einem ROM-Speichermodul | |
DE69107476T2 (de) | Vorrichtung für eine in-circuit-prüfung mit einem minimalspeicher. | |
EP0104635A2 (de) | Verfahren und Anordnung zum Prüfen eines digitalen Rechners | |
DE69320741T2 (de) | Verfahren und Einrichtung zur Emulation der Umgebung eines Mikroprozessors | |
DE102006019292A1 (de) | Modellieren programmierbarer Einrichtungen | |
DE69026208T2 (de) | Verfahren zur Erkennung möglicher Fehler einer Programmierung in Assembler Sprache mit Erfassung offensichtlicher Inkonsistenz mit einer vorhergehenden Operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: AGILENT TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELA |
|
8339 | Ceased/non-payment of the annual fee |