-
Die vorliegende Erfindung betrifft einen Mikrocontroller, der eine Central Processing Unit und einen mit einem Bus gekoppelten Speicher enthält.
-
Für die Entwicklung von Mikrocontroller-basierten Applikationen, wobei der Mikrocontroller einen internen Speicher (z. B. RAM) und Schnittstellen zu Peripheriegeräten aufweist, ist es normalerweise erforderlich, den Datenverkehr zwischen einem Bus-Master wie z. B. der Central Processing Unit (CPU) und internen Speichern oder Schnittstellen zu Peripheriegeräten zu überwachen. Aktuelle Mikrocontroller-Plattformen verwenden Softwarelösungen oder Direktspeicherzugriff (DMA), um interne Daten an eine externe Vorrichtung zur Datenprotokollierung, Datenprüfung und Entstörung zu übertragen. Der herkömmliche Ansatz erfordert jedoch ein Aussetzen der laufenden Datenverarbeitung, um die Daten an die externe Vorrichtung zu übertragen, und ein Wiederaufnehmen des normalen Betriebs, wenn die zusätzliche Datenübertragung abgeschlossen ist. Wenn DMA zur Übertragung von Daten an eine externe Vorrichtung verwendet wird, kann die CPU zwar den normalen Betrieb fortführen, aber der Zugriff auf dieselbe Speicherressource durch die CPU ist während DMA nicht möglich.
-
Aus der
WO 2005/112040 A1 ist ein Kompressionsverfahren für die Aufzeichnung von Datenbewegungen in einem integrierten Schaltkreis mit mehreren Speichern bekannt. Hier wird vorgeschlagen, die Adressinformationen der gespeicherten Daten einer Kompression zu unterziehen, um die Bandbreite zu erhöhen. Die auf diese Art und Weise erzielbare Reduktion der Bandbreite ist in bestimmten Situationen jedoch nicht ausreichend.
-
Aus dem Datenblatt Atmel „8-Bit AVR Mikrocontroller with 8 Kbytes In-System Programmable Flash” eines Mikrocontrollers ist eine serielle Schnittstelle (SPI) bekannt, die ein dediziertes Register zur Übertragung von Daten aufweist. Diese Schnittstelle ist jedoch nicht zum Aufzeichnen von Datenbewegungen in dem integrierten Schaltkreis ausgestaltet.
-
Es ist eine Aufgabe der vorliegenden Erfindung, einen Mikrocontroller derart auszugestalten, dass es möglich ist, interne Datenbewegungen aufzuzeichnen, wobei unter bestimmten Bedingungen die Bandbreite der Datenübertragung von aufgezeichneten Daten nach außen minimiert werden kann.
-
Die Aufgabe der Erfindung wird mittels eines Mikrocontrollers gemäß Anspruch 1 gelöst.
-
Dementsprechend wird ein Mikrocontroller bereitgestellt, der eine Central Processing Unit, einen Speicher, einen den Speicher mit einem Bus-Master wie z. B. der CPU koppelnden Bus und ein Speicher-Trace-Modul zur Aufzeichnung von Daten eines Schreibzugriffs auf und/oder eines Lesezugriffs von dem Speicher enthält. Das Speicher-Trace-Modul enthält ferner eine erste Schnittstelle, die mit dem Bus gekoppelt ist, um die Daten und entsprechende Adressinformationen auf dem Bus zu erfassen, und eine zweite Schnittstelle, die so eingerichtet ist, dass sie an eine externe Vorrichtung gekoppelt werden kann, wobei das Speicher-Trace-Modul eingerichtet ist, um in einem Aufzeichnungsmodus die erfassten Daten und Adressinformationen von der ersten zu der zweiten Schnittstelle und von der zweiten Schnittstelle an eine externe Vorrichtung zu übertragen. Ein Mikrocontroller mit einem Speicher-Trace-Modul gemäß der vorliegenden Erfindung ist in der Lage, Daten direkt von dem Bus zu erfassen, der den Speicher bzw. eine Mehrzahl von Speichern mit einer beliebigen Bus-Master-Vorrichtung wie zum Beispiel der CPU oder dem DMA verbindet. Das Speicher-Trace-Modul ist ferner so eingerichtet, dass es die Daten und die entsprechenden Adressinformationen im Wesentlichen in der Form erfasst, in der die Daten auf dem Bus auftreten, d. h. an den Eingangs- und Ausgangsanschlüssen des Speichers, und die Daten zur Prüfung an eine externe Vorrichtung überträgt. Da der Bus-Master und die CPU in diesem Erfassungsprozess nicht involviert sind, bleiben die Master- bzw. CPU-Ressourcen für den normalen Betrieb des Mikrocontrollers erhalten. Folglich zeigt der Mikrocontroller gemäß der vorliegenden Erfindung dasselbe Verhalten während der Applikationsentwicklung, der Produktion und der finalen Zielapplikation. Vorzugsweise könnte der interne Speicher ein flüchtiger Speicher wie ein Direktzugriffsspeicher (RAM) sein, wobei auch andere Speichereinheiten alternativ verwendet werden können. Da die Daten- und Adressinformationen im Wesentlichen in einer Form erfasst werden, in der die Daten an den E/A-Anschlüssen des Speichers auftreten, können die Daten ohne wesentliche Dekodierung oder ähnliche Modifizierungsschritte übertragen werden. Dementsprechend kann das Speicher-Trace-Modul mit geringer Komplexität implementiert werden.
-
Das Speicher-Trace-Modul kann einen Datenbuffer wie zum Beispiel einen FIFO-Buffer enthalten, der so eingerichtet ist, dass er die erfassten Daten und/oder Adressinformationen, die über die erste Schnittstelle ankommen, zwischenspeichert, bevor die Daten über die zweite Schnittstelle zu übertragen sind. Wenn die Trace-Einheit so eingerichtet ist, dass sie eine Mehrzahl von Erfassungsquellen wie zum Beispiel eine Mehrzahl von Speicherblöcken (z. B. RAM-Blöcke) aufzeichnen kann, kann eine Mehrzahl von FIFOs bereitgestellt werden, und das Speicher-Trace-Modul sollte vorzugsweise ein Mittel zur Implementierung eines Round-Robin-Schemas zur Entleerung der FIFOs für die Mehrzahl von Erfassungsquellen enthalten. Ein FIFO kann so eingerichtet sein, dass er ein Überlaufsignalisierungsmittel zur Signalisierung eines FIFO-Überlaufs an eine externe Vorrichtung bereitstellt. Zur Anzeige des Auftretens eines Überlaufs kann ein Statusbit verwendet werden. Es können auch andere Signalisierungsmittel für andere Zwecke, die zusätzliche Statusbits bereitstellen, implementiert werden. Die Verwendung von FIFOs als Zwischenbuffer zwischen der ersten und der zweiten Schnittstelle erlaubt es, den Datenverkehr zwischen den internen Erfassungsprozessen und der Übertragung an die externe Vorrichtung über die zweite Schnittstelle zu organisieren und zu verbessern.
-
Gemäß einem Aspekt der Erfindung kann der Mikrocontroller ein dediziertes Erfassungsregister enthalten, und das Speicher-Trace-Modul kann so eingerichtet sein, dass es zwischen einem Aufzeichnungsmodus (wie oben beschrieben) und einem Direktdatenschreibmodus umgeschaltet werden kann. In dem Direktdatenschreibmodus werden die Daten direkt in das dedizierte Erfassungsregister (durch die CPU oder den DMA) geschrieben und über die zweite Schnittstelle an die externe Vorrichtung durch das Speicher-Trace-Modul übertragen. Die entsprechenden Adressinformationen müssen lediglich aus der Reihenfolge von Zugriffen durch die Central Processing Unit oder den Direktspeicherzugriff bestimmt werden. Dieser Aspekt der Erfindung gestattet es, bestimmte Daten und Adressinformationen von einem Bus-Master, der CPU oder anderen Ressourcen auszulesen. Zur Bereitstellung eines schnellen Zugriffs auf die aufzuzeichnenden Informationen wird ein spezifisches, dediziertes Register implementiert, das ausschließlich für diesen Zweck verwendet wird. Folglich können die zusätzlichen Informationen äußerst effektiv und ohne Programmverwaltungsaufwand bereitgestellt werden. Des Weiteren kann der Mikrocontroller so eingerichtet sein, dass er einen Direktdatenlesemodus bereitstellt, wobei gelesene Daten direkt in den FIFO geschrieben und über die zweite Schnittstelle übertragen werden.
-
Gemäß einem anderen Aspekt der Erfindung sind die über die zweite Schnittstelle an die externe Vorrichtung zu übertragenden Daten gemäß einem dedizierten Aufzeichnungsmodusprotokoll, einschließlich eines spezifischen Paketformats, organisiert. Das Aufzeichnungsmoduspaketformat stellt Pakete bereit, die Informationen bezüglich der Erfassungsquelle enthalten, die sich zum Beispiel auf den bestimmten RAM-Block, zu dem die Daten gehören, beziehen. Andere individuelle Pakete können Informationen über den Status der FIFOs, die Startadresse und die Größe der erfassten Daten enthalten. Es wird ebenfalls ein spezifisches Paket für die erfassten Daten bereitgestellt.
-
Das Paketformat kann für den Direktdatenmodus (Lesen und Schreiben) unterschiedlich sein, so dass lediglich Daten in einem einzelnen Paket ohne zusätzliche Adress- oder Statusinformationen übertragen werden. Hierdurch wird es ermöglicht, Daten effizienter zu übertragen. Weitere Aspekte des Protokolls ergeben sich aus der nachfolgenden Beschreibung.
-
Die zweite Schnittstelle kann einen oder mehrere Anschlüsse für den Empfang von Signalen von der externen Vorrichtung bereitstellen. Das empfangene Signal kann angeben, ob die externe Vorrichtung bereit zur Datenübertragung ist. Dieser Aspekt der Erfindung gestattet die Einrichtung eines einfachen Kommunikationsprotokolls zwischen der externen Vorrichtung und dem Anschluss-Trace-Modul. Dementsprechend kann die Datenübertragung so lange ausgesetzt oder unterbrochen werden wie die externe Vorrichtung über die dedizierten Anschlüsse der zweiten Schnittstelle einen vorbestimmten Zustand (wie z. B. externe Vorrichtung ist nicht bereit für den Datenempfang) signalisiert.
-
Des Weiteren kann die zweite Schnittstelle des Speicher-Trace-Moduls vorzugsweise als serielle Schnittstelle implementiert sein, um über einen oder mehrere Anschlüsse eine serielle Datenübertragung auszuführen. Die Bereitstellung einer seriellen Schnittstelle ist hilfreich, um die Anzahl von externen Anschlüssen des Mikrocontrollers gering zu halten. Die serielle Schnittstelle kann jedoch entweder zwei, vier, acht oder sechzehn Anschlüsse aufweisen, um Flexibilität für verschiedene Applikationen und unterschiedlich große zu übertragende Datenmengen zu bieten. Die Mehrzahl von Anschlüssen stellt eine Mehrzahl von parallelen Übertragungsleitungen bereit, die jeweils Daten seriell übertragen.
-
Das Speicher-Trace-Modul des Mikrocontrollers kann so eingerichtet sein, dass es allgemein über die CPU oder eine dedizierte JTAG-Scankette konfigurierbar ist, um eine berührungsfreie Steuerung durch externe Entstörungshardware zu gestatten.
-
Gemäß einem Aspekt der Erfindung ist das Speicher-Trace-Modul mit einem Bus gekoppelt, der mit einer Schnittstelle zu einem Peripheriegerät gekoppelt ist, um Daten bezüglich des Peripheriegeräts zu erfassen. Auf gleiche Weise wie in dem Falle des Speicherblocks erfasst das Speicher-Trace-Modul die Daten auf dem Bus, überträgt die Daten von der ersten Schnittstelle zu der zweiten Schnittstelle und von der zweiten Schnittstelle an die externe Vorrichtung. Dementsprechend ist das Speicher-Trace-Modul in der Lage, Daten von einem Speicher sowie von Busstrukturen, die die CPU mit Schnittstellen für Peripheriegeräte verbinden, zu erfassen. Die erfassten Daten können über die zweite Schnittstelle gemäß einem spezifischen, dedizierten Datenprotokoll übertragen werden.
-
Für Aufzeichnungsmodusvorgänge von Peripheriegeräten wird das Protokoll, insbesondere das oben beschriebene Paketformat, angepasst. Für viele Applikationen ist es nützlich, ein bestimmtes Paket (oder Flags) bereitzustellen, das Bereiche der Erfassungsquellen anzeigt, insbesondere für die Aufzeichnung von Peripheriegeräten. Häufig überschreitet der Adressbereich für Peripheriegeräte den Adressbereich für die Speicherblöcke. Dementsprechend wird das die eigentliche Adresse enthaltende Paket reduziert, so dass die gespeicherten Bit zur Anzeige eines bestimmten Bereichs verwendet werden können. Das zur Identifizierung der Speicherblöcke verwendete Paket kann auch dazu verwendet werden, allgemein anzuzeigen, dass eine Peripherieaufzeichnung ausgeführt wird. Das Bereichspaket (bzw. Flag) zeigt einen von zumindest zwei Peripherieadressbereichen an. Dementsprechend kann das Bereichspaket zur Reduzierung der Datenmenge verwendet werden, so dass lediglich bestimmte Abschnitte des Peripherieadressbereichs aufgezeichnet werden. Ein Bereichs-Flag gestattet es, Adressbereiche, die von geringem Interesse sind, auszuschließen. Die tatsächliche Startadresse oder der Adressbereich innerhalb des gesamten Peripherieadressbereichs kann in einem zusätzlichen Register gespeichert werden, auf das sich das Bereichs-Flag bezieht.
-
Das Anschluss-Trace-Modul kann ebenfalls mit einer zusätzlichen Busstruktur für den Empfang von Einstellinformationen für das Anschluss-Trace-Modul gekoppelt sein. Dementsprechend kann die Einstellung des Anschluss-Trace-Moduls mit Peripheriegeräten über die Peripherieschnittstellen durchgeführt werden.
-
Die vorliegende Erfindung betrifft auch ein Verfahren zur Aufzeichnung von Daten und entsprechenden Adressinformationen, die von einem internen Speicher eines Mikrocontrollers gelesen oder in diesen geschrieben werden, wobei das Verfahren die Schritte der Erfassung der Daten und der entsprechenden Adressinformationen von einem Bus, der mit den Eingangs- oder Ausgangsanschlüssen des Speichers gekoppelt ist, der Speicherung der erfassten Daten und Adressinformationen in einem FIFO und der Übertragung der Daten an eine externe Vorrichtung über eine externe Schnittstelle umfasst.
-
Die bevorzugten Ausführungsformen der Erfindung und weitere wichtige Aspekte der vorliegenden Erfindung werden untenstehend unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
-
1 ein vereinfachtes Blockdiagramm eines Mikrocontrollers gemäß einer ersten Ausführungsform der vorliegenden Erfindung,
-
2 ein vereinfachtes Blockdiagramm eines Speicher-Trace-Moduls gemäß einer Ausführungsform der vorliegenden Erfindung,
-
3 verschiedene Paketstrukturen gemäß einem Aspekt der vorliegenden Erfindung,
-
4 Signalwellenformen und die zeitliche Steuerung gemäß einem Aspekt der vorliegenden Erfindung, und
-
5 weitere Signalwellenformen gemäß Aspekten der vorliegenden Erfindung.
-
1 zeigt die vereinfachte Grundstruktur eines Mikrocontrollers gemäß einer ersten Ausführungsform der Erfindung. Eine CPU 1 und ein erster Speicherblock 2 sowie ein zweiter Speicherblock 3 sind in die integrierte elektronische Vorrichtung integriert. Obwohl lediglich zwei Speicherblöcke gezeigt werden, ist die Anzahl von Speicherblöcken im Grunde nicht begrenzt. Die CPU 1 ist über Busstrukturen und ein Busmatrixmodul 9 sowie Wrapper-Units 10, 11 mit den Speicherblöcken 2 und 3 gekoppelt. Das Busmatrixmodul 9 und die Wrapper-Units 10, 11 führen jegliche notwendige Umwandlungs- oder Dekodierungsschritte aus, um Daten korrekt zwischen den Speicherblöcken 2, 3 und der CPU 1 zu übertragen, Die Busstrukturen 17 und 18 sind mit den die Speichereinheiten 2, 3 mit der CPU 1 verbindenden Busabschnitten 23 und 24 gekoppelt. Das Speicher-Trace-Modul 4 erfasst Daten und Adressinformationen über die Busstrukturen 17 und 18 im Wesentlichen in einer Form wie die Daten und die Adressinformationen an den Eingangs- und Ausgangsanschlüssen der Speicherblöcke 2, 3 auftreten. Die Speicherblöcke 2, 3 sind vorzugsweise Direktzugriffsspeicher (RAM), wobei aber auch andere Speicherarten verwendet werden können. Das Speicher-Trace-Modul 4 enthält einen FIFO-Bufferabschnitt 5 zur Pufferung der eingehenden Daten und der entsprechenden Adressinformationen.
-
Das Speicher-Trace-Modul 4 enthält eine erste interne Schnittstelle zur Kopplung des Moduls 4 mit den Busabschnitten 17, 18 und 19. Die erste interne Schnittstelle ist ferner mit dem FIFO 5 gekoppelt, in dem eingehende Daten gespeichert werden. Die zweite externe Schnittstelle 6 enthält eine Gruppe von Anschlüssen 8, die an eine externe Vorrichtung (nicht gezeigt) zu koppeln sind. Die externe Schnittstelle 6 ist im Wesentlichen so eingerichtet, dass sie die über die Busabschnitte 17 und 18, über die interne Schnittstelle und über den FIFO 5 empfangenen Daten und Adressinformationen unter Verwendung eines spezifischen Protokolls an eine externe Vorrichtung übertragen. Die Anzahl von Anschlüssen der Gruppe von externen Anschlüssen 8 hängt von der spezifischen Implementierung des Mikrocontrollers und der Anwendung, für die der Mikrocontroller verwendet werden soll, ab. Eine geringe Anzahl von Anschlüssen für eine im Grunde serielle Datenübertragung wie zum Beispiel 2, 4 oder 8 Anschlüsse könnte jedoch vorteilhaft sein. Weitere Busstrukturen 22, 25 und 26 werden für den Anschluss der Schnittstellen 14, 15 und 16 für Peripheriegeräte an die CPU 1 bereitgestellt. Es können zusätzliche Protokollübersetzungseinheiten 12 und 13 implementiert werden, um die Kommunikation zwischen der CPU 1 und den Peripheriegeräten 14, 15 und 16 herzustellen. Die Schnittstellen 14, 15 und 16 sind ebenfalls über die Busabschnitte 26 mit der Schnittstelle 6 des Speicher-Trace-Moduls 4 gekoppelt. Dementsprechend können die über den Busabschnitt 26 laufenden Einstellinformationen zur Konfiguration des Speicher-Trace-Moduls 4 verwendet werden. Die in 1 gezeigte Architektur ist nicht nur nützlich zur Aufzeichnung von Datenverkehr zwischen der CPU 1 und den Speicherblöcken 2, 3, sondern es können auch alle anderen Daten, die zu oder von den Speicherblöcken 2, 3 von oder zu einem Bus-Master übertragen werden, aufgezeichnet werden.
-
2 zeigt ein weiteres vereinfachtes Diagramm gemäß einer Ausführungsform der. Erfindung. In 2 sind die internen Blöcke des Speicher-Trace-Moduls 4 ausführlicher als in 1 dargestellt. 2 zeigt drei FIFOs, FIFO1, FIFO2 und FIFO4, sowie die entsprechenden Logikkomponenten und Busverbindungen für jeden der FIFOs. Das Speicher-Trace-Modul stellt zwei allgemeine Betriebsarten bereit: einen Aufzeichnungsmodus und einen Direktdatenmodus. In dem Aufzeichnungsmodus werden die Schreibdaten der aufgezeichneten Speicherblöcke über die Busabschnitte 240 empfangen. Somit betrifft der Bus 240 Schreibdaten, und der Bus 241 transportiert Lesedaten in dem Direktdatenmodus, der untenstehend erläutert wird. Der Bus kann eine Busbreite von 64 Bit aufweisen.
-
Der Direktdatenmodus ist in einen Schreib- und einen Lesemodus unterteilt. In dem Direktdatenschreibmodus werden nur die Daten übertragen, die in ein dediziertes Register, das als Direktdatenmodusregister 250 bezeichnet wird, geschrieben werden. In dem Direktdatenlesemodus werden von dem Speicher (z. B. RAM) gelesene Daten direkt in die FIFOs geschrieben. Die Multiplexer 251 und 252 und die Auswahlsignale SEL1, SEL2 werden bereitgestellt, um die entsprechende Quelle für die Daten, die an den FIFO1 weiterzuleiten sind, auszuwählen. Der FIFO1 empfängt ebenfalls Steuersignale, die nicht gezeigt sind. Im Grunde sind die gleichen Strukturen für FIFO2 und FIFO4 gezeigt, wobei der Einfachheit halber weitere Auswahlsignale weggelassen sind. Die entsprechenden zu erfassenden Daten kommen über die Busabschnitte 242, 243 und den Multiplexer 253 bei FIFO2 bzw. über den Busabschnitt 244 und den Multiplexer 254 bei FIFO4 an. Der Bus 244 ist so eingerichtet, dass er entweder Schreib- oder Lesedaten überträgt.
-
In dem Direktdatenmodus (Lesen und Schreiben) werden keine anderen Informationen als die eigentlichen Daten übertragen. Die Adresse der geschriebenen Daten kann nur durch die Reihenfolge von Schreib- oder Lesezugriffen der CPU 1 oder des DMA bestimmt werden. Die Übertragungsgröße (wie zum Beispiel 8, 16 oder 32 Bit) ist programmierbar. Daten, die nicht in der korrekten Übertragungsgröße geschrieben oder gelesen werden, werden abgeschnitten oder erweitert. Wenn zum Beispiel die auf einen 16-Bit- und einen 32-Bit-Schreibvorgang programmierten Übertragungsgrößen benötigt werden, sind die in den FIFO geschriebenen Daten 32 Bit breit, wobei jedoch lediglich die unteren 16 Bit des FIFO übertragen werden. Wenn ein 8-Bit-Vorgang auszuführen ist, sind die Bit 8 bis 15 des FIFO unbestimmt, so dass die oberen 8 Bit der übertragenen Daten von dem vorhergehenden Inhalt des FIFO abhängen. Bei Direktdatenmodus-Schreibvorgängen wird die Programmierung der Bereiche aller FIFOs verworfen, und es wird keine Datenaufzeichnung durchgeführt. Ausschließlich Schreibvorgänge in das Register 250 sind gültig. In der Direktdatenmodus-Lesekonfiguration werden die gelesenen Daten direkt in den FIFOs gespeichert, aber es werden keine Kopfzeilen- und Adressinformationen übertragen. Somit muss die Lesereihenfolge die korrekte Adresse bestimmen. Die CPU 1 kann alle FIFOs, FIFO1, FIFO2 und FIFO2, zur Erfassung von Daten verwenden. Die CPU 1 muss sicherstellen, dass ein FIFO1 vollständig geleert ist, bevor der nächste FIFO (z. B. FIFO2, der sich auf eine andere Speichereinheit bezieht, d. h. auf einen anderen RAM-Block) gefüllt wird, da das an die externe Vorrichtung zu übertragende Datenpaket keine Informationen über den Speicherblock (RAM-Block) enthält. Das in 2 gezeigte Modul kann im Wesentlichen für verschiedene Vorrichtungskonfigurationen konfiguriert werden. Die gestrichelten Elemente in 2 zeigen die von der Konfiguration abhängenden optionalen Teile. Das Mapping der FIFOs auf die verschiedenen Ressourcen hängt von der Vorrichtungskonfiguration ab und wird während der Spezifizierung der Vorrichtung festgelegt. Einer der FIFOs wie zum Beispiel der FIFO4 kann so ausgewählt werden, dass er ausschließlich zu Peripheriegeräten gehört. Das Modul kann ferner über die CPU 1 oder einen spezifischen JTAG-Anschluss konfiguriert werden.
-
Des Weiteren können in dem Aufzeichnungsmodus die Daten eines Peripheriebusses der integrierten elektronischen Vorrichtung aufgezeichnet werden. Immer dann, wenn ein Schreib- oder Lesezugriff stattfindet, werden die Adressdatengröße (8, 16, 32, 64 Bit) und ein Verweis auf das Modul, das den Schreib- oder Lesevorgang ausgelöst hat, in dem FIFO des entsprechenden Speicherblocks gespeichert.
-
Der FIFO1, der FIFO2 und der FIFO4 sind in Unterabschnitte unterteilt, um sich auf erfasste Daten beziehende Informationen zu speichern. Für den FIFO1 gibt es einen Abschnitt, der sich auf den Master der Datenübertragung 210 bezieht, einen Abschnitt für die Größe (Datenmenge) der Datenübertragung 211, einen Abschnitt für die Startadresse der Daten 212 und für die erfassten Daten 213. Für den FIFO2 und den FIFO4 werden entsprechende Abschnitte 220, 221, 222 und 223 sowie 230, 231, 232 und 233 bereitgestellt. Die spezifischen Informationen und Daten, die sich auf den Master, die Blockgröße und die Adresse der aufgezeichneten Daten beziehen, werden über zusätzliche entsprechende Gruppen von Busstrukturen 260, 261 und 262 empfangen. Gemäß einer Ausführungsform der vorliegenden Erfindung sind die FIFOs 86 oder 54 Bit breit. Die 86 bzw. 54 Bit sind in die oben erwähnten Unterabschnitte unterteilt. Die Tiefe des FIFO beträgt 32 oder 64 Wörter, entsprechend entweder 86 Bit bzw. 54 Bit. In dem Aufzeichnungsmodus speichern zwei Bit den Auslöser (Block 210), zwei Bit speichern die Größe des Schreibvorgangs (Block 211), 64 Bit speichern die geschriebenen Daten (Block 213), und 18 Bit speichern die Adresse (Block 212), in die die Daten geschrieben wurden.
-
Des Weiteren ist eine Steuereinheit 203 über die Busstrukturen 270, 271 und 272 mit dem FIFO1, dem FIFO2 und dem FIFO3 gekoppelt. Die Busabschnitte 270, 271 und 272 zeigen an, ob die FIFOs leer sind oder ob es bei irgendeinem der FIFOs einen Überlauf gibt. Die aufgezeichneten Daten und Adressinformationen werden über die Busabschnitte 245, 246 bzw. 247 an einen Multiplexer 201 geleitet, der durch die Steuereinheit 203 so gesteuert wird, dass er einen der drei FIFOs, FIFO1, FIFO2 bzw. FIFO4 auswählt. Der ausgewählte FIFO wird an den Seriellumsetzer 202 durchgeschaltet, um die erfassten Daten und die entsprechenden Informationen in serielle Daten umzuwandeln. Die erfassten Daten und die entsprechenden Informationen werden von dem Seriellumsetzer 202 an die externen Schnittstellenanschlüsse 204, 205, 206, 207 und 208 geleitet. Die externe Schnittstelle ist als serielle Schnittstelle konfiguriert.
-
Die Anschlüsse 207 und 208 der externen Schnittstelle stellen vielmehr eine Gruppe von Anschlüssen als lediglich zwei einzelne Anschlüsse dar. Diese Anschlüsse können in einer beliebigen nützlichen und vorteilhaften Anzahl zur Datenübertragung vertreten sein wie zum Beispiel 2, 4, 8 oder 16 Anschlüsse. Der Anschluss 206 stellt ein Taktsignal bereit, und der Anschluss 205 wird zur Bereitstellung einer Synchronisierung für die externe Synchronisierung verwendet. Der Anschluss 204 könnte so konfiguriert sein, dass er ein Freigabesignal von einer externen Vorrichtung empfängt, um die Datenübertragung anzuhalten, wenn die externe Vorrichtung nicht für den Datenempfang bereit ist.
-
Wenn keine Daten in dem FIFO gespeichert sind, kann der FIFO diesen Zustand an den Steuerblock 203 über den Busabschnitt 270, 271, 272 unter Verwendung eines Leersignals signalisieren. Sämtliche in dem FIFO gespeicherte Daten müssen an den Seriellumsetzer 202 übertragen werden, wenn der Steuerblock den entsprechenden FIFO auswählt. Wenn der FIFO nicht schnell genug geleert wird, um einen FIFO-Überlauf zu verhindern, wird ein Überlaufsignal aktiviert, wenn die letzte Stelle in dem FIFO belegt ist. Der Anwender kann wählen, ob die Ausführung des Programms bzw. die Datenübertragung in diesem Fall ausgesetzt werden soll oder ob in den Statusbit der nächsten Nachricht dieses bestimmten FIFOs ein Überlauf signalisiert wird. Der Überlauf wird nicht in der gerade übertragenen Nachricht signalisiert.
-
Der Multiplexer 201 ist so eingerichtet, dass er gemäß einem Round-Robin-Schema zur Übertragung der Daten aus den verschiedenen FIFOs an den Seriellumsetzer 202 gesteuert wird. In dem Aufzeichnungsmodus und in einer Konfiguration mit drei Speicherblöcken (drei RAMs) könnte ein Paket von FIFO1 übertragen werden, gefolgt von einem Paket von FIFO2, gefolgt von einem Paket von FIFO3. Wenn ein FIFO leer ist, überspringt der Steuerblock diesen FIFO.
-
3 zeigt drei verschiedene Konfigurationen von Datenprotokollen, d. h. Paketformate für die Datenübertragung über die dedizierte Schnittstelle gemäß der vorliegenden Erfindung. 3(a) zeigt das Paketformat in dem Aufzeichnungsmodus für typische RAM-Adressen. 3(b) zeigt ein Paketformat für Peripherieadressen. 3(c) zeigt ein Paketformat, das sich auf den Direktdatenmodus bezieht. Unter Bezugnahme auf 3(a) kann bei Aufzeichnung von RAM-Adressen ein Paket aus zwei Bit RAM[1:0], die den RAM, in dem die Daten gespeichert sind, angeben, aus zwei Statusbit STAT[1:0], aus zwei Bit für die Größe SIZE[1:0] und den 18 Bit (256 kByte) Adresse der Daten ADDR[17:0] sowie aus 2SIZEx8 Datenbit DATA[xx:0] bestehen. Wie in 3(b) gezeigt, sind die Pakete leicht unterschiedlich, wenn eine Peripherieadresse erfasst wird. Wenn eine Peripherieadresse aufgezeichnet wird, wird die tatsächliche Adresse auf 17 Bit (128 kByte) reduziert und das zusätzliche Bit REG gibt den aufzuzeichnenden programmierbaren Bereich an. Mit einem Bereichsbezeichner REG kann die externe Vorrichtung feststellen, welches Peripheriegerät aufgezeichnet wurde. Die tatsächliche Adresse bzw. der Adressbereich für den Peripherieaufzeichnungsvorgang können in einem oder mehreren internen Registern näher definiert werden. Somit gestattet es die Bereichsnummer (in Verbindung mit einem internen Register, das als Adresszeiger o. ä, verwendet wird) die Aufzeichnung von bestimmten Teilen selbst innerhalb größerer Bereiche, obwohl der Peripherierahmen mehr als 256 kByte umfassen kann. Durch das Bereichs-Flag REG kann die externe Vorrichtung feststellen, welches Peripheriegerät aufgezeichnet wurde. Für die Speicheraufzeichnung und die Peripherieaufzeichnung bestimmt SIZE[1:0], ob es einen 8-, 16-, 32- oder 64-Bit-Schreib- oder Lesevorgang gab, was zur Rekonstruktion des 64-Bit-Worts auf der externen Vorrichtung notwendig ist. Allgemein, d. h. in 3(a) und (b), handelt es sich bei DATA[xx:0] um die geschriebenen Daten. Wenn es insgesamt 3 Speicherblöcke gibt, von denen jeder eine Größe von 256 kByte und einen Peripherierahmen (128 kByte) hat, ist es ebenfalls nötig, zu übertragen, von welchem Rahmen die Daten ankommen. Dies wird durch RAM[1:0] durchgeführt. RAM[1:0] kann einen bestimmten Zustand (z. B. ,11', wenn zwei Bit verwendet werden) zur Anzeige der Peripherieaufzeichnung enthalten. Die Adresse der geschriebenen Daten wird durch ADDR[17:0] bzw. ADDR[16:0] übertragen. STAT[1:0] definiert den Status der Nachricht oder des Moduls und speichert den Auslöser des Schreib- oder Lesevorgangs. Das Flag REG gemäß 3(b) definiert, in welchen Bereich in dem Peripherierahmen der Schreibvorgang ausgeführt wurde, und ist somit hilfreich bei der Verringerung der zu übertragenden Daten. Wie in 3(c) gezeigt, werden für den Direktdatenmodus-Schreib- oder -Lesevorgang lediglich die in das spezifische Register 250 geschriebenen Daten bzw. die von der Speichereinheit (z. B. einem RAM-Block) gelesenen Daten in dem FIFO des Speicher-Trace-Moduls 4 gespeichert und als einzelnes Paket DATA[xx:0] übertragen. Die Paketlänge kann zum Beispiel auf 8, 16 oder 32 Bit programmiert werden.
-
4 zeigt Wellenformdiagramme für Signale, die an den Anschlüssen 204, 205, 206, 207 und 208 (in 2 gezeigt) der externen Schnittstelle gemäß einer Ausführungsform der Erfindung auftreten können. Das Freigabesignal RTPENA wird durch die externe Vorrichtung aktiviert. RTPENA ist NIEDRIG, um anzuzeigen, ob die externe Vorrichtung für den Empfang von Daten von dem Speicher-Trace-Modul des Mikrocontrollers bereit ist. Wenn RTPENA HOCH ist, wird die Datenübertragung angehalten, jedoch erst nachdem die Übertragung des gesamten Pakets beendet wurde. Der externe Takt RTPCLK wird durch das Speicher-Trace-Modul während der Datenübertragung aktiviert. Der Takt könnte so konfiguriert sein, dass er ausgesetzt wird oder freilaufend ist, wenn eine Datenpaketübertragung beendet wurde. Das Speicher-Trace-Modul stellt ebenfalls ein Synchronisierungssignal RTPSYNC bereit. Dieses Signal ist einen RTPCLK-Taktzyklus lang HOCH, um externe Hardware mit dem Datenstrom zu synchronisieren (jedes Paket). Daten werden, wie durch RTPDATA angezeigt, über einen einzelnen oder über zwei, vier, acht oder mehr Anschlüsse übertragen. Die Konfiguration, bei der vier Anschlüsse verwendet werden, wird unter Bezugnahme auf 5 erläutert.
-
5 zeigt Wellenformen für eine Konfiguration, in der vier Anschlüsse RTPDATA[1], RTPDATA[2], RTPDATA[3] und RTPDATA[4] für die Datenübertragung verwendet werden. Der Synchronisierungsanschluss RTPSYNC ist nur einen Taktzyklus des Taktsignals RTPCLK lang HOCH. 5 betrifft Aufzeichnungsmodus-Datenübertragungen für einen internen RAM-Block. Dementsprechend wird das wie mit Bezug auf 3(a) erläuterte Paketformat verwendet. Die entsprechenden Bit der Pakete werden systematisch über die vier Anschlüsse verteilt. Das erste Bit des RAM[1:0] wird über RTPDATA[0] als RAM.1 übertragen. Das zweite Bit, bei dem es sich um RAM.2 handelt, wird über den nächsten Anschluss RTPDATA[1] übertragen. Die beiden Statusbit STAT[1:0] werden RTPDATA[2] und RTPDATA[3] zugeordnet. Da alle vier Anschlüsse verwendet werden, wird das nächste Bit, bei dem es sich um SIZE.1 handelt, RTPDATA[0] zugeordnet. Dieses Verfahren wird fortgesetzt, bis alle Bit übertragen wurden.
-
Im Hinblick auf die Integration auf einem Halbleitersubstrat werden die oben genannten Komponenten im Wesentlichen als auf demselben einzelnen Halbleiterchip integriert angesehen. Dies betrifft die CPU, den Speicher, der vorzugsweise ein interner RAM des Mikrocontrollers ist, und die Schnittstellen für die Peripheriegeräte. Für andere Anwendungen können andere Mikrocontroller konstruiert und aufgebaut werden, einschließlich anderer Mengen und Ausführungsformen der oben beschriebenen Komponenten.