-
Die vorliegende Erfindung bezieht
sich auf ein Mikroprozessortest- und -diagnosesystem.
-
Die Steuerung kochentwickelter elektronischer
Systeme wird zunehmend von Mikroprozessoren übernommen. Beispielsweise enthält eine
Steuerung von Netzwerkkarten für
standardmäßige Druckerprodukte
von HP eine durch einen eingebetteten Mikroprozessor gesteuerte
Schnittstelle. Ein Testen von mikroprozessorgesteuerten elektronischen
Systemen erfolgt in der Regel während
der Produktentwicklungsphase unter Verwendung eines Schaltkreisemulators,
der den Mikroprozessor des in der Entwicklung befindlichen Produkts
simuliert. Im Gegensatz zu dem bei dem entwickelten Produkt verwendeten
Mikroprozessor stellt der Emulator dem Benutzer jedoch die Werkzeuge
bereit, die erforderlich sind, um (1) die Komponente des ausführbaren
Codes des Systems zu untersuchen und dynamisch zu verändern, (2)
Anhaltepunkte einzustellen, (3) ein Einzelschrittbewegen durchzuführen und
(4) interne Registerinhalte des Mikroprozessors zu berichten und
zu ändern.
-
1 zeigt
einen herkömmlichen
Emulator 110, der zum Testen eines eingebetteten Mikroprozessors 116 auf
einer PC-Platine 114 verwendet wird. Unter Bezugnahme auf 1 umfaßt die ASIC auf der PC-Platine
einen eingebetteten Mikroprozessor und eine Steuerschaltungsanordnung,
die für
die ASIC spezifisch ist. Die Stiftanordnung der ASIC 112 umfaßt in der
Regel eine Stiftanordnung für
alle Signale des eingebetteten Mikroprozessors. Eine PC-Platine 114 umfaßt einen
Sockel 118, der der Stiftanordnung des eingebetteten Mikroprozessors 116 entspricht.
Der Sockel 118, der dem eingebetteten Mikroprozessor entspricht,
ist mit den über
Anschlußstifte
aus der ASIC herausgeleiteten Signalen verbunden. Der eingebettete
Mikroprozessor für
das entwickelte Produkt wird gesperrt, und ein Kabel, das eine geeignete
Sonde aufweist, wird in den Sockel 118 des entfernten Mikroprozessors
eingeführt.
Der gesperrte eingebettete Mikroprozessor (externer Modus) ermöglicht es
dem Emulator, die Steuerung der ASIC zu übernehmen und die Signale des
eingebetteten Mikroprozessors zu simulieren.
-
Es ist üblich, daß Emulatoren eine Einrichtung
liefern, um auszuwählen,
ob der Emulatorprozessor den Code des Systems von einem tatsächlich in
dem in der Entwicklung befindlichen Produkt angeordneten Speicher
oder statt dessen von einem in dem Emulator selbst angeordneten
Speicher ausführt.
Der Emulatormikroprozessor 120 ist in einer geeigneten
Steuerschaltungsanordnung 124 eingebettet und umfaßt eine
Fehlersuchsoftware, die ermöglicht,
daß der
Emulatormikroprozessor gestartet und angehalten wird, und die ermöglicht,
daß die
internen Register des Mikroprozessors inspiziert oder geändert werden.
Dies ermöglicht
es dem Entwickler, einen Code während
des Betriebs (on the fly) nachzuverfolgen, einzufangen, einer Einzelschrittbewegung
zu unterziehen und zu modifizieren.
-
Der Emulator ist ein mächtiges
Werkzeug zum Diagnostizieren von Problemen in der Systemhardware
oder -firmware. Es gibt jedoch Probleme, die mit einem Test und
einer Diagnose unter Verwendung eines Emulators verbunden sind.
Während
ASICs beispielsweise unter Verwendung schnellerer Technologien entworfen
werden, werden ihre eingebetteten Prozessoren bei immer höheren Frequenzen
getaktet. Der Mikroprozessor 116 in der ASIC läuft dann
bei einer höheren
Taktrate als sie der externe Emulator 110 aufweisen kann.
Falls die Taktgeschwindigkeit des Mikroprozessors für eine Fehlersuche
oder eine Problemdiagnose mit einem Emulator verringert wird, wird
ein Risikofaktor eingebracht, da das System, bei dem die Fehlersuche
durchgeführt wird,
dann zu dem System, das an den Kunden versandt wird, unterschiedlich
ist. Der Unterschied der Mikroprozessortaktfrequenz zwischen dem
eingebetteten Mikroprozessor 116 und dem Emulatorprozessor 120 kann
Firmware- oder Hardwareprobleme, die nur bei der vollen Taktgeschwindigkeit
des eingebetteten Prozessors auftreten, maskieren.
-
Ein weiteres Problem bei der Verwendung
eines Emulators besteht darin, daß seine Verwendung oft die
Entwicklung eines zusätzlichen
Prototyps erfordert. Zusätzlich
zu dem Produktprototyp muß ein Firmwareprototyp
erzeugt werden, der das Emulatorwerkzeug berücksichtigen kann. Falls das
Produkt beispielsweise einen in die ASIC eingebetteten Mikroprozessor
verwendet, muß ein
zweiter Prototyp erzeugt werden, der einen Mikroprozessorsockel
für die
Emulatorverbindung liefert. Ferner kann ein Mikroprozessortakt einer
niedrigeren Frequenz erforderlich sein. Dieser zusätzliche
Prototyp bedeutet zusätzliche
technische und Materialkosten für
das Projektbudget, die vermieden werden können.
-
Ein weiteres Problem bei Schaltkreisemulatoren
ist ihre begrenzte Flexibilität.
Beispielsweise sind herkömmliche
Schaltkreisemulatorwerkzeuge spezifisch für den bei dem Entwurf verwendeten
Prozessortyp. Falls der Systementwerfer des in der Entwicklung befindlichen
Elektroniksystems also entscheidet, einen anderen Mikroprozessor
zu verwenden, muß ein
neues Emulatorwerkzeug gekauft werden. Ferner weisen herkömmliche
Emulatoren in der Regel standardmäßige Anschlußstifte
auf, die zugänglich
sein müssen.
Da Emulatoren eine Standardkonfiguration mit einer standardmäßigen Stiftanordnung
aufweisen, ist es schwierig, die Anzahl von standardmäßige Anschlußstiften
auf der ASIC zu verringern.
-
In bezug auf ASICs erfordern herkömmliche Emulatoren,
daß die
ASIC entsprechende externe standardmäßige Anschlußstifte
herausbringt, so daß das
Emulatorwerkzeug an der ASIC befestigt werden kann. Dies impliziert
zwei Betriebsmodi für
die ASIC: interne Mikroprozessorverwendung und externe Mikroprozessorverwendung.
Die beiden Betriebsmodi weisen Diskrepanzen in bezug auf die Zeitgebung auf,
die das ASIC-Team
beim Entwurf berücksichtigen
und simulieren muß.
Dies bedeutet zusätzliche Zeit
für den
ASIC-Entwurfszyklus aufgrund der Zeit, die erforderlich ist, um
für beide
Betriebsmodi Prüfungen
durchzuführen.
-
Ein zu einem Emulator alternatives
Testwerkzeug ist ein Fehlersuchprogramm bzw. Debugger. Die Verwendung
eines Fehlersuchprogramms erfordert einen Kommunikationsanschluß, einen
kartenbasierten Fehlersuchcode und eine Benutzerschnittstelle, die
das an dem Kommunikationsanschluß der ASIC angeschlossene System
verwaltet. Im allgemeinen kann ein Codeentwickler viele derselben
Funktionen wie ein Schaltkreisemulator ausführen, jedoch bei einer Entwurfsgeschwindigkeit
bei dem eigentlichen Kartenentwurf. Ähnlich einem Emulator weist
ein serienmäßiges Fehlersuchprogramm den
Nachteil auf, daß es
für einen
bestimmten Mikroprozessor spezifisch ist. Bei neueren Prozessorfamilien
kann diese Fehlersuchfunktionalität in deren Entwürfe eingebaut
sein. Sie können
einen eingebetteten Kommunikationsanschluß mit einer bereitgestellten
Software aufweisen, um ein Fehlersuchen zu ermöglichen.
-
In der EP-A-0762278 ist ein Datenprozessor offenbart,
der eine Mehrzahl von Hardwareanhaltepunktregistern und eine Anhaltepunktschaltung
aufweist, um eine Anhaltepunktoperation durchzuführen. Die Anhaltepunktoperation
kann auf einem Adreßbereich
oder Datenwert beruhen. Ferner ist ein externes Entwicklungssystem
offenbart, das Informationen verwendet, die von dem Datenverarbeitungssystem
kommuniziert werden, um Fehlersuchoperationen durchzuführen.
-
In der EP-A-0652516 ist ein integrierter
Mikroprozessor mit einer Fehlersuchsoftware offenbart, die gespeichert
und ausgeführt
wird, wenn der Prozessor auf dem Zielcomputer in einen Fehlersuchmodus
eintritt.
-
Die vorliegende Erfindung schafft
ein verbessertes Testen von Mikroprozessoren.
-
Gemäß einem Aspekt der vorliegenden
Erfindung wird ein Test- und Diagnosesystem gemäß Anspruch 1 geschaffen.
-
Das bevorzugte Test- und Diagnosesystem zum
Testen eines eingebetteten Mikroprozessors kann mit unterschiedlichen
Mikroprozessoren oder Mikroprozessorfamilien arbeiten, kann ermöglichen, daß ein Code
bei einer Produktgeschwindigkeit statt der Geschwindigkeit des Emulators
getestet wird, und kann den Bedarf an mehr als einem Prototyp, um das
in der Entwicklung befindliche Produkt vollständig zu testen, beseitigen.
-
Das bevorzugte Ausführungsbeispiel
liefert ein Test- und Diagnosesystem zum Testen eines eingebetteten
Prozessors, das verschiedene Mikroprozessoren oder Mikroprozessorfamilien
testen kann, das ermöglicht,
daß der
zu testende Code bei der Geschwindigkeit des in der Entwicklung
befindlichen Produkts getestet wird, und das den Bedarf an mehr als
einem Prototyp, um das in der Entwicklung befindliche Produkt vollständig zu
testen, eliminiert. Das Test- und Diagnosesystem umfaßt eine
ASIC, die einen eingebetteten Mikroprozessor aufweist. Im Gegensatz
zu herkömmlichen
ASICs ist die ASIC jedoch modifiziert, um eine Fehlersuchunterstützungslogikeinheit
(DAL – debug
assist logic) zum Überwachen der
Adreß-
und Dateninformationen, auf die durch den Mikroprozessorspeicher
zugegriffen wird, zu umfassen. Wenn die Fehlersuchunterstützungslogikeinheit
eine Übereinstimmung
zwischen den überwachten
Informationen und den in der DAL gespeicherten Bedingungen findet,
unterbricht sie den eingebetteten Mikroprozessor und transferiert
eine Steuerung von dem Code, der auf dem Mikroprozessor läuft, zu dem
Fehlersuchkern. Der Fehlersuchkern bzw. die Fehlersuchsoftware ist
in einer ersten Speichereinheit gespeichert, die mit der DAL gekoppelt
ist. Ansprechend auf eine Benutzereingabe ermöglicht es die Fehlersuchsoftware
dem Benutzer, Prozessortransaktionen während einer Codeausführung nachzuverfolgen.
-
Die DAL ist in der modifizierten
ASIC eingebettet und ermöglicht
es dem Entwickler, Register zu programmieren, die die normale Ausführung des
eingebetteten Prozessors unterbrechen. Typische Unterbrechungsbedingungen
umfassen eine Adreßübereinstimmung,
eine Datenübereinstimmung
oder eine Adreß-
und Datenübereinstimmung.
Unterbrechungsbedingungen (der Steuersatz) sind in der DAL gespeichert.
In der Regel beruht die Unterbrechung auf dem Typ/Standort/Datenzugriff
des Mikroprozessors.
-
Vorzugsweise umfaßt die ASIC einen REMR-Anschluß (REMA
= remote access, Fernzugriff), der verwendet wird, um den eingebetteten
Mikroprozessor und den Überlagerungsverkabelungsspeicher
zu steuern. Eine Überwachungseinrichtung ist
mit dem REMA-Anschluß der
ASIC elektrisch gekoppelt, was es dem Benutzer ermöglicht,
in der Lage zu sein, die Adreß-/Datenabrufe des
eingebetteten Mikroprozessors extern zu überwachen und Befehle in den
Fehlersuchkern einzugeben. Beispielsweise kann der Benutzer einen
Befehl eingeben, den Code so zu modifizieren, daß er auf dem eingebetteten
Mikroprozessor läuft,
oder alternativ dazu kann er einen Befehl eingeben, der einen Anhaltepunkt
in dem Code an einem Punkt einstellt, der für die Person, die die Fehlersuche
durchführt,
von besonderem Interesse ist.
-
Bei dem bevorzugten Ausführungsbeispiel umfaßt das Test- und Diagnosesystem
sowohl einen FLASH-Speicher als auch eine Anweisungsüberlagerungsverkabelung.
Die Anweisungsüberlagerungsverkabelung
ist ein alternativer Speicher, in der Regel SRAM, der statt eines
FLASH-Speichers verwendet werden kann. Somit kann ein Code entweder in
einen FLASH-Speicher
oder in den Anweisungsüberlagerungsspeicher
heruntergeladen werden.
-
REMA-Anschlüsse wurden bereits in herkömmliche
ASICs integriert. Bei herkömmlichen
ASICs werden REMA-Anschlüsse
in der Regel verwendet, um einen Code im Werk in einen FLASH-Speicher herunterzuladen.
Ein FLASH-Speicher wird in der Regel im Werk beschrieben, da es
viel Zeit erfordert, einen FLASH zu beschreiben. Ferner ist ein FLASH-Speicher
nicht ohne weiteres modifizierbar. Bei herkömmlichen FLASH-Speicherprodukten
kann man nicht eine einzelne Stelle eines FLASH-Speichers modifizieren,
sondern statt dessen muß man einen
ganzen Sektor umschreiben. Da der Anweisungsüberlagerungsspeicher in der
Regel SRAM ist, können
Codeänderungen
oder Softwareanhaltepunkte, die während des Betriebs (on the
fly) durchgeführt
werden, viel schneller als bei einem FLASH-Speicher durchgeführt werden.
-
Vorzugsweise wird der REMA-Anschluß verwendet,
um einen Code auf der Überlagerungsverkabelung
zu Fehlersuchzwecken umzuprogrammieren. Änderungen des Programmcodes
werden während des
Betriebs durchgeführt,
wobei kleine Änderungen typisch
sind. Der REMA-Anschluß der
ASIC ermöglicht
es dem Entwickler, Informationen in den Überlagerungsverkabelungsspeicher
des in Entwicklung befindlichen Produkts herunterzuladen. Die heruntergeladenen
Informationen werden durch den Fehlersuchkern interpretiert, der
aktiv wird, indem er die ASIC oder die Anweisungsüberlagerungsverkabelung
steuert.
-
Die Anweisungsüberlagerungsverkabelung ist
aus einer Anweisungsüberlagerungssteuerschaltung
und einem Speicher gebildet. Die Anweisungsüberlagerungssteuerschaltung
umfaßt
in der Regel einen Adreßdecodierer,
Adreßpuffer,
Datenpuffer und ein Freigaberegister. Ein Einstellen des REMAP-Bits in
der DAL ändert
den Adreßbereich,
in dem der Flash-Speicher freigegeben ist. Nach der Freigabe eines
Umabbildens kann der Fehlersuchkern anschließend den Speicher auf der Anweisungsüberlagerungsverkabelung
freigeben, der dann die Adresse besetzt, die der Flash aufwies,
bevor das Umabbildungsmerkmal freigegeben wurde. Der Fehlersuchkern
lädt anschließend einen
Programmcode in die Anweisungsüberlagerungsverkabelung.
Das REMAP-Merkmal ermöglicht
dann, daß der FLASH-Speicher
und der Überlagerungsspeicher ohne
eine Buskonkurrenz nebeneinander existieren.
-
Der Fehlersuchkern ist eine Software,
die zur Verwendung geladen wird und über den REMA-Anschluß gestartet
wird. Nachdem er aufgerufen wurde, spricht der Fehlersuchkern auf
eine Benutzereingabe an, einen neuen Programmcode in die Anweisungsüberlagerungsverkabelung
herunterzuladen, die DAL-Register zu verwalten, eine Steuerung zwischen
einem Fehlersuchüberwachungsmodus
und einem normalen Programmausführungsmodus
hin- und herzutransferieren, und Prozessortransaktionen nachzuverfolgen
oder einzufangen, wenn der in der Entwicklung befindliche Code ausgeführt wird.
-
Das System kann die Entwicklungskosten
im Vergleich zu herkömmlichen
Testmethodologien verringern. Zunächst eliminiert das bevorzugte
Testdiagnosesystem das Erfordernis eines Schaltkreisemulators und
somit die mit demselben verbundenen Kosten. Ferner eliminiert es
die mit der Verwendung von zwei Prototypen verbundenen Kosten, da
der eigentliche Produktentwurf ohne die Flächenerfordernisse eines Schaltkreisemulators
verwendet werden kann.
-
Ein weiterer Vorteil des bevorzugten
Ausführungsbeispiels
besteht darin, daß es
eine Fehlersuche bei einer gewissen Geschwindigkeit ermöglicht. Die
ASIC kann während
der Codeentwicklung bei voller Geschwindigkeit laufen, da die Schaltkreisemulatorbeschränkungen
beseitigt sind. Ferner ist der Interner-/Externer-Prozessor-Betriebsmodus
eliminiert, da der eingebettete Prozessor auf der ASIC während der
Codeentwicklung verwendet wird. Dies verringert ferner die mit der
Entwicklung zusammenhängende(n)
Zeit und Kosten, da die ASIC nicht die Zeitgebungs-/Ladungsdiskrepanzen
zwischen den beiden Modi zum Zweck einer Überprüfung berücksichtigen muß. Ferner
wird die Entwicklungszeit verringert, da die Anweisungsüberlagerungsverkabelung
ermöglicht,
daß rasche
Modifikationen an dem Code vorgenommen werden.
-
Ein Ausführungsbeispiel der vorliegenden Erfindung
wird im folgenden unter Bezugnahme auf die beiliegenden Zeichnungen
lediglich beispielhaft beschrieben. Es zeigen:
-
1 einen
herkömmlichen
Emulator, der zum Testen eines eingebetteten Prozessors auf einer PC-Platine verwendet
wird;
-
2 ein
Blockdiagramm eines Ausführungsbeispiels
eines Hardwaretest- und -diagnosesystems;
-
3 ein
Blockdiagramm einer bei dem Test- und Diagnosesystem verwendeten
ASIC;
-
4 eine
Tabelle, die die Internes-Register-Positionen der DAL auflistet;
-
5 eine
Tabelle, die die Bitdefinitionen der acht Registersätze, des
Unterbrechungs-ID-Registers (DBID) und des Unterbrechungssteuerungsregisters
(DBINTSTS) auflistet;
-
6 eine
Speicherabbildung für
den eingebetteten Prozessor; und
-
7 ein
Blockdiagramm der Anweisungsüberlagerungsspeicherverkabelung.
-
2 zeigt
ein Blockdiagramm des bevorzugten Hardwaretest- und -diagnosesystems 200. Das
in 2 gezeigte Test-
und Diagnosesystem umfaßt
eine ASIC 202, die einen eingebetteten Prozessor 204 und
eine Fehlersuchunterstützungslogikeinheit
(DAL) 206 umfaßt,
eine Speichereinheit 208, eine Anweisungsüberlagerungsverkabelung 210 und eine Überwachungseinrichtung 212.
Die Speichereinheit 208, die Anweisungsüberlagerungsverkabelung 210 und
die Überwachungseinrichtung 212 sind alle
mit der ASIC 202 elektrisch gekoppelt.
-
3 zeigt
ein Blockdiagramm der ASIC 202 und der externen Speichereinheiten 208 und 214,
die bei dem Test- und Diagnosesystem verwendet werden. Die ASIC 202 umfaßt einen
eingebetteten Mikroprozessor 204, eine DAL 206,
einen Kommunikationsanschluß 216 und
eine RAM-Steuerung 218. Eine Funktionssteuerung 220 ist
repräsentativ
für andere
auf der ASIC durchgeführte
Steuerfunktionen. Ein Steuerbus 224 koppelt den eingebetteten
Mikroprozessor 204 elektrisch mit der DAL 206.
Ein Adreßbus 226 und
ein Datenbus 228 führen
Adreß-
und Datensignale zu und koppeln den eingebetteten Mikroprozessor 204,
die DAL 206, den REMA-Anschluß 216, die Funktionssteuerung 220 und
die RAM-Steuerung 218 elektrisch.
-
4 zeigt
eine Tabelle, die die Internes-Register-Positionen der DAL 206 auflistet.
Bei dem bevorzugten Ausführungsbeispiel
ist die DAL 206 aus acht Registersätzen 230, einem Unterbrechungssteuerungsregister 232 und
einem ID-Register 234 gebildet. Die DAL 206 ist
nicht verschiebbar und residiert in zweckgebundenen Internes-Register-Positionen. Eine
Spalte 402 listet die Interner-Speicher-Positionen der Adresse der in der Spalte 404 benannten Adressen
auf. Eine Spalte 406 listet die Beschreibung des benannten
Registers auf. Jeder Registersatz weist eine demselben zugewiesene
Stelle ADDRESS HI_x, ADDRESS LO_x und DATA_x auf. Das Symbol „_x" ist repräsentativ
für die „x" verschiedenen Registersätze und
ist bei dem vorliegenden Beispiel eine Zahl zwischen eins und acht.
-
Die acht Registersätze 230 sind
programmierbar und können
durch den Entwickler programmiert werden, um die normale Ausführung des
eingebetteten Prozessors zu unterbrechen. Unterbrechungsbedingungen
werden durch den Entwickler unter Verwendung der Überwachungseinrichtung programmiert.
Ansprechend auf Benutzerbefehle interpretiert der Fehlersuchkern
die Befehle, was zu Modifikationen der in der DAL eingestellten
Steuerung führen
kann. Der Satz von in dem Steuersatz gespeicherten Übereinstimmungsbedingungen
ist in den internen Registern der DAL 206 gespeichert.
-
5 ist
eine Tabelle, die die Bitdefinitionen (1) der acht Registersätze, (2)
des Unterbrechungs-ID-Registers (DBID) und (3) des Unterbrechungssteuerungsregisters
(DBINTSTS) auflistet. Im einzelnen, unter Bezugnahme auf Bits 15
bis 12 der Position ADDRESS HI_x des Registersatzes, definiert die
Steuersatzbits, die die Unterbrechungsbedingungen bestimmen. Für den in 5 gezeigten Steuersatz tritt
eine Unterbrechung unter den folgenden Bedingungen auf: eine Adreßübereinstimmung beim
Lesen, eine Adreßübereinstimmung
beim Schreiben, eine Nur-Adreß-und-Daten-Übereinstimmung, eine Adreß- und Lesedatenübereinstimmung und
eine Adreß-
und Schreibdatenübereinstimmung. Eine Übereinstimmung
ist eine Funktion des Zugriffstyps, den die CPU durchführt. Falls
das Steuerfeld des Registers ADDRESS HI_x gleich 1 h ist, so tritt
eine Übereinstimmung
auf, wenn die Adresse des CPU-Zyklus mit diesem Wert in den CPU-Adreßbits von
ADDRESS HI_x und ADDRESS LO_x übereinstimmt.
Falls das Steuerfeld eines Registersatzes 6 h ist, so liegt eine Übereinstimmung
vor, wenn die Adressen und Daten des CPU-Schreibzyklus gleich den
in ADDRESS HI_x und ADDRESS LO_x und DATA_x programmierten Werten
sind.
-
Die DAL 206 stellt dem Entwickler
einen Mechanismus zum Steuern des Codeausführungsflusses bereit. Ein Programmieren
der DAL-Register (230, 232 oder 234)
und Einstellen der entsprechenden Bits des Steuersatzes ermöglicht,
daß bei
dem Prozessor eine Unterbrechung erzeugt wird (extern oder intern),
wenn eine Übereinstimmung
irgendeines freigegebenen Registersatzes auftritt. Das DBINTSTS-Register 232 ist
das Unterbrechungssteuerungsregister der DAL. Bit 15 des DBINTSTS-Registers 232 ist
das Unterbrechungsfreigabebit. Wenn Bit 15 des DBINTSTS-Registers eingestellt
ist, wird eine Unterbrechung von der DAL 206 auf dem Steuerbus 224 zu
dem eingebetteten Prozessor 204 aktiviert. Die Unterbrechungsleitung des
Steuerbusses 224 bleibt aktiviert, bis sie durch die CPU über ein
Schreiben von „0" zu Bits 4:0 des DBINTSTS
gelöscht
wird. Bits 4:1 von DBINTSTS zeigen, welcher Registersatz bzw. welche
Registersätze
(Registersätze
I-8) eine Übereinstimmung
aufwiesen. Wenn Bit 0 des DBINTSTS eingestellt ist, gibt es an,
daß ein
Treffer oder eine Übereinstimmung
aufgetreten ist. Falls mehrere Register eine Übereinstimmung aufweisen, wird
das Trefferbit (Bit 0) eingestellt, das Unterbrechungs-ID-Feld 4:1
des DBINTSTS-Registers ist jedoch 0 × 0.
-
Der in dem IPL-Feld programmierte
Wert (Bits 14:12 des DBINTSTS-Registers) stellt den Pegel der Unterbrechung
dar. Der Zwischenraum in Adressen zwischen jedem Registersatz berücksichtigt
zukünftige
Merkmale, d. h. Maskierungsregister. Alle DAL-Register (230, 232, 234)
sind lesbar, und alle mit Ausnahme des DBID-234-Registers sind beschreibbar.
Reservierte Bits sind nicht-beschreibbar und geben bei Lesevorgängen Nullen
zurück.
-
Bei dem bevorzugten Ausführungsbeispiel umfaßt das Testsystem 200 sowohl
einen FLASH-Speicher 208 (eine erste Speichereinheit) als auch
eine Überlagerungsanweisungsverkabelung 210,
die einen Überlagerungsverkabelungsspeicher 214 umfaßt. Die
Anweisungsüberlagerungsverkabelung
ist ein alternativer Speicher, der zusätzlich zu dem FLASH-Speicher 208 verwendet
werden kann. Somit kann ein Code über den REMA-Anschluß entweder
in den FLASH-Speicher 208 oder in den Anweisungsüberlagerungsspeicher 214 heruntergeladen
werden.
-
Bei dem bevorzugten Ausführungsbeispiel ist
der Überlagerungsverkabelungsspeicher 214 ein SRAM,
der viel höhere
Schreibgeschwindigkeiten aufweist als die FLASH-Speichereinheit 208. In der Regel
ist die Schreibgeschwindigkeit des Überlagerungsverkabelungsspeichers
in der Größenordnung von
Sekunden schneller als die der FLASH-Speichereinheit 208. Die höhere Geschwindigkeit
des Überlagerungsverkabelungsspeichers
(SRAM) ermöglicht,
daß Ände rungen
des Codes während
des Betriebs schnell durchgeführt
werden können,
ein wichtiger Faktor beim Durchführen
einer Fehlersuche. Das REMAP-Bit (Bit 11) in dem DBINTSTS-Register 232 kann
verwendet werden, um die Basisadresse des FLASH-Speichers 208 UMZUBILDEN
bzw. NEUABZUBILDEN (REMAP) oder zu verschieben, derart, daß sie bei
0×4000000
statt bei 0×00000
(der ursprünglichen
Adresse vor einem Abbilden des FLASH-Speichers) beginnt.
-
Die ASIC, die die Fehlersuchunterstützungslogik
(DAL) und den Mikroprozessor enthält, weist ein REMAP-Merkmal
auf, das ermöglicht,
daß die Flash-(ROM)Speicherdecodierungsadresse
zu einer neuen Adresse bewegt (oder auf dieselbe umabgebildet) wird.
Bei dem bevorzugten Ausführungsbeispiel
ist diese Adresse so gewählt,
daß Firmware
auf eine Weise geschrieben werden kann, die einen Schreibzugriff
auf einen Flash-Speicher ermöglicht, ob
das Umabbildungsmerkmal freigegeben ist oder nicht.
-
6 zeigt
eine Speicherabbildung für
den eingebetteten Prozessor. Der Speicherraum des Mikroprozessors
ist in Regionen bzw. Blöcke
unterteilt. Die Speicherabbildung zeigt einen adressierbaren Bereich
von einer Adresse Null bis zu dem „oberen Bereich" des Speichers bei
einer Adresse „T". In dieser Region
befinden sich Blöcke,
die unterschiedlichen Zwecken zugewiesen werden können. Diese Blockgrenzen
sind als „A", „2A", „B", „C" und „D" identifiziert.
-
Bei dem bevorzugten Ausführungsbeispiel ist
die Speicherregion von 0 bis 2A einem FLASH-Speicher zugewiesen,
die tatsächlich
verwendeten Komponenten besetzen jedoch nur die Region von 0 bis
A. Wenn die Umabbildungsfunktion durch ein Einschalten des REMRP-Bits
freigegeben wird, wird bzw. werden die Komponente(n), die normalerweise
in der Region von 0 bis A adressiert würde(n), dann in der Region,
die sich von A bis 2A erstreckt, adressiert. Die durch A und 2A
dargestellte eigentliche physische Adresse ist so gewählt, daß sie sich
in so wenigen Bits wie möglich
unterscheiden.
-
Die Umabbildungsfunktion wählt anschließend aus,
welche Interpretation dieser Bits für das mit den Flash-Speicher-Komponenten verbundene Adreßdecodierungssignal
gewünscht
wird.
-
Man kann sehen, daß, wenn
das REMAP-Bit eingestellt ist, in der Speicherabbildung, die der
Region von der Adresse 0 bis zur Adresse A entspricht, ein „Loch" vorliegt. Wenn das
REMAP-Bit eingestellt ist, spricht die ASIC nicht an, wenn der Mikroprozessor
auf diese Speicherregion zugreift.
-
7 zeigt
ein Blockdiagramm der Anweisungsüberlagerungsverkabelung 210.
Die Anweisungsüberlagerungsverkabelung 210 ist
aus einer Steuerschaltung 242 und einem Überlagerungsverkabelungsspeicher 214 gebildet.
Die Steuerschaltung 242 ist in der Regel aus einem Adreßdecodierer 243,
einem Adreßpuffer 244,
einem Datenpuffer 245 und einem Freigaberegister 246 gebildet.
Die Überlagerungssteuerschaltung 242 ist über einen
Adreßbus 264,
einen Datenbus 265 und einen Steuerbus 266 elektrisch
mit dem Überlagerungsspeicher
gekoppelt. Desgleichen ist die Überlagerungssteuerschaltung 242 über einen
Adreßbus 274,
einen Datenbus 275 und einen Steuerbus 276 elektrisch
mit Verbindern 270 gekoppelt. Die Verbinder 270 liefern
eine Verbindung von der Anweisungsüberlagerungsverkabelung zu
dem Produkt, wie es in 2 veranschaulicht
ist.
-
Wenn der Mikroprozessor 204 die Überlagerungsverkabelung
freigibt, tut er dies, indem er in das Freigaberegister 246 schreibt.
Dieses Schreiben wird durch den Überlagerungsverkabelungsadreßdecodierer 243 decodiert.
Nach der Freigabe bestimmt der Adreßdecodierer 243, welche
Adressen in den Überlagerungsverkabelungsspeicher 214 abgebildet werden.
Bei dem bevorzugten Ausführungsbeispiel wird
der Überlagerungsverkabelungsspeicher 214 in das
durch das ASIC-Umabbildungsmerkmal
erzeugte Speicher-„Loch" abgebildet. Das
Ergebnis besteht darin, daß sich
die Speicherregion von 0 bis A nun auf den Überlagerungsverkabelungsspeicher bezieht und
sich die Region von A bis 2A auf den FLASH-Speicher auf dem im Test befindlichen
Produkt bezieht.
-
Das Anweisungsüberlagerungsverkabelungsmerkmal
ist für
eine Verwendung durch das Hochfahr-Team beabsichtigt. Durch ein
Umabbilden des FLASH-Speichers 208 kann das Hochfahr-Team die
Anweisungsüberlagerungsverkabelung 210 verwenden,
die als der FLASH agiert (bildet auf 0×00000 mit 0×2fffff
ab). Wiederum unter Verwendung des Testanschlusses können Firmwareschreiber
einen Code steuern und in den Überlagerungsverkabelungsspeicher 214 herunterladen.
Die Auswählleitungen
des FLASH-Speichers aktivieren diesen Adreßbereich nicht, wenn das REMAP-Bit
eingestellt ist.
-
Die Testsystem-ASIC umfaßt einen
Anschluß 216,
vorzugsweise einen REMA-Anschluß (REMA
= remote access, Fernzugriff). Der Fernzugriffsanschluß der ASIC
ermöglicht
es dem Entwickler, Informationen in den Anweisungsüberlagerungsspeicher
herunterzuladen. Bei der vorliegenden Erfindung wird der REMA-Anschluß 216 verwendet,
um einen Code auf der Überlagerungsverkabelung 210 zu
Fehlersuchzwecken umzuprogrammieren. Änderungen des Programmcodes
werden während
des Betriebs durchgeführt,
wobei kleine Änderungen
typisch sind. Der REMA-Anschluß 216 der
ASIC ermöglicht
es dem Entwickler, Informationen in den Anweisungsüberlagerungsverkabelungsspeicher 214 des
in Entwicklung befindlichen Produkts herunterzuladen. Die heruntergeladenen
Informationen werden durch den Fehlersuchkern interpretiert, der
aktiv wird, indem er die ASIC oder die Anweisungsüberlagerungsverkabelung
steuert.
-
Eine Überwachungseinrichtung 212 ist
mit dem REMA-Anschluß der
ASIC elektrisch gekoppelt, was es dem Benutzer ermöglicht,
in der Lage zu sein, die Adreß-/Datenabrufe
des eingebetteten Mikroprozessors extern zu überwachen und Befehle in den Fehlersuchkern
einzugeben. Beispielsweise kann der Benutzer einen Befehl eingeben,
den Code so zu modifizieren, daß er
auf dem eingebetteten Mikroprozessor läuft, oder alternativ dazu kann
er einen Befehl eingeben, der einen Anhaltepunkt in dem Code an
einem Punkt einstellt, der für
die Person, die die Fehlersuche durchführt, von besonderem Interesse ist.
-
Unter Bezugnahme auf 2 ist die Anweisungsüberlagerungsverkabelung 210 nicht
in die ASIC integriert, sondern ist statt dessen ein separates Modul,
das an dem zu testenden Produkt 240 befestigt ist. Die
Anweisungsüberlagerungsverkabelung 210 wird
lediglich in dem Test- und Diagnosemodus verwendet und ist in der
Regel kein Bestandteil des normalerweise gelieferten Produkts. Wenn
das REMAP-Bit des DBINTSTS-Registers 232 eingestellt ist
und das Freigaberegister 246 der Anweisungsüberlagerungsverkabelung
eingestellt ist, wird die normalerweise durch den Mikroprozessor 204 erzeugte Adresse
durch die Anweisungsüberlagerungsverkabelungssteuerschaltung 243 decodiert,
was bewirkt, daß der
Anweisungsüberlagerungsverkabelungsspeicher
statt des Flash-Speichers anspricht. Dies ermöglicht, daß ein Code und Daten statt
in den Flash-Speicher in den Anweisungsüberlagerungsverkabelungsspeicher 214 geladen
werden. Der Fehlersuchkern 250 kann durch Verwendung der
umabgebildeten Flash-Adresse immer noch Lese- und Schreibvorgänge an den
Flash-Speicher ausgeben.
-
Die vorliegende Erfindung verwendet
zwei in der ASIC implementierte Funktionen (die Fehlersuchunterstützungslogik
und den Fernzugriffsanschluß)
und zwei Nicht-ASIC-Funktionen (die Anweisungsüberlagerungsverkabelung und
den Fehlersuchkern). Diese Funktionen zusammengenommen ermöglichen
es dem Entwickler, Zyklen eines eingebetteten Prozessors nachzuverfolgen/einzufangen und
einen Prozessorcode/Prozessordaten zu modifizieren/herunterzuladen.
Der Fehlersuchkern 250 ermöglicht es dem Entwickler, die
DAL-Register zu programmieren, die die normale Ausführung des
eingebetteten Mikroprozessors unterbrechen. Der Fehlersuchkern kann
ferner aus dem und in den Anweisungsüberlagerungsspeicher 214 lesen
bzw. schreiben.
-
Der Fehlersuchkern 250 ist
Teil der Firmware auf dem in der Entwicklung befindlichen Produkt
und ist die auf den ASIC-Speicher 208 geladene
Software, die verwendet wird, um eine Steuerung zwischen dem Fehlersuchmodus
und der normalen Anweisungsausführung
hin- und herzutransferieren. Der Fehlersuchkern 250 wird über eine
Benachrichtigung durch den Fernzugriffsanschluß 216 zur Nutzung
aufgerufen. Nach der Aufrufung veranlaßt er den eingebetteten Mikroprozessor 204,
die benötigte DAL-206-Konfiguration
einzurichten und Mikroprozessortransaktionen nachzuverfolgen/einzufangen, wenn
eine normale Ausführung
wiederaufgenommen wird. Der Fehlersuchkern 250 kann ferner
Speicherherunterladungen steuern und ist somit in der Lage, einen
Code während
des Betriebs zu ändern.
Nachdem er in dem Fehlersuchkern 250 ist, kann der Codeschreiber
durch den REMA-Anschluß 216 spezielle
Befehle ausgeben, die die DAL 206 einrichten oder zu dem
Anweisungsüberlagerungsspeicher 214 einen
neuen Code herunterladen, der durch den Mikroprozessor 204 ausgeführt wird,
wenn der Steuerungstransfer zum normalen Betrieb zurückkehrt.
-
Da der Test auf dem eingebetteten
Mikroprozessor statt eines Emulators durchgeführt wird, wird der Test mit
hoher Geschwindigkeit durchgeführt.
Unter Verwendung der Überwachungseinrichtung 212 kann
der Entwickler die Codeausführung
des eingebetteten Mikroprozessors 204 extern überwachen.
-
Der Fehlersuchkern 250 ermöglicht,
daß die Steuerung
zwischen dem Fehlersuchmodus und einer normalen Anweisungsausführung hin-
und hertransferiert wird. Ansprechend auf eine Übereinstimmung der in den durch
die Steuerung eingestellten Bedingungen gespeicherten Bedingungen
erzeugt die DAL 206 eine Unterbrechung des eingebetteten Mikroprozessors 204 und
transferiert die Steuerung an den Fehlersuchkern 250. Nachdem
er in dem Fehlersuchkern ist, kann der Codeschreiber durch den Fernzugriffsanschluß spezielle
Befehle ausgeben, die die DAL einrichten oder zu der Verkabelung
einen neuen Code herunterladen, der durch den Mikroprozessor ausgeführt wird,
wenn der Steuerungstransfer zum normalen Betrieb zurückkehrt.
Wenn von dem Benutzer ein Befehl erteilt wird, den Code zu modifizieren,
wird der Befehl in der Regel in den Speicher abgelegt, vorzugsweise
in den Anweisungsüberlagerungsspeicher 214.
Der REMA-Anschluß unterbricht den
Mikroprozessor 204, um einen Übergang in den Fehlersuchkern
zu bewirken, der dann den Befehl des Benutzers verarbeitet, wobei
er möglicherweise die
DAL-Register, den
Code oder die Daten in dem ASIC-Speicher 208 oder den Code
oder die Daten, die in dem Anweisungsüberlagerungsspeicher 214 gespeichert
ist bzw. sind, ändert.