EUROS Embedded Systems GmBH
Profiling-Tools
Übersicht
EUROStrace ist ein zusätzliches EUROScope-Plug-in, das für das Sammeln und Anzeigen von zielsystemspezifischen Ereignissen sowie Details zu deren Art bestimmt ist. Das EUROS-Echtzeitbetriebssystem stellt einen Ereignispuffer bereit, um Daten sowohl zu Systemereignissen (z. B. Taskwechsel, Aufruf von Systemdiensten) als auch zu benutzer- bzw. anwendungsspezifischen Ereignissen zu sammeln. Jedes Ereignis ist mit einem oder mehreren EUROS-Objekten oder einem Anwendungs-Trace verknüpft. Diese Objekte können Kernel-Objekte wie Tasks, Semaphoren oder Interrupt-Ereignisse sein, die N- oder S-Bedingungen in EUROS darstellen. Alle gesammelten Ereignisdaten enthalten einen Zeitstempel, dessen Auflösung von der zugrunde liegenden Hardware abhängt.
An verschiedenen Stellen innerhalb von EUROS sind spezielle Anweisungen für die zusätzliche Verarbeitung eingefügt. Bei der Ausführung zeichnen diese Anweisungen den aktuellen Zeitstempel und zusätzliche aktuelle Werte in einer Ereignistabelle auf.
Die EUROS-Version mit Trace-Unterstützung kann unter anderem folgende Ereignisse aufzeichnen:
-
EUROS-Systemaufrufe
-
Taskwechsel
-
Interrupts
-
Benutzerereignisse
Über eine von EUROScope angebotene Konfigurationsoption wählt der Benutzer die Art der zu verfolgenden Ereignisse aus. Die Laufgeschwindigkeit des Systems wird durch den Trace-Mechanismus geringfügig reduziert, da für jedes Ereignis ein Eintrag in der internen Trace-Tabelle aufgezeichnet wird. Die Größe dieser Tabelle wird bei der Initialisierung der Anwendung definiert und ist nur durch den verfügbaren Speicher begrenzt. Die Größe eines einzelnen Trace-Eintrags liegt zwischen 14 Bytes (16-Bit-Architektur) und 18 Bytes (32-Bit-Architektur).
Beim Stoppen der Anwendung wird der Inhalt der Trace-Tabelle auf den PC übertragen und von EUROScope verarbeitet. Die Abbildung unten zeigt ein typisches Diagramm mit dem zeitlichen Ablauf aller aufgezeichneten Ereignisse.
Mit EUROStrace lassen sich Probleme, die durch das zeitliche Verhalten der Anwendung verursacht werden, leicht finden. Dazu gehören oft:
-
Deadlocks beim Warten auf Systemressourcen.
-
Aufgaben, Threads oder E/A-Operationen mit hoher Priorität, die unerwartet große Mengen an CPU-Zeit verbrauchen und andere Aufgaben blockieren.
Da die Zeitachse eine hohe Auflösung hat (die kleinste Einheit ist ein EUROS-Timer-Tick), ist es möglich, Zeitintervalle sehr präzise zu messen. Beispielsweise lässt sich die Zeit, die ein Thread zur Verarbeitung eines Interrupt-Ereignisses benötigt, leicht ermitteln.


