DE4042263A1 - Verfahren zu erkennung des interruptstatus eines mikroprozessors - Google Patents
Verfahren zu erkennung des interruptstatus eines mikroprozessorsInfo
- Publication number
- DE4042263A1 DE4042263A1 DE19904042263 DE4042263A DE4042263A1 DE 4042263 A1 DE4042263 A1 DE 4042263A1 DE 19904042263 DE19904042263 DE 19904042263 DE 4042263 A DE4042263 A DE 4042263A DE 4042263 A1 DE4042263 A1 DE 4042263A1
- Authority
- DE
- Germany
- Prior art keywords
- interrupt
- circuit
- program
- psen
- processor
- 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.)
- Withdrawn
Links
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
- G06F11/364—Software debugging by tracing the execution of the program tracing values on a bus
-
- 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
-
- 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/349—Performance evaluation by tracing or monitoring for interfaces, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
Die Erfindung bezieht sich auf ein Verfahren zur
Erkennung des Interruptstatus eines Mikroprozessors nach
dem Oberbegriff des Patentanspruchs 1, das den internen
Interruptstatus eines Mikroprozessors von außen erkennt.
Dies ist speziell für Prozessoren, die keine direkte
Signalleitung, die den internen Interruptstatus erkennen
lassen, zur Verfügung stellen, von Interesse. Das
erfindungsgemäße Verfahren läßt sich vorteilhaft in In-
Circuit-Emulatoren, Mikroprozessor-Entwicklungssysteme
oder Logikanalysatoren einsetzen. Ein bevorzugtes
Ausführungsbeispiel bezieht sich auf Emulatoren für
Prozessoren der 8031 Intel Familie.
Ein Emulator ist ein Entwicklungswerkzeug, welches den
gleichzeitigen Test von Hard- und Software eines zu
entwickelten Systems dient. Zu diesem Zweck wird in die
Zielhardware anstelle des Prozessors ein Adapter
gesteckt, der sämtliche Funktionen des zu emulierenden
Prozessors möglichst exakt nachbildet (meist befindet
sich der gleiche Prozessor auf den Adapter), und außerdem
die Möglichkeit bietet, den Adreßbus, Datenbus und
Steuerbus des Prozessors mit Hilfe des Emulators und
eines angeschlossenen Terminals o. ä. zu überwachen und
eventuell zu beeinflussen.
So ist im allgemeinen die Möglichkeit vorgesehen, den
Prozessor nach Erfüllung vorher festgelegter Bedingungen
(Breakpoints = z. B. Zugriff auf eine bestimmte Adresse,
ein externes Triggersignal ect.) anzuhalten und die
normalerweise nicht zugänglichen internen Register zu
lesen. Damit erhält der Entwickler Informationen, mit
welchen er schnell eventuell Hard- oder Softwarefehler
finden kann.
Dafür muß die Hardware des Emulators nach Erkennen einer
Haltebedingung (Breakpoint) anstelle des zu testenden
Anwenderprogramms beispielsweise ein Programmteil des
Emulators einblenden, das die Inhalte der interessanten
Register an das Terminal sendet, diese unter Umständen
modifiziert und solange eine Endlosschleife ausführt, bis
der Anwender den Prozessor wieder starten will. (Diese
vom Emulator eingeblendete Programm soll im folgenden
"Kommunikationsprogramm" genannt werden, der Zustand nach
einem Breakpoint soll "stehende Emulation" genannt
werden.) Dann blendet die Hardware des Emulators dieses
Kommunikationsprogramm wieder aus, und der Prozessor
bearbeitet bis zum nächsten Breakpoint das
Anwenderprogramm.
Das Einblenden des Kommunikationsprogramms wird
bekannterweise in zwei Schritten erfolgen, da sich dieses
i. A. an einer festen Adresse befindet, der Prozessor aber
an jeder beliebigen Adresse unterbrochen werden können
muß. Deshalb blendet der Emulator nach Erkennen eines
Breakpoints zuerst einen Sprungbefehl zu der Adresse ein,
ab der dann im zweiten Schritt das eigentliche
Kommunikationsprogramm bearbeitet werden soll, welches
erst nach Ausführen des Sprungbefehls eingeblendet werden
kann.
Dieses Einblenden eines nicht vom Anwender erstellten
Programms führt zu Problemen, wenn in dem zu testenden
Anwenderprogramm Interruptroutinen verwendet werden. Dies
soll im folgenden näher erläutert werden:
Interruptroutinen sind Routinen, die vom Prozessor asynchron zum normalen Programm nach Erfüllung bestimmter Bedingungen aufgerufen werden. Interruptroutinen werden normalerweise verwendet, wenn der Prozessor auf bestimmte Ereignisse (z. B. externes Signal) sofort reagieren soll. Erkennt ein Prozessor eine Interruptanforderung, so verzweigt er nach Beendigung des gerade ausgeführten Befehls zu einer bestimmten Adresse (diese Adresse ist abhängig von der Quelle der Interruptanforderung) bei denen sich die vom Anwender erstellte Interruptroutine befinden muß.
Interruptroutinen sind Routinen, die vom Prozessor asynchron zum normalen Programm nach Erfüllung bestimmter Bedingungen aufgerufen werden. Interruptroutinen werden normalerweise verwendet, wenn der Prozessor auf bestimmte Ereignisse (z. B. externes Signal) sofort reagieren soll. Erkennt ein Prozessor eine Interruptanforderung, so verzweigt er nach Beendigung des gerade ausgeführten Befehls zu einer bestimmten Adresse (diese Adresse ist abhängig von der Quelle der Interruptanforderung) bei denen sich die vom Anwender erstellte Interruptroutine befinden muß.
Nach Beendigung der Interruptroutine verzweigt der
Prozessor wieder zu der Stelle im Hauptprogramm, an der
dieses unterbrochen wurde.
Erscheint eine asynchrone Interruptanforderung zu einem
Zeitpunkt, zu dem die Emulation steht, die Hardware des
Emulators also anstelle des Anwenderprogramms ein eigenes
Programm einblendet, das die Kommunikation des Prozessors
mit einem Terminal ermöglicht (s. o.), so findet der
Prozessor nach Verzweigen in die Interruptroutine u. U.
nicht die vom Anwender vorgesehene Interruptroutine vor,
sondern ein i. A. als Interruptroutine unsinniges Programm
(der vom Emulator eingeblendete Sprungbefehl oder das
Kommunikationsprogramm).
Dies führt meist zum Absturz des Systems. Es zwei
Möglichkeiten, dieses Problem zu umgehen, aber für den
Anwender keine Einschränkungen bedeuten:
- 1. Die Abarbeitung von Interruptroutinen wird bei stehender Emulation gesperrt.
- 2. Die Hardware des Emulators erkennt den Zeitraum, in dem der Prozessor eine Interruptroutine bearbeitet.
Viele Prozessoren liefern jedoch keine direkte
Information über ihren internen Interruptstatus (etwa in
Form einer Interruptaktiv-Leitung) nach außen, sodaß der
Interruptstatus von außen nicht erkennbar ist.
Aufgabe des erfindungsgemäßen Verfahrens, welches
vorzugsweise in In-Circuit-Emulatoren eingesetzt werden
kann, ist es, den Interruptstatus bei Prozessoren von
außen durch Überwachung der Bussignale zu erkennen. Dabei
soll das Echtzeitverhalten der Prozessoren nicht
beeinflußt werden. Das erfindungsgemäße Verfahren soll
auch bei Prozessoren, die keine direkte Information über
den Interruptstatus z. B. durch eine "Interrupt-aktiv-
Leitung" nach außen geführt haben, funktionieren.
Diese Aufgabe wird durch das in Anspruch 1 beschriebene
Verfahren gelöst.
Das erfindungsgemäße Verfahren hat den Vorteil,
daß der Interruptstatus des Mikroprozessors erkannt
werden kann, ohne daß zusätzliche Eingaben vom Anwender
notwendig sind. Es ist nicht notwendig einzelne
Interruptvektoren zu sperren oder freizugeben.
Der Speicherbereich auf den die Interruptvektoren zeigen
ist, wenn einzelne Interrupts nicht verwendet werden, ist
frei verfügbar.
Ein weiterer Vorteil ist, daß es bei Anwendung des
erfindungsgemäßen Verfahrens in einem In-Circuit-Emulator
zu keiner Einschränkung der Emulation kommt.
Alle Debug-Funktionen sind uneingeschränkt sowohl
innerhalb von Interruptroutinen als auch direkt auf den
Interrupteinsprünge weiterhin anwendbar (Single Step,
Breakpoints, Snapshots etc.).
Durch eine vorteilhafte Weiterbildung der Erfindung gemäß
Anspruch 3 können in Emulatoren, die das Verfahren nach
Anspruch 1 und Anspruch 2 einsetzen, bei stehender
Emulation Interruptroutinen in Echtzeit abgearbeitet
werden. Entsprechend Anspruch 3 wird Schaltungseinrichtung
(6) zusätzlich zu Schaltungseinrichtung (1)
angeordnet, die abhängig vom Interruptstatus (6), der in
Schaltungseinrichtung (1) bestimmt wird, das
Monitorprogramm ausblendet, und wieder das Anwenderprogramm
einblendet.
Es besteht nach Anspruch 3 die Möglichkeit, bei stehender
Emulation während des Zeitraums, in dem der Prozessor
eine Interruptroutine bedient, das vom Emulator
eingeblendete Programm wieder auszublenden, sodaß der
Prozessor ungestört das Interruptprogramm bearbeiten kann.
Dies hat den Vorteil:
- - Dieses Verfahren ermöglicht eine effiziente Art des
Testens von Interruptroutinen:
Bei stehender Emulation, also bei uneingeschränkten Einblick auf alle Register im Prozessor, können die vom Anwender entwickelten Interruptroutinen in Echtzeit, d. h. zur gleichen Zeit und in der gleichen Geschwindigkeit wie später ablaufen. Wird mit Hilfe einer selbständigen Interruptroutine z. B. eine Regelung verwirklicht, so hat der Anwender die Möglichkeit, ohne den Regelkreis unterbrechen zu müssen, bestimmte Parameter zu ändern und ihren Einfluß auf die Regelung zu testen.
Im folgenden wird das Verfahren nach Anspruch 1
beschrieben.
Die Schaltungseinrichtung (1) mit dem Bus des
Mikroprozessors oder Mikroprozessorsystemes, dessen
Interruptstatus bestimmt werden soll, verbunden. Aufgrund
der Signale, die zu einem gegebenen Zeitpunkt
entweder/und an Daten- (2) und/oder Adreß- (3) und/oder
Steuerbus (4) anliegen, wird erfindungsgemäß in der
Schaltungseinrichtung (1) in Verbindung mit den Signalen,
die zu früheren Zeitpunkten an o. g. Bussen angelegen sind,
unter der Annahme eines normalen Programmablaufs, eine
Vorhersage erstellt, was der Prozessor als nächsten
Befehl ausführen wird. Durch das Nichtübereinstimmen der
Vorhersage mit dem tatsächlichen Programmablauf erkennt
Schaltungseinrichtung (1) erfindungsgemäß einen Einsprung
in eine Interruptroutine.
Im erfindungsgemäßen Verfahren erkennt Schaltungseinrichtung
(1) entsprechend Anspruch 2 ebenfalls das
Interruptende beispielsweise durch Decodieren eines
bestimmten Befehls für den Interruptrücksprung.
Durch den Vergleich der Anzahl der Interrupteinsprünge
und Aussprünge wird die Schachtelungstiefe bei
verschachtelten Interruptroutinen bestimmt und somit der
Interruptstatus der überwachten Prozessors ermittelt.
In einer vorteilhaften Weiterbildung der Erfindung kann
Schaltungseinrichtung (1) und/oder Schalteinrichtung (6)
durch einen oder mehrere programmierbare
Logikbaustein(e) ausgeführt werden. Bevorzugterweise
wird eine Logikschaltung eingesetzt werden, die im
eingebauten Zustand um oder neu programmiert werden kann.
Ein vorteilhafter Baustein könnte ein FPGA (Fuse
Programmable Gate Array) beispielsweise der Firma Xilinx
sein. Die logische Verknüpfung wird hier seriell in den
Logikbaustein beim Power/Up geladen, da sie flüchtig ist.
Diese Eigenschaft kann genutzt werden, um verschiedene
logische Verknüpfungen entsprechend den verschiedenen
unterstützten Prozessoren beispielsweise durch eine
programmgesteuerte Einrichtung zu laden.
Insbesondere bei Einsatz in einem Logikanalysator kann
durch die Weiterbildung der Erfindung erreicht werden,
daß Schaltungseinrichtung (1) im eingebauten Zustand
mehrere Prozessoren unterstützen kann.
In einer vorteilhafte Weiterbildung der Erfindung
wird die in Schaltungseinrichtung (1), die
bevorzugterweise wie in o. g. Weiterbildung ausgeführt
sein kann, ermittelte Schachtelungstiefe in einen
Verfolgungs- oder Trace-Speicher geschrieben.
In einer weiteren vorteilhaften Weiterbildung der
Erfindung wird Schaltungseinrichtung (1) dazu verwendet,
um die Aufzeichnung in den Verfolgungsspeicher steuern.
Es zeigt
Fig. 1 das erfindungsgemäße Verfahren nach Anspruch 1
Fig. 2 Weiterbildung des erfindungsgemäßen Verfahrens
nach Anspruch 3
Fig. 3 das bevorzugte Ausführungsbeispiel einer Anordnung
zur Durchführung des erfindungsgemäßen Verfahrens.
Das erfindungsgemäße Verfahren soll anhand eines
bevorzugten Ausführungsbeispiels einer Vorrichtung zur
Durchführung des o. g. Verfahrens erläutert werden.
Es bezieht sich auf Prozessoren der Intel 8031 Familie.
Zum Verständnis des Ausführungsbeispiels muß kurz der
Buszyklus der Prozessoren der Intel 8031 Familie
erläutert werden:
Ein Maschinenzyklus besteht aus 12 CPU-Taktperioden.
Während jedes Maschinenzyklus erzeugt der Prozessor zwei
Zugriffe auf den externen Programmspeicher (PSEN-Zyklus-
Program Storage Enabel). (Nur bei einem Zugriff auf einen
externen Datenspeicher werden zwei PSEN-Zyklen
ausgelassen, dies ist hier aber nicht wichtig.)
Ein PSEN-Zyklus besteht aus zwei Phasen:
Zuerst wird am Adreßbus der Inhalt des internen Programmzählers angelegt, anschließend wird das dieser Adresse zugeordnete Byte über den Datenbus in den Prozessor geholt.
Zuerst wird am Adreßbus der Inhalt des internen Programmzählers angelegt, anschließend wird das dieser Adresse zugeordnete Byte über den Datenbus in den Prozessor geholt.
Die Ausführzeit der einzelnen Befehle des Intel 8031
Prozessors beträgt entweder 1, 2 oder 4 Maschinenzyklen,
2, 4, oder 8 PSEN-Zyklen. Die Länge der einzelnen
Befehle sind entweder 1, 2 oder 3 Byte. Mit jedem PSEN-
Zyklus wird ein Byte aus dem externen Programmspeicher
geholt. (d. h. ein 3-Byte-Befehl muß mindestens 2
Maschinenzyklen dauern.)
Der Prozessor erzeugt also meist mehr PSEN-Zyklen als
eigentlich nötig. Nur Befehle, die 2 Byte lang sind und 1
Maschinenzyklus dauern, benötigen keine überflüssigen
PSEN-Zyklen.
Es ist wichtig zu erwähnen, daß der Prozessor
überflüssige PSEN-Zyklen nach außen zwar erzeugt, die
geholten Daten intern aber nicht verarbeitet werden.
Nach jedem PSEN-Zyklus, dessen Daten vom Prozessor
verarbeitet wurden, wird der interne Programmzähler
zunächst um eins erhöht, damit beim nächsten PSEN-Zyklus
das nächste Byte des Programms geholt werden kann. (Nur
wenn der Prozessor einen Sprungbefehl ausführt, wird vor
dem 1. PSEN-Zyklus des nächsten Befehls die durch den
Sprungbefehl erzeugte Adresse in den Programmzähler
geladen.)
Nach jedem überflüssigen PSEN-Zyklus, dessen Daten vom
Prozessor nicht verarbeitet werden, bleibt der interne
Programmzähler hingegen unverändert, sodaß beim nächsten
(evtl. wieder überflüssigen) PSEN-Zyklus wieder die selbe
Adresse anliegen wird.
Erkennt der Prozessor eine Interruptanforderung, so
blendet die Hardware des Prozessors nach Beendigung des
gerade ausgeführten Befehls intern einen
Unterprogrammaufruf zu der der Interruptquelle
zugeordneten Einsprungsadresse ein.
Extern aber erzeugt er vier PSEN-Zyklen (der interne
Unterprogrammaufruf dauert 2 Maschinenzyklen). Der erste
dieser 4 Zyklen holt den Inhalt des Bytes, dessen Adresse
in dem durch den Interrupt noch unveränderten Programmzähler
steht.
Da der Prozessor dieses Byte aber nicht verarbeiten kann,
da er intern gerade einen Unterprogrammaufruf bearbeitet,
ist dieser PSEN-Zyklus aber ein überflüssiger PSEN-
Zyklus, d. h. der Programmzähler wird nicht um eins erhöht.
Deshalb wird beim folgenden zweiten PSEN-Zyklus die selbe
Adresse ausgegeben.
Dies ist der einzigste Fall, bei dem der erste und zweite
PSEN-Zyklus eines Befehls die selbe Adresse generieren:
Wird ein Befehl ausgeführt, (d. h. nicht durch den internen
Unterprogrammaufruf, der durch eine Interruptanforderung
erzeugt wird, unterbrochen) so ist der 1. PSEN-Zyklus
nicht überflüssig, der interne Programmzähler wird also um
eins erhöht. (Wird der Programmzähler durch einen
Sprungbefehl verändert, so geschieht dies erst nach dem
2. PSEN-Zyklus des Befehls.)
Das heißt die Adresse des 1. PSEN-Zyklus und des 2. PSEN-
Zyklus unterscheiden sich immer um den Wert 1, es sei
denn, der Prozessor hat eine Interruptanforderung erkannt
(s. o.). Dann sind die Adressen des 1. und 2. PSEN-Zyklus
gleich.
Hier setzt nun das erfindungsgemäße Verfahren ein:
Die oben erläuterte Vorhersage ist in diesem Fall die
Tatsache, daß sich normalerweise die Adresse zwischen
ersten und zweiten PSEN-Zyklus um genau den Wert 1
erhöht. Trifft das nicht zu, so hat der Prozessor gerade
einen Interrupt erkannt.
Um zu entscheiden, ob ein bestimmter PSEN-Zyklus ein 1.
PSEN-Zyklus, bzw. ein 2. PSEN-Zyklus ist, werden der
Daten (7) und Steuerbus den gesamten Programmablauf ab dem
Zeitpunkt, bei dem der Prozessor gestartet wurden (Reset)
überwacht.
Die Erfindung wird nun anhand des bevorzugten
Ausführungsbeispieles beschrieben.
Fig. 1 zeigt das bevorzugte Ausführungsbeispiel.
Der Datenbus (7) ist auf die Decodiereinrichtung (8),
welche hier beispielsweise aus einem programmierbaren
Speicher besteht, geführt. Erfindungsgemäß wird bei jedem
1. PSEN-Zyklus (der erste PSEN-Zyklus nach einem Reset
ist ein 1. PSEN-Zyklus) anhand des am Datenbus (7)
anliegenden Opcodes festgestellt, wie lang (d. h. wieviele
PSEN-Zyklen) dieser Befehl dauert. Dies geschieht mit dem
programmierbaren Speicher (8). Der Speicher ordnet jedem
der 256 Opcodes einen Wert zwischen 2 und 8 zu, der der
Länge des Befehls entspricht.
Dieser Wert erscheint beispielsweise binär codiert auf 3
Datenleitungen (9) des Speicher (8), mit denen der Zähler
(10) geladen wird. Dieser wird anschließend mit jedem
PSEN-Zyklus um eins erniedrigt. Erreicht der Zähler den
Wert Null, so generiert er an dessen Ausgang (11) einen
Impuls, der dem 1. PSEN-Zyklus entspricht, und gleichzeitig
zum erneuten Laden des Zählers (10) verwendet wird.
Der Zähler (10) erzeugt ein weiteres Signal (12), das dem
2. PSEN-Zyklus entspricht.
Der Adreßbus (13) wird mit dem 1. PSEN in den Zwischenspeicher
(14) und mit dem 2. PSEN in den Zwischenspeicher
(15) geladen. Die Ausgänge der beiden Zwischenspeicher
(14) und (15) sind auf den Eingang eines Komparators (16)
geführt, der die Interrupt-Leitung (17) aktiviert, falls
beide Werte gleich sind. Die Interrupt-Leitung (17) ist
genau dann aktiv, wenn der Prozessor eine Interruptroutine
bearbeiten wird. Da ohne Interruptanforderung
sich die Adressen des 1. und 2. PSEN-Zyklus immer genau
um den Wert 1 unterscheiden, genügt es, bei diesem
Vergleich nur die Adreßleitung mit dem niederwertigsten
Bit A0 heranzuziehen. Dies reduziert den Aufwand der
Hardware, die für diesen Zweck gebaut werden muß. Das
Ende der Interruptroutine ist im Fall des 8031 Prozessors
einfach zu erkennen, da der 8031 einen speziellen Befehl
(Reti) für das Beenden eines Interrupts vorsieht. Dies
erfolgt mit Speicher (8). Eine Interrupt-Ende-Leitung
(18) ist von Speicher (8) auf den Abwärts-Eingang des
Aufwärts/Abwärts-Zählers (19) geführt.
Die Interrupt-Leitung (17) ist auf den Aufwärts-Eingang
von Zähler (19) geführt. Ist der Zählerstand von Zähler
(19) größer als 0, bearbeitet der überwachte Prozessor
gerade einen Interrupt, ist der Zählerstand 0 wird keine
Interruptroutine bearbeitet. Die Ausgang (20) ist aktiv,
wenn der überwachte Prozessor eine Interruptroutine
abarbeitet. Er wird in einem erfindungsgemäßen Emulator
verwendet, um bei stehender Emulation entsprechend
Anspruch 3 das Anwenderprogramm einzublenden, wenn eine
Interruptanforderung auftritt.
Claims (8)
1. Verfahren zur Erkennung des Interruptstatus von
Mikroprozessoren dadurch gekennzeichnet, daß
eine Schaltungseinrichtung den Bus (Adreß- (1) und/oder
Daten- (3) und/oder Steuerbus (4) eines Mikroprozessors
überwacht, und unter Voraussetzung des normalen
Programmablaufes Voraussagen bezüglich des zukünftigen
Programmablaufes macht und bei Nichterfüllung dieser
Voraussagen einen Interrupteinsprung erkennt.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
die Schalteinrichtung (1) ebenfalls das Interruptende
erkennt und die Schachtelungstiefe bei verschachtelten
Interruptanforderungen durch Vergleich der
Interrupteinsprünge mit Interruptaussprünge ermittelt.
3. Anordnung zur Durchführung des Verfahrens nach Anspruch
1, dadurch gekennzeichnet, daß zusätzlich zu
Schalteinrichtung (1) eine Schalteinrichtung (5)
angeordnet wird, die das Ergebnis von Schaltung (1)
verwendet, und bei stehender Emulation das
Anwenderprogramm einblendet, wenn ein Interrupteinsprung
erfolgt, und wieder ausblendet wenn alle
Interruptanforderungen bedient werden.
4. Anordnung zur Durchführung des Verfahrens nach Anspruch
1-3, dadurch gekennzeichnet, daß Schaltung (1) durch
einen programmierbaren Logik-Baustein ausgeführt ist,
der im eingebauten Zustand umprogrammiert werden kann.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die in Schaltung (1) ermittelte Schachtelungstiefe
der Interruptroutinen zusätzlich zu den Signalen von
Adreß- und/oder Daten und/oder Steuerbus in einen
Speicher geschrieben werden.
6. Verfahren nach Anspruch 1-3 und Anspruch 5, dadurch
gekennzeichnet, daß die Aufzeichnung in den Speicher
durch die Schachtelungstiefe der Interruptroutinen
gesteuert wird.
7. Anordnung zur Durchführung des Verfahrens nach Anspruch
1 für die Prozessoren der Intel 8051 Familie, dadurch
gekennzeichnet, daß Schaltung (1) ein Interrupteinsprung
dadurch erkennt, daß die Adressen zum Zeitpunkt des
vorhergesagten Op Code Fetches mit den Adressen des
darauffolgenden Zyklusses verglichen werden, und bei
Übereinstimmung ein Interrupt erkannt wird.
8. Anordnung zur Durchführung des Verfahrens nach Anspruch
1 und Anspruch 2 für die Prozessoren der Intel 8051
Familie, dadurch gekennzeichnet, daß Schaltung (1) so
ausgeführt ist, daß bei Auftreten eines speziellen
Befehles (RETI) das Ende einer laufenden
Interruptanforderung erkannt wird.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19904042263 DE4042263A1 (de) | 1990-12-31 | 1990-12-31 | Verfahren zu erkennung des interruptstatus eines mikroprozessors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19904042263 DE4042263A1 (de) | 1990-12-31 | 1990-12-31 | Verfahren zu erkennung des interruptstatus eines mikroprozessors |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4042263A1 true DE4042263A1 (de) | 1992-07-02 |
Family
ID=6421706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19904042263 Withdrawn DE4042263A1 (de) | 1990-12-31 | 1990-12-31 | Verfahren zu erkennung des interruptstatus eines mikroprozessors |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4042263A1 (de) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4447876A (en) * | 1981-07-30 | 1984-05-08 | Tektronix, Inc. | Emulator control sequencer |
DE3429112A1 (de) * | 1984-08-03 | 1986-02-06 | Siemens AG, 1000 Berlin und 8000 München | Verfahren und schaltungsanordnung zur generierung von steuerinformationen aus statussignalen eines mirkroprozessors |
-
1990
- 1990-12-31 DE DE19904042263 patent/DE4042263A1/de not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4447876A (en) * | 1981-07-30 | 1984-05-08 | Tektronix, Inc. | Emulator control sequencer |
DE3429112A1 (de) * | 1984-08-03 | 1986-02-06 | Siemens AG, 1000 Berlin und 8000 München | Verfahren und schaltungsanordnung zur generierung von steuerinformationen aus statussignalen eines mirkroprozessors |
Non-Patent Citations (1)
Title |
---|
US-Firmenschrift der Intel Corp., "The 8086 Family User's Manual", Oktober 1989, S.2/1, 2/29,2/30 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3242502C2 (de) | ||
DE3903835C2 (de) | ||
DE69908682T2 (de) | Prozessor mit Echtzeit-Ablaufsteuerung zur Fehlerbeseitigung ohne Fehlerbeseitigungsmonitor | |
EP0368190B1 (de) | Verfahren zur Beobachtung des zeitlichen Ablaufs eines von einem Rechnersystem ausgeführten Objektprogrammes und Beobachtungswerkzeug zur Durchführung dieses Verfahrens | |
EP2962205B1 (de) | Mehrkern-prozessorsystem mit fehleranalysefunktion | |
EP0011685A1 (de) | Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung | |
EP1019819B1 (de) | Programmgesteuerte einheit und verfahren zum debuggen derselben | |
DE69815006T2 (de) | Datenverarbeitungseinheit mit Fehlerbeseitungsmöglichkeiten | |
DE102006041444B4 (de) | Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem | |
DE102009058652A1 (de) | Verfahren zur Beeinflussung eines Steuergerätes und Manipulationseinheit | |
EP1565825A2 (de) | Einrichtung und verfahren zur analyse von eingebetteten systemen | |
EP0671031B1 (de) | Mikrorechner mit überwachungsschaltung | |
EP3080668A1 (de) | Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts | |
DE60010847T2 (de) | Verfahren zur Fehlerbeseitigung in einem Thread-Programm | |
DE68924507T2 (de) | Verfahren und Gerät zur Markierung von Emulationsanalysezuständen. | |
DE3700800C2 (de) | Einrichtung zur Erzeugung eines Unterbrechungspunktes in einem Mikroprozessor | |
DE102011110151A1 (de) | Halbleitervorrichtung und Verfahren zum Betreiben einer Pipeline-Ausgleichseinrichtung in einer Halbleitervorrichtung | |
DE4042263A1 (de) | Verfahren zu erkennung des interruptstatus eines mikroprozessors | |
EP2287742B1 (de) | Programmgesteuerte Einheit | |
EP2634700A1 (de) | Verfahren und Entwicklungsumgebung zur Überwachung eines ablaufenden Programms | |
DE69311207T2 (de) | Steuereinheit oder Programmierbare Steuerung | |
DE19945940C2 (de) | Verfahren und Vorrichtung zur Bearbeitung bedingter Sprungbefehle in einem Prozessor mit PIPELINE-Rechnerarchitektur | |
DE3431304C2 (de) | ||
EP1594063B1 (de) | Verfahren zum Überprüfen von Steuerungsprogrammen | |
DE2939194A1 (de) | Verfahren und schaltungsanordnung zum ueberwachen des ordnungsgemaessen ablaufs eines programms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OM8 | Search report available as to paragraph 43 lit. 1 sentence 1 patent law | ||
8139 | Disposal/non-payment of the annual fee |