Die Erfindung betrifft eine Einrichtung zum koordinierten Testen und zur Fehlersuche in verteilten eingebetteten Mikroprozessorsystemen mit einer Mehrzahl von über ein Kommunikationsnetz verbundenen, eingebetteten Systemknoten, wobei die Systemknoten jeweils eine Recheneinheit, ein Uhrenmodul, eine Testeinheit, eine Debug-Einheit und eine Kommunikationsschnittstelle zur Kommunikation mit den jeweils anderen Systemknoten über das Kommunikationsnetz aufweisen.
Gesamtzustände und Abläufe können in einem verteilten System oft im Nachhinein nicht nachvollzogen werden. Eine Diagnose im Fehlerfall wird hierdurch erschwert. Verteilte Systeme teilen sich keinen gemeinsamen Speicher und müssen ihre gesamte Kommunikation deshalb durch das Versenden und Empfangen von Nachrichten realisieren.
Eine solche Kommunikation ist sehr fehleranfällig, so dass es zu Problemen durch Verfälschung von Nachrichten, Duplizierung von Nachrichten und den Verlust von Nachrichten kommen kann. Ausserdem ist die Nachrichtenlaufzeit unvorhersehbar, so dass man nie mit Sicherheit vorhersehen kann, ob ein System ausgefallen ist oder ob es nur eine lange Antwortzeit hat.
In verteilten Systemen ist es sehr schwierig oder in der Praxis sogar unmöglich, eine genaue Programmabfolge zu definieren. Einige Entwicklungssysteme verzichten daher auf den Einsatz von Laufzeit-Debuggern, lassen aber in der Regel die Definition von Haltepunkten zu, an dem der Zustand aller Variablen nach dem Programmstopp analysiert werden kann.
Das Echtzeit-Debbuging bietet in der Regel die Möglichkeit, den Code Zeile für Zeile abzuarbeiten und dabei die Zustände der verschiedensten Variablen zu überwachen.
Häufig können zusätzlich Haltepunkte festgelegt und weitere Optionen genutzt werden, welche die Arbeit mit dem Code wesentlich vereinfachen. Die Schwierigkeit bei verteilten Systemen ist nun, dass der Code nicht wie gewohnt einfach nur auf einem Rechner ausgeführt wird, sondern auf verschiedensten Systemknoten. So muss ein entsprechendes Tool entferntes Debugging unterstützen und Debugging-Informationen von dem jeweils anderen Knoten anfordern.
Beim Offline-Debugging hingegen besteht die Fehlersuche in der Auswertung aufgezeichneter Informationen. Diese Informationen werden in der Regel mit Hilfe von Aufzeichnungseinheiten (trace-Einheiten) gewonnen bzw. von den Anwendungen selbst generiert.
Es sind bereits verschiedene Vorschläge bekannt geworden, um die Fehlersuche sowie das Testen, Überwachen und Wiedergeben von Programmanweisungen zu verbessern.
In diesem Zusammenhang wurde auch das Thema der Uhrensynchronisation erforscht.
Die US 5,812,830 beschreibt eine einfache Schaltung zur Fehlersuche in Mikroprozessoren. Das vorgestellte System beinhaltet auch verschiedene Auslösemechanismen zur Abspeicherung interner Prozessorzustände.
Die DE 102004052861 AI beschreibt ein Diagnosesystem zur Erkennung von Fehlzuständen, das als separates System realisiert wird. Es werden Nachrichtenwege im Diagnosesystem abgebildet. Synchronisierte Uhren, Unterstützung für eine Vielzahl von Knoten, und die Möglichkeit der Wiedergabe aufgezeichneter Daten werden nicht verwendet.
Die WO 2004/023302 A2 betrifft ein Verfahren zur Erkennung von Fehlern in einem verteilten Echtzeitcomputersystem.
Der periodische Versand eines Statusbits, z.B. über ein rundenbasiertes Kommunikationsnetz, erlaubt es den Absturz eines Knotens zu erkennen und entsprechend zu reagieren. Es werden keine Einrichtungen oder dergleichen angeführt, die die Suche nach der Ursache eines Fehlers (z.B. durch Aufzeichnung oder Wiedergabe von Daten, oder durch spezielle Funktionen zur Fehlersuche) erkennen lassen.
Die EP 943995 A2 beschreibt einen Prozessor mit einer externen "real-time instruction insertion". Der Prozessor umfasst weitere Instruktionsquellen, wie eine Abholschleife, ein Unterbrechungsregister, einen Pipeline-Schutz und er ermöglicht externen Datenzugriff. Der Chip umfasst keine Testeinheit oder Wiedergabeeinheit.
Es gibt auch eine Beeinträch tigung der Leistung wegen des Einfügens von NoOps in den Ausführungsprozess, um den Datenzugriff zu ermöglichen.
Das Dokument WO 2005/073855 AI betrifft ein Datenverarbeitungssystem mit einem Debug-Modul, welches real-time-DebugNachrichten an eine DMA-Steuervorrichtung liefert.
Das US-Patent Nr. 6,769,076 betrifft ein "real-time processor debug System", welches die Aufzeichnung von Programmen und Daten eines virtuellen Bus eines eingebetteten Systems ermöglicht. Der Vorschlag umfasst die Reduktion der Stromaufnahme und die Reduktion der Auswirkung auf die Leistung des Gesamtsystems durch die Debug-Schnittstelle. Es wird eine integrierte Logik verwendet, welche den virtuellen Bus entsprechend der Adresse und des Betriebsmodus abspeichert. Dieses Patent ist somit auf das Aufzeichnen des internen virtuellen Bus eines eingebetteten Systems gerichtet.
Dieses Patent befasst sich allerdings nicht mit verteiltem Debugging von eingebetteten Systemen.
Das US-Patent Nr. 7,080,283 ist auf ein Verfahren gerichtet, welches die Echtzeit-Aufzeichnung und Fehlerbehebung von Mehrfachprozessorkernen in einem System auf einem Chip ermöglicht. Es basiert auf einer zweckbestimmten Debug-Ausgabe jedes einzelnen Prozessorkernes. Die Debug-Information wird von einem oder mehreren Aufzeichnungsspeicherknoten für jeden Prozessorkern gespeichert. Die Aufzeichnungsspeicherkerne wiederum sind miteinander verbunden und bilden eine DaisyChain. Die Daisy-Chain endet bei einem Aufzeichnungskontrollmodul, welches die gewünschte Debug-Information speichert. Das Aufzeichnungskontrollmodul überträgt die Information auf einen externen Host-Agent über ein JTAG-Interface.
Weiters können die Debug-Daten über Kompressionsknoten komprimiert werden, welche zwischen den Prozessorkernen und dem zumindest einen Aufzeichnungsspeicherknoten, welcher zwischen den Kernen angeordnet ist, liegen. All dieses befindet sich in einer SoC.
Die US 2007/0168731 AI beschreibt ein Debug-Verfahren für Mikrokontroller, die auf geringe Auswirkung und geringe Kosten gerichtet ist. Es wird vorgeschlagen, eine HardwareUnterstützung für 2- Kabelhochgeschwindigkeitskommunikation in zukünftigen Mikrokontrolleranwendungen zu verwenden. Diese 2Kabelkommunikationsschnittstelle soll verwendet werden, um Debug-Daten zwischen dem Zielmikrokontroller und einem Linkmikrokontroller zu übertragen. Der Linkmikrokontroller ist auf demselben Chip wie der Zielmikrokontroller, ist jedoch durch eine EEPROM-Sicherung als Linkmikrokontroller konfiguriert.
Der Linkmikrokontroller führt ein Schnittstellenübersetzungsprogramm aus, um eine Kommunikation zwischen dem Zielmikrokontroller und dem Host-Computer herzustellen.
Das europäische Patent Nr. 764903 betrifft einen "on-chip debug port" für VLSI-Prozessoren. Es umfasst eine DebugSchaltung im gleichen integrierten Schaltkreis wie der anzusprechende Prozessor. Der Debug-Schaltkreis wird durch eine externe Debug-Workstation gesteuert, welche über einen externen Debug-Bus und ein externes Schnittstellenmodul mit der Schaltung verbunden ist. Die Debug-Schaltung umfasst eine Debug-Buseinheit, welche die Verbindung zum externen Debug-Bus schafft, eine Mehrzahl von Einheiten und zwei interne Busse, welche die Einheiten miteinander und mit der Debug-Buseinheit verbinden. Jede Einheit der Mehrzahl von Einheiten wiederum ist mit spezifischen Teilen des VLSI-Prozessors verbunden.
Mit dieser Konfiguration ist es möglich, entweder Debug-Befehle zu zumindest einer der Mehrzahl von Einheiten zu senden oder Debug-Information von den Einheiten zu erhalten. Es sind Optionen möglich, wie z.B. Senden/Überwachen von Anweisungen des Prozessors, "real-time-Insertion/Extraktion" von Task-Daten, welche mit der Ausführung von Tasks auf dem Prozessor und der Überwachung des Programmablaufs betreffen.
Das US-Patent Nr. 6,324,684 beschreibt einen Prozessor, welcher eine Debug-Schaltung aufweist, die mit einem DebugHost kommunizieren kann. Der Host kann "debug_halt-, debug_step-, debug_run- und debug_release"-Befehle senden.
Der Prozessor kann weiters Interrupts während des Debug-Modus so verarbeiten, dass das System in Betrieb nach Fehlern durchsucht werden kann, ohne die Verwendung eines Debug-Monitors, welcher wegen der Speicherung von Kontext und ähnlichem mehr RAM, ROM und System-Overhead benutzen würde. Das US-Patent Nr. 6,470,388 beschreibt ein System, welches sich mit Debugging und Protokollierungsdiensten für eine verteilte Computerumgebung, die aus Workstations, Servern und anderen Netzwerkeinrichtungen besteht, beschäftigt. Die Protokollierungsdienste beinhalten herkömmliches Formatieren und herkömmliche Speicherung von Information für die Zwecke des Debugging. Die Protokollierungsdienste können Trace- und Debug-Information an eine zentrale Protokollierungseinrichtung senden, wo die Daten mit einem ZeitStempel versehen und in einer Datenbank gespeichert werden.
Das beschriebene System umfasst die Protokollierung von Debug-Information in einem verteilten ComputerSystem, hat jedoch keine koordinierten Single-Step-, Zeitbestimmungs- oder Hardware-Level-Funktionen.
Die US 2006/0080575 AI offenbart eine Uhrensynchronisation mit einem Hauptcomputer, Berechnung des Drift-Wertes, Berechnung der ÜbertragungsVerzögerung, Hardware-Timestamping bei einer optionalen Sniffer-Einheit und optionale optische Verbindungen zwischen Knoten. Sie offenbart nicht die Unterstützung von Hardware-Tests mit Test-, Trace- oder Wiedergabefunktionen, BIST, JTAG oder koordinierte Wiedergabe und koordiniertes Single-Step.
Die US 2007/0061628 AI beschreibt ein Verfahren zur Untersuchung entfernter Systeme und das Sammeln in Echtzeit von Debug-Daten in einem Mehrnotensystem.
Bei diesem Verfahren werden Bausteine mit Sondenmaschinen überwacht, welche Auslösebedingungen detektieren, die ein automatisches Anhalten der Knoten und das Sammeln der verfügbaren Zustandsdaten verursachen. Diese Auslösebedingung werden jedoch statisch gesetzt und der Betreiber ist nicht in der Lage Debugging-Operatoren, wie beispielsweise koordiniertes Single-Step durchzuführen.
Das US-Patent Nr. 5,642,478 beschreibt ein Verfahren, um Trace-Daten in einem verteilten System zu akquirieren. Bei diesem Verfahren umfasst eine Knotensteuerung, welche die Aufgabe der Kommunikation mit anderen Knoten in dem System ausführt, eine Erfassungslogik, welche Trace-Daten in internen Speicherpuffern speichert. Derartige Trace-Daten werden dann regelmässig einem externen Speicher zugeführt.
Der Beginn und das Ende der Trace-Daten-Akquirierung werden durch andere Subkomponenten des Systems ausgelöst.
Die vorliegende Erfindung zielt nun darauf ab, verteiltes Debugging von eingebetteten Systemen zu ermöglichen und insbesondere einen koordinierten Zugang zu Teststrukturen sicherzustellen. Die Erfindung zielt weiters darauf ab, die Prozessorbelastung der Mikroprozessoren durch die Debugging-Aktivitäten möglichst nicht zu erhöhen.
Weiters soll das Testen und die Fehlersuche ohne eine eigene Schnittstelle an den Systemknoten möglich sein.
Zur Lösung dieser Aufgaben zeichnet sich die Einrichtung der eingangs genannten Art zum koordinierten Testen und zur Fehlersuche in verteilten eingebetteten Mikroprozessorsystemen im wesentlichen dadurch aus, dass Mittel zur Synchronisation der Uhrenmodule der Systemknoten vorgesehen sind, dass die Systemknoten jeweils eine mit der Testeinheit und der DebugEinheit verbundene Entlastungseinheit aufweisen, sodass über die Kommunikationsschnittstelle eintreffende oder abgehende, dem Testen und der Fehlersuche dienende Datenpakete über die Entlastungseinheit versendet bzw. empfangen und ggf.
verarbeitet werden können, und dass die Uhrenmodule mit der jeweiligen Testeinheit und der Debug-Einheit zum Einfügen von Zeitstempeln in Datenpakete und/oder zum Auslösen von Test- und/oder Debug-Vorgängen in Abhängigkeit von Uhrensignalen zusammenwirken. Dadurch, dass Mittel zur Synchronisation der Uhrenmodule der Systemknoten vorgesehen sind, kann systemweit über eine Vielzahl von Knoten eine koordinierte Aufzeichnung oder Wiedergabe komplexer Vorgänge oder ein koordinierter Zugang zu TestStrukturen erreicht werden. Durch das Vorsehen einer Entlastungseinheit wird die Möglichkeit geschaffen Kontrolldaten, welche die Test- und Debug-Einheit betreffen, zu extrahieren und Daten zur Analyse oder zum Versenden in den Kommunikationsstrom einzufügen, wodurch eine eigene Schnittstelle zur Test- und zur Debug-Einheit nicht erforderlich ist.
Es werden somit spezielle Pakete aus dem Kommunikationsström herausgefiltert und von der Entlastungseinheit verarbeitet, sodass die Belastung der übrigen Komponenten der einzelnen Systemknoten und insbesondere die Prozessorbelastung der Mikroprozessoren nicht erhöht wird. Das Debugging kann durch die Erfindung weiters völlig ohne Prozessoreingriff gesteuert werden.
Damit kann man beispielsweise einen Prozessor, der abgestürzt ist, entfernt wieder re-booten und in einen lauffähigen Zustand setzen.
Um zusätzliche Funktionalitäten zu realisieren, ist die Ausbildung bevorzugt derart weitergebildet, dass wenigstens ein Systemknoten eine Aufzeichnungseinheit zum Aufzeichnen von Systemvorgängen, wie z.B. von Rechenvorgängen der Recheneinheit oder von Systembusaktivitäten aufweist, die mit der Entlastungseinheit verbunden ist, sodass über die Kommunikationsschnittstelle eintreffende oder abgehende, die Aufzeichnungseinheit betreffende Datenpakete über die Entlastungseinheit versendet bzw. empfangen und ggf. verarbeitet werden können.
Dabei kann bevorzugt vorgesehen sein, dass das Uhrenmodul mit der AufZeichnungseinheit zum Auslösen und/oder Beenden einer Aufzeichnung in Abhängigkeit von Uhrensignalen zusammenwirkt, sodass Systemvorgänge in mehreren Systemkonten koordiniert aufgezeichnet und in der Folge für eine Fehlersuche herangezogen werden können.
Bei der Fehlersuche kann es oft von Vorteil sein, wenn aufgezeichnete oder vorgegebene Programmanweisungen oder Programmvorgänge gezielt einzelnen Systemkomponenten zur Verfügung gestellt bzw. "vorgespielt" werden, um das Verhalten der jeweiligen Komponenten analysieren zu können.
In diesem Zusammenhang ist die Ausbildung bevorzugt derart weitergebildet, dass wenigstens ein Systemknoten eine Wiedergabeeinheit zum Wiedergeben von aufgezeichneten Systemvorgängen oder von Programmanweisungen aufweist, die mit der Entlastungseinheit verbunden ist, sodass über die Kommunikationsschnittstelle eintreffende oder abgehende, die Wiedergabeeinheit betreffende Datenpakete über die Entlastungseinheit versendet bzw. empfangen und ggf. verarbeitet werden können.
Zur koordinierten Wiedergabe in mehreren Systemknoten kann die Ausbildung hierbei mit Vorteil derart getroffen sein, dass das Uhrenmodul mit der Wiedergabeeinheit zum Beginnen und/oder Beenden einer Wiedergabe in Abhängigkeit von Uhrensignalen zusammenwirkt.
Um die Kommunikation zwischen den einzelnen Komponenten zu vereinfachen, ist bevorzugt vorgesehen, dass die Recheneinheit, die Testeinheit, die Debug-Einheit sowie ggf. die Aufzeichnungs- und die Wiedergabeeinheit an einen gemeinsamen Systembus angeschlossen sind, wobei mit Vorteil auch das Uhrenmodul an den Systembus angeschlossen ist.
Weiters kann vorgesehen sein, dass die Testeinheit in integrierten Schaltkreisen als Selbsttesteinheit für diese ausgebildet ist.
Alternativ kann vorgesehen sein, dass die Testeinheit in integrierten Schaltkreisen als Zugang zu Teststrukturen im ganzen eingebetteten Systemknoten ausgebildet ist, wobei man die Testeinheit auch als JTAG Kontroller (also gleichsam "JTAG over Ethernet") für ausserhalb des ICs liegende Bausteine verwenden kann. Praktische Anwendung wäre z.B. die Konfiguration eines FPGAs oder das Updaten von Software über die Entlastungseinheit, aber auch Test anderer Chips.
Gemäss einer bevorzugten Weiterbildung ist vorgesehen, dass eine Kontroll- und Steuereinheit im Kommunikationsnetz vorgesehen ist, welche zum Versenden von Test-, Debug-, Aufzeichnungs-, und/oder Wiedergabebefehlen an einzelne Systemknoten ausgebildet ist.
Die Erfindung wird nun anhand von in den Zeichnungen dargestellten Ausführungsbeispielen näher erläutert.
Dabei zeigt:
Fig. 1 ein funktionelles Blockdiagramm eines digitalen eingebetteten Systems, welches die Vorrichtung und das Verfahren der vorliegenden Erfindung enthält;
Fig. 2 ein funktionelles Blockdiagramm, welches die Entlastungseinheit des eingebetteten Systems von Fig. 1 entsprechend der vorliegenden Erfindung illustriert;
Fig. 3 ein funktionelles Blockdiagramm, welches die Uhreneinheit des eingebetteten Systems der Fig. 1 entsprechend der vorliegenden Erfindung illustriert; Fig. 4 ein funktionelles Blockdiagramm, welches die Testeinheit des eingebetteten Systems der Fig. 1 entsprechend der vorliegenden Erfindung illustriert;
Fig. 5 ein funktionelles Blockdiagramm, welches die Wiedergabeeinheit des eingebetteten Systems der Fig. 1 entsprechend der vorliegenden Erfindung illustriert;
Fig. 6 ein funktionelles Blockdiagramm, welches die Aufzeichnungs- bzw.
Trace-Einheit des eingebetteten Systems der Fig. 1 entsprechend der vorliegenden Erfindung illustriert; und
Fig. 7 ein funktionelles Blockdiagramm, welches die Debug-Einheit des eingebetteten Systems der Fig. 1 entsprechend der vorliegenden Erfindung illustriert;
Fig. 1 zeigt ein digitales eingebettetes System 12, welches entsprechend der vorliegenden Erfindung verbessert ist. Das Knotensystem 12 enthält einen Systembus 28, einen Systemspeicher 18, einen oder mehrere Mikroprozessoren 14, eine Kommunikationsschnittstelle 16 und andere Schnittstellen 40, wie beispielsweise Sensoren oder Aktuatoren. Während des normalen Betriebes kommuniziert das System über die Kommunikationssteuerung 26 der Kommunikationsschnittstelle 16 mit anderen Systemknoten eines verteilten Mehrknotensystems, welche durch ein Netzwerk 20 verbunden sind.
Ein gewisser Teil des Datenverkehrs und insbesondere Netzwerkpakete mit einer bestimmten Art von Inhalt werden jedoch nicht durch die Kommunikationssteuerung 26 an den Mikroprozessor weitergeleitet, sondern werden auf eine spezielle Entlastungseinheit 24 übertragen. Diese Entlastungseinheit 24 bildet gemeinsam mit der Uhreneinheit 30, einer Testeinheit 32, einer Wiedergabeeinheit 34, einer Trace-Einheit 36 und einer Debug-Einheit 38 eine funktionale Einheit 42. Alle Komponenten der Einheit 42 sind über einen Bus 22 zum Datenaustausch zwischen den Einheiten 30, 32, 34, 36 und 38 untereinander und zwischen den Einheiten 30, 32, 34, 36 und 38 und der Entlastungseinheit 24 verbunden.
Über die Entlastungseinheit 24 ist es möglich, alle Einheiten 30, 32, 34, 36 und 38, welche über den Bus 22 verbunden sind, zu konfigurieren.
Es ist weiters Aufgabe der vorliegen den Erfindung, die Uhreneinheit 30 gemeinsam mit der Entlastungseinheit 24 zu verwenden, um die Knoten eines Mehrknotensystems präzise zu synchronisieren. Die systemweit synchronisierte Uhr kann dann verwendet werden, um Testwiedergabe, Trace- und Debug-Funktionen simultan auf einer Mehrzahl von Knoten 12 des Mehrknotensystems, welches die Vorrichtung 42 der vorliegenden Erfindung aufweist, zu starten.
Fig. 2 zeigt Details der Entlastungseinheit entsprechend der vorliegenden Erfindung. Ein Frame-Filter 72 gestattet es, den Datenverkehr 64 herauszugreifen.
Die Pakete werden in einem Empfangspuffer 70 gespeichert und ein spezieller Mikrokontroller 68 in der Entlastungseinheit extrahiert die Daten und Adressen des Pakets und gibt diese Daten über die Busschnittstelle 66 auf den Bus aus, welcher die Entlastungseinheit mit den anderen Einheiten 30, 32, 34, 36 und 38 verbindet. Wenn Daten gesendet werden müssen, wird ein entsprechendes Paket im Übertragungspuffer 74 durch den Mikroprozessor 68 platziert und in der Folge in den Datenverkehr 64 eingesetzt.
Fig. 3 zeigt die Uhreneinheit entsprechend der vorliegenden Erfindung. Eine Uhreneinheit 82, insbesondere eine additionsbasierende Uhreneinheit, wird durch einen Algorithmus in der Steuereinheit 88 und eine Busschnittstelle 86, welche mit anderen Uhren in dem Multiknotensystem synchronisiert werden muss, gesteuert.
Eine Event-Triggereinheit 84 gestattet es, Events zu gegebenen Zeitpunkten zu triggern oder Aktivitäten mit einem Zeitstempel zu versehen.
Fig. 4 zeigt die Testeinheit entsprechend der vorliegenden Erfindung. On-chip-BIST-Strukturen 110, ein JTAGKontroller 106 und eine Speicher-BIST bieten höchstmögliche Funktionalität für einen Knoten. Diese Einheit wird über eine Busschnittstelle 104 angesprochen.
Fig. 5 zeigt die Wiedergabeeinheit entsprechend der vorliegenden Erfindung. Ein Wiedergabepuffer 126 kann die vorhergehenden Nachrichten speichern und eine WiedergabeSteuerung 128 kann diese Nachrichten in den Netzwerkverkehr für Debug Zwecke in den Mikroprozessor des Knotens einsetzen. Die Einheit wird über eine Busschnittstelle 124 konfiguriert.
Fig. 6 zeigt die Aufzeichnungs- bzw. Trace-Einheit entsprechend der vorliegenden Erfindung.
Eine Debug-Schnittstelle 170 hat Zugriff auf Debug-Steuerleitungen 168 des Mikroprozessors des Knotens, um vollständigen Debug-Zugriff über die Debug-Steuerung 166 zu erhalten. Die Einheit wird über eine Busschnittsteile 164 konfiguriert.
Es ist weiters ein Vorteil der vorliegenden Erfindung, dass die Einheiten für die Uhr 30, die Teststrukturen 32, die Wiedergabefunktionen 34, die Trace-Funktionen 36 und die Debug-Funktionen nahe beieinander liegen und als eine einzelne Einheit für koordiniertes Testen, koordinierte Wiedergabe und koordiniertes Debugging angesehen werden.
Dies umfasst komplexe Triggers für Tracen, Debugging, Testen und Wiedergeben, beispielsweise dergestalt, dass das Tracen gestartet wird, nachdem ein gewisser Unterbrechungszustand in der DebugEinheit 38 aufgetreten ist.
Zusammenfassend ist festzuhalten, dass die erfindungsgemässe Einrichtung für koordinierten Test, Fehlersuche, Datenaufzeichnung und Datenwiedergabe in verteilten eingebetteten Mikroprozessorsystemen ohne eigene Schnittstelle auskommt. Debug-Möglichkeiten sind in eingebetteten Systemknoten eines verteilten Mehrknotensystems integriert, um Zugang zu Test Infrastruktur (z.B. Boundary-Scan oder Built-In Seif Test), Prozessoreinrichtungen zur Fehlersuche (z.B. Background Debugging Modul des Prozessors), Aufzeichnungen von Systemereignissen (z.B. Ablage von Systembusaktivitäten in einen lokalen Pufferspeicher), und Möglichkeiten zur Datenwiedergabe (z.B.
Systembus oder Netzwerkverkehr) eines jeden Knotens zu erhalten. Der Zugang passiert über eine Kommunikationsschnittstelle, die mit einer Entlastungseinheit, welche Teil der im Knoten integrierten Einrichtung ist, ausgestattet ist. Die Entlastungseinheit extrahiert Kontrolldaten, die die Einheiten für Test, Fehlersuche, Datenaufzeichnung und Datenwiedergabe betreffen und fügt Daten zur Analyse oder zum Versenden in den Kommunikationsdatenstrom ein. Eine eigene Schnittstelle zu den Einheiten der Einrichtung ist nicht notwendig. Die exakte Koordination aller Knoten des Mehrknotensystems erfolgt durch Synchronisation der lokalen Uhren, durch welche die Einheiten für Test, Fehlersuche, Datenaufzeichnung und Datenwiedergabe angestossen werden. Als Mikroprozessorsysteme sind im Rahmen der Erfindung auch Systeme von Mikrokontrollern zu verstehen.
The invention relates to a device for coordinated testing and debugging in distributed embedded microprocessor systems having a plurality of embedded system nodes connected via a communication network, the system nodes each having a computation unit, a clock module, a test unit, a debug unit and a communication interface for communicating with have the respective other system nodes via the communication network.
Overall states and processes can often not be reconstructed retrospectively in a distributed system. A diagnosis in case of error is made more difficult. Distributed systems do not share common memory and therefore must realize their entire communication by sending and receiving messages.
Such communication is very susceptible to error, which can lead to problems due to falsification of messages, duplication of messages and the loss of messages. In addition, the message time is unpredictable, so you can never predict with certainty whether a system has failed or if it has only a long response time.
In distributed systems it is very difficult or even impossible in practice to define an exact program sequence. Some development systems therefore refrain from using runtime debuggers, but usually allow the definition of breakpoints where the state of all variables after the program stop can be analyzed.
Real-time debugging usually provides the ability to process the code line by line while monitoring the states of various variables.
Often, additional breakpoints can be set and other options can be used, which greatly simplify the work with the code. The difficulty with distributed systems is that the code is not just executed on one computer as usual, but on a variety of system nodes. Thus, a corresponding tool must support remote debugging and request debugging information from the other node.
In offline debugging, on the other hand, troubleshooting consists of evaluating recorded information. This information is usually obtained with the help of recording units (trace units) or generated by the applications themselves.
Various proposals have already become known to improve troubleshooting, as well as testing, monitoring, and rendering program instructions.
In this context, the topic of clock synchronization was explored.
US 5,812,830 describes a simple circuit for troubleshooting in microprocessors. The presented system also includes various triggering mechanisms for storing internal processor states.
DE 102004052861 A1 describes a diagnostic system for detecting faulty conditions, which is realized as a separate system. Message paths are mapped in the diagnostic system. Synchronized clocks, support for a variety of nodes, and the ability to play recorded data are not used.
WO 2004/023302 A2 relates to a method for detecting errors in a distributed real-time computer system.
The periodic dispatch of a status bit, e.g. via a turn-based communication network, it allows to detect the drop of a node and to react accordingly. No means or the like are cited to identify the cause of an error (e.g., by recording or reproducing data, or by special troubleshooting functions).
EP 943995 A2 describes a processor with an external "real-time instruction insertion". The processor includes other instruction sources, such as a fetch loop, an interrupt register, pipeline protection, and allows external data access. The chip does not include a test unit or playback unit.
There is also a performance penalty due to the inclusion of NoOps in the execution process to allow for data access.
The document WO 2005/073855 A1 relates to a data processing system with a debug module which delivers real-time debug messages to a DMA controller.
US Patent No. 6,769,076 relates to a "real-time processor debug system" which enables the recording of programs and data of a virtual bus of an embedded system. The proposal includes the reduction of power consumption and the reduction of the impact on the performance of the overall system through the debug interface. An integrated logic is used which stores the virtual bus according to the address and operating mode. This patent is thus directed to recording the internal virtual bus of an embedded system.
However, this patent does not address distributed debugging of embedded systems.
U.S. Patent No. 7,080,283 is directed to a method that enables real time recording and debugging of multiple processor cores in a system on a chip. It is based on a dedicated debug output of each single processor core. The debug information is stored by one or more recording storage nodes for each processor core. The recording storage cores, in turn, are interconnected to form a DaisyChain. The daisy chain ends at a record control module which stores the desired debug information. The recording control module transmits the information to an external host agent via a JTAG interface.
Furthermore, the debug data may be compressed via compression nodes located between the processor cores and the at least one recording storage node located between the cores. All this is in a SoC.
US 2007/0168731 A1 describes a debug method for microcontrollers aimed at low impact and low cost. It is proposed to use hardware support for 2-cable high speed communication in future microcontroller applications. This 2-cable communication interface is intended to be used to transfer debug data between the target microcontroller and a link microcontroller. The link microcontroller is on the same chip as the target microcontroller, but is configured by an EEPROM fuse as a link microcontroller.
The link microcontroller executes an interface translation program to establish communication between the target microcontroller and the host computer.
European Patent No. 764903 relates to an on-chip debug port for VLSI processors. It includes a debug circuit in the same integrated circuit as the processor to be addressed. The debug circuit is controlled by an external debug workstation connected to the circuit via an external debug bus and an external interface module. The debug circuit includes a debug bus unit that connects to the external debug bus, a plurality of units, and two internal buses that connect the units to each other and to the debug bus unit. Each unit of the plurality of units in turn is connected to specific parts of the VLSI processor.
With this configuration, it is possible to either send debug commands to at least one of the plurality of units or obtain debug information from the units. Options are possible, such as Sending / monitoring of instructions of the processor, "real-time insertion / extraction" of task data, which relate to the execution of tasks on the processor and the monitoring of the program flow.
U.S. Patent No. 6,324,684 describes a processor having a debug circuit that can communicate with a debug host. The host can send "debug_halt, debug_step, debug_run-, and debug_release" commands.
The processor may also process interrupts during debug mode so that the system can be searched for errors in operation without the use of a debug monitor, which would use more RAM, ROM, and system overhead because of contextual storage and the like , US Pat. No. 6,470,388 describes a system that deals with debugging and logging services for a distributed computing environment consisting of workstations, servers and other network devices. The logging services include conventional formatting and conventional storage of information for the purposes of debugging. The logging services can send trace and debug information to a central logging facility where the data is time-stamped and stored in a database.
The described system involves the logging of debug information in a distributed computer system, but has no coordinated single-step, timing, or hardware-level functions.
US 2006/0080575 A1 discloses a clock synchronization with a main computer, calculation of the drift value, calculation of the transmission delay, hardware timestamping in an optional sniffer unit and optional optical connections between nodes. It does not disclose the support of hardware tests with test, trace or playback functions, BIST, JTAG or coordinated playback and coordinated single-step.
US 2007/0061628 A1 describes a method for examining remote systems and collecting real-time debug data in a multi-node system.
In this method, devices are monitored with probe machines that detect triggering conditions that cause the nodes to stop automatically and the available state data to be collected. However, this trigger condition is set statically and the operator is unable to perform debugging operators such as coordinated single-step.
US Patent No. 5,642,478 describes a method to acquire trace data in a distributed system. In this method, a node controller that performs the task of communicating with other nodes in the system includes detection logic that stores trace data in internal memory buffers. Such trace data are then routed regularly to an external memory.
The beginning and the end of the trace data acquisition are triggered by other subcomponents of the system.
The present invention now aims to enable distributed debugging of embedded systems and in particular to ensure coordinated access to test structures. The invention further aims at not increasing the processor load of the microprocessors as much as possible by the debugging activities.
Furthermore, the testing and debugging should be possible without a separate interface to the system node.
To solve these objects, the device of the type mentioned above for coordinated testing and debugging in distributed embedded microprocessor systems is essentially characterized in that means for synchronizing the clock modules of the system nodes are provided, that the system nodes each have one connected to the test unit and the debug unit Have discharge unit, so that via the communication interface incoming or outgoing, the testing and troubleshooting data packets sent via the discharge unit and receive and possibly
can be processed, and that the clock modules with the respective test unit and the debug unit for inserting time stamps into data packets and / or to trigger test and / or debug operations in response to clock signals. By providing means for synchronizing the clock modules of the system nodes, coordinated recording or playback of complex processes or coordinated access to test structures can be achieved throughout the system via a plurality of nodes. The provision of a relief unit provides the ability to extract control data pertaining to the test and debug unit and to insert data into the communication stream for analysis or transmission, thus eliminating the need for a separate interface to the test and debug units ,
Thus, special packets are filtered out of the communication stream and processed by the unloading unit, so that the loading of the other components of the individual system nodes and in particular the processor load of the microprocessors is not increased. The debugging can be further controlled by the invention without any processor intervention.
So you can, for example, a processor that has crashed, remotely re-boot and put in a working state.
In order to realize additional functionalities, the embodiment is preferably developed in such a way that at least one system node has a recording unit for recording system processes, such as e.g. of arithmetic operations of the arithmetic unit or system bus activities, which is connected to the discharge unit, so that via the communication interface incoming or outgoing, the recording unit concerned data packets can be sent or received via the discharge unit and possibly processed.
It can preferably be provided that the clock module interacts with the recording unit for triggering and / or terminating a recording as a function of clock signals, so that system processes can be recorded coordinated in several system accounts and subsequently used for troubleshooting.
When troubleshooting, it can often be advantageous if recorded or predefined program instructions or program operations are specifically made available to individual system components or "played back" in order to be able to analyze the behavior of the respective components.
In this context, the training is preferably further developed in such a way that at least one system node has a playback unit for reproducing recorded system processes or program instructions which is connected to the discharge unit, so that data packets arriving or departing via the communication interface and sent via the discharge unit are sent via the discharge unit can be received and possibly processed.
For coordinated playback in a plurality of system nodes, the design can advantageously be such that the clock module interacts with the playback unit to begin and / or end playback in response to clock signals.
To simplify the communication between the individual components, it is preferably provided that the arithmetic unit, the test unit, the debug unit and optionally the recording and the playback unit are connected to a common system bus, which advantageously also the clock module to the system bus connected.
Furthermore, it can be provided that the test unit is formed in integrated circuits as a self-test unit for this.
Alternatively, it may be provided that the test unit is formed in integrated circuits as access to test structures in the entire embedded system node, wherein the test unit as JTAG controller (ie "JTAG over Ethernet") can use for lying outside of the IC blocks. Practical application would be e.g. the configuration of an FPGA or the updating of software via the unloading unit, but also testing of other chips.
According to a preferred embodiment, it is provided that a control and control unit is provided in the communication network, which is designed for sending test, debug, record, and / or playback commands to individual system nodes.
The invention will now be described with reference to exemplary embodiments illustrated in the drawings.
Showing:
Fig. 1 is a functional block diagram of a digital embedded system incorporating the apparatus and method of the present invention;
Fig. 2 is a functional block diagram illustrating the relieving unit of the embedded system of Fig. 1 according to the present invention;
Fig. 3 is a functional block diagram illustrating the clock unit of the embedded system of Fig. 1 according to the present invention; FIG. 4 is a functional block diagram illustrating the embedded system test unit of FIG. 1 in accordance with the present invention; FIG.
Fig. 5 is a functional block diagram illustrating the playback system of the embedded system of Fig. 1 according to the present invention;
6 is a functional block diagram illustrating the recording or
Tracing unit of the embedded system of Figure 1 illustrated in accordance with the present invention; and
Fig. 7 is a functional block diagram illustrating the debug unit of the embedded system of Fig. 1 in accordance with the present invention;
Fig. 1 shows a digital embedded system 12 which is improved according to the present invention. The node system 12 includes a system bus 28, a system memory 18, one or more microprocessors 14, a communication interface 16, and other interfaces 40, such as sensors or actuators. During normal operation, the system communicates via the communication controller 26 of the communication interface 16 with other system nodes of a distributed multi-node system connected by a network 20.
However, some traffic, and in particular network packets with a certain type of content, are not forwarded by the communication controller 26 to the microprocessor but are transmitted to a dedicated unloading unit 24. This relief unit 24, together with the clock unit 30, a test unit 32, a display unit 34, a trace unit 36 and a debug unit 38, form a functional unit 42. All components of the unit 42 are exchanged between the units 30 via a bus 22 , 32, 34, 36 and 38 are connected to each other and between the units 30, 32, 34, 36 and 38 and the discharge unit 24.
Via the unloading unit 24 it is possible to configure all units 30, 32, 34, 36 and 38 which are connected via the bus 22.
It is a further object of the present invention to use the watch unit 30 together with the unloading unit 24 to precisely synchronize the nodes of a multi-node system. The system-wide synchronized clock can then be used to simultaneously initiate test play, trace, and debug functions on a plurality of nodes 12 of the multi-node system comprising apparatus 42 of the present invention.
Fig. 2 shows details of the relief unit according to the present invention. A frame filter 72 allows the traffic 64 to be picked out.
The packets are stored in a receive buffer 70, and a special microcontroller 68 in the unload unit extracts the data and addresses of the packet and outputs that data via the bus interface 66 to the bus which provides the unload unit with the other units 30, 32, 34, 36 and 38 connects. When data needs to be sent, a corresponding packet is placed in the transmit buffer 74 by the microprocessor 68 and inserted into the traffic 64 in sequence.
Fig. 3 shows the clock unit according to the present invention. A clock unit 82, in particular an addition-based clock unit, is controlled by an algorithm in the control unit 88 and a bus interface 86 which must be synchronized with other clocks in the multi-node system.
An event trigger unit 84 allows events to be triggered at given times or timestamped to activities.
Fig. 4 shows the test unit according to the present invention. On-chip BIST structures 110, a JTAG controller 106 and a memory BIST provide the highest possible functionality for a node. This unit is addressed via a bus interface 104.
Fig. 5 shows the reproducing unit according to the present invention. A playback buffer 126 may store the previous messages, and a rendering controller 128 may insert these messages into the network traffic for debug purposes in the node's microprocessor. The unit is configured via a bus interface 124.
Fig. 6 shows the recording or tracing unit according to the present invention.
A debug interface 170 has access to debug control lines 168 of the node's microprocessor to obtain full debug access via debug control 166. The unit is configured via a bus interface 164.
It is further an advantage of the present invention that the units for the clock 30, the test structures 32, the rendering functions 34, the trace functions 36, and the debug functions are close together and as a single unit for coordinated testing, coordinated playback, and coordinated debugging.
This includes complex triggers for tracing, debugging, testing, and rendering, for example, such that tracing is started after some interruption has occurred in the debug unit 38.
In summary, it should be noted that the inventive device for coordinated testing, troubleshooting, data recording and data reproduction in distributed embedded microprocessor systems manages without its own interface. Debug capabilities are integrated into embedded system nodes of a distributed multi-node system to provide access to test infrastructure (eg Boundary Scan or Built-In Seif Test), debugger processor facilities (eg, the processor's Background Debugging Module), system event logging (eg, system bus activity dumps) in a local buffer memory), and possibilities for data reproduction (eg
System bus or network traffic) of each node. Access is via a communication interface equipped with a Relief Unit, which is part of the device integrated in the node. The unloading unit extracts control data concerning the units for testing, debugging, data recording and data reproduction, and inserts data into the communication data stream for analysis or transmission. A separate interface to the units of the institution is not necessary. The exact coordination of all nodes of the multi-node system is done by synchronization of the local clocks, through which the units for test, troubleshooting, data recording and data playback are triggered. As microprocessor systems are to be understood within the scope of the invention, systems of microcontrollers.