Übersicht über Azure RTOS TraceX

Azure RTOS TraceX ist ein hostbasiertes Microsoft-Analysetool, das Entwicklern eine grafische Darstellung von Echtzeitsystemereignissen bietet und es ihnen ermöglicht, das Verhalten ihrer Echtzeitsysteme zu visualisieren und besser zu verstehen. Mit Azure RTOS TraceX können Entwickler klar erkennen, ob Systemereignisse wie Interrupts und Kontextwechsel auftreten, die von standardmäßigen Debuggingtools nicht erfasst werden. Die Möglichkeit, diese Ereignisse zu identifizieren und zu untersuchen und den genauen Zeitpunkt ihres Auftretens im Rahmen des Gesamtsystembetriebs zu ermitteln, ermöglicht es Entwicklern, unvorhergesehenes Verhalten festzustellen, bestimmte Bereiche näher zu überprüfen und auf diese Weise Programmierprobleme zu lösen. Ablaufverfolgungsinformationen werden in einem Puffer auf dem Zielsystem gespeichert, wobei Speicherort und Größe des Puffers zur Laufzeit von der Anwendung bestimmt werden. Azure RTOS TraceX kann jeden erstellten Puffer in der richtigen Weise verarbeiten, nicht nur über Azure RTOS ThreadX, sondern über jede beliebige Anwendung oder RTOS. Die Ablaufverfolgungsinformationen können jederzeit zur Analyse auf den Host hochgeladen werden – entweder post mortem oder an einem Haltepunkt. Azure RTOS ThreadX implementiert einen zirkulären Puffer, der dafür sorgt, dass die jüngsten „N“-Ereignisse bei Systemfehlern oder anderen bedeutenden Ereignissen zur Überprüfung verfügbar sind.

Single-Core-Anzeige in Azure RTOS TraceX

Single-Core-Anzeige in TraceX

Wichtige Funktionen

Integrierte Azure RTOS TraceX-Systemanalyse

Azure RTOS TraceX stellt integrierte Systemanalyseberichte bereit, die jeweils per einfachen Mausklick auf eine Schaltfläche in der TraceX-Symbolleiste verfügbar sind. Dazu gehören u. a. folgende Schaltflächen und Berichte:

Bericht Bericht "Ausführungsprofil generieren"

Bericht zur Leistungsstatistik generieren Bericht zur Leistungsstatistik generieren

Generieren eines Threadstapelnutzungsberichts Generieren eines Threadstapelnutzungsberichts

Von Azure RTOS ThreadX gesammelte Ablaufverfolgungsdaten

Azure RTOS TraceX ist für die Zusammenarbeit mit Azure RTOS ThreadX konzipiert, das während der Laufzeit eine Datenbank von System- und Anwendungsereignissen auf dem Zielsystem erstellt. Dazu gehören u. a. folgende Ereignisse:

  • Threadkontextwechsel
  • vorzeitiges Entfernen
  • Unterbrechungen
  • Beendigungen
  • Systeminterrupts
  • anwendungsspezifische Ereignisse
  • alle Azure RTOS ThreadX-API-Aufrufe
  • alle Azure RTOS NetX-API-Aufrufe
  • alle Azure RTOS FileX-API-Aufrufe
  • alle Azure RTOS USBX-API-Aufrufe
  • anwendungsdefinierte Symbole und Informationen

Ereignisse werden unter der Programmsteuerung mit Zeitstempel und aktiver Threadidentifikation protokolliert, sodass sie später in der richtigen Zeitabfolge angezeigt und dem entsprechenden Thread zugeordnet werden können. Die Ereignisprotokollierung kann vom Anwendungsprogramm dynamisch angehalten und neu gestartet werden, z. B. wenn auf einen interessanten Bereich gestoßen wird. Dadurch wird vermieden, dass die Datenbank zu voll wird und zu viel Zielspeicher belegt wird, wenn das System ordnungsgemäß funktioniert.

Azure RTOS TraceX funktioniert wie eine Softwarelogikanalyse

Nachdem das Ereignisprotokoll aus dem Zielspeicher auf den Host hochgeladen wurde, zeigt Azure RTOS TraceX die Ereignisse grafisch auf einer horizontalen Zeitachse an. Die verschiedenen Anwendungsthreads und Systemroutinen, mit denen die Ereignisse verknüpft sind, sind auf der vertikalen Achse aufgeführt. Azure RTOS TraceX erstellt eine „Softwarelogikanalyse“ auf dem Host, sodass Systemereignisse klar erkennbar sind. Ereignisse werden durch farbcodierte Symbole dargestellt, die sich auf der horizontalen Zeitachse jeweils am Zeitpunkt ihres Auftretens rechts neben den relevanten Threads bzw. Systemroutinen befinden. Bei Auswahl eines Ereignissymbols werden die entsprechenden Informationen zu dem betreffenden Ereignis sowie die Informationen zu den beiden vorherigen und nachfolgenden Ereignissen angezeigt. Dadurch kann per einfachen Mausklick schnell auf die unmittelbarsten Informationen zu dem Ereignis und den direkt angrenzenden Ereignissen zugegriffen werden. Azure RTOS TraceX bietet eine zusammenfassende Ansicht, in der alle Systemereignisse auf einer einzelnen horizontalen Linie angezeigt werden, um die Analyse von Systemen mit vielen Threads zu vereinfachen.

Sequenzieller Ansichtsmodus

Der sequenzielle Ansichtsmodus wird durch Klicken auf die Registerkarte „Sequential View“ ausgewählt. Dies ist der Standardmodus. In diesem Modus werden Ereignisse direkt aufeinanderfolgend angezeigt – unabhängig von der dazwischen verstrichenen Zeit. Beachten Sie auch das Lineal über dem Anzeigebereich. Es zeigt die relative Ereignisnummer ab dem Beginn der Ablaufverfolgung an. Dieser Modus ist der Standardmodus und besonders nützlich, um sich einen guten Überblick über die Geschehnisse im System zu verschaffen.

Sequenzieller Ansichtsmodus

Sequenzieller Ansichtsmodus

Zeitansichtsmodus

In diesem Modus werden Ereignisse zeitbezogen angezeigt, wobei die Ausführung zwischen Ereignissen durch einen dicken grünen Balken dargestellt wird. Dieser Modus ist besonders nützlich, um festzustellen, wo der Großteil der Verarbeitung im System erfolgt. Dies kann Entwickler dabei unterstützen, das System für eine höhere Leistung und/oder Reaktionsfähigkeit zu optimieren.

Beachten Sie auch das Lineal über der Ereignisanzeige. Dieses Lineal zeigt relative Takte ab dem Beginn der Ablaufverfolgung, welche von dem Zeitstempel abgeleitet werden, der in der Protokollierung der Ereignisablaufverfolgung innerhalb von Azure RTOS ThreadX instrumentiert wurde. Wenn die Zeitstempel zu nahe beieinander liegen (Timer mit niedriger Frequenz), werden die Ereignisse zusammen ausgeführt. Sind die Zeitstempel dagegen zu weit voneinander entfernt (Timer mit hoher Frequenz), liegen die Ereignisse zu weit auseinander. Die Auswahl des Zeitstempels mit der richtigen Frequenz ist ein wichtiger Aspekt für die sinnvolle Gestaltung der zeitbezogenen Ansicht.

Zeitansichtsmodus

Systemzusammenfassungslinie

Azure RTOS TraceX bietet auch eine einzelne Zusammenfassungslinie, die alle Ereignisse enthält. Auf der Zusammenfassungslinie wird eine Zusammenfassung des Kontexts angezeigt und darunter die entsprechende Ereigniszusammenfassung. Sie erleichtert es, sich einen Überblick über ein komplexes System zu verschaffen. Der Zusammenfassungsbalken ist besonders für Systeme mit einer großen Anzahl von Threads von Vorteil. Ohne eine solche Zusammenfassungslinie müsste der Benutzer den Ausführungskontext mithilfe der vertikalen Bildlaufleiste nachvollziehen, um komplexe Systeminteraktionen zu verfolgen.

Systemkontexte werden von Azure RTOS TraceX auf der linken Seite der Anzeige aufgelistet. Ereignisse, die in einem bestimmten Kontext auftreten, werden auf der horizontalen Linie rechts neben dem betreffenden Kontext angezeigt. Auf diese Weise kann der Benutzer leicht feststellen, in welchem Kontext das Ereignis aufgetreten ist, und der betreffenden Kontextlinie folgen, um alle Ereignisse anzuzeigen, die in einem bestimmten Kontext aufgetreten sind.

Systemzusammenfassungslinie

Systemzusammenfassungslinie

Die ersten beiden Kontexteinträge sind immer die Kontexte „Interrupt“ und „Initialize/Idle“. Der Kontext „Interrupt“ stellt alle Systemereignisse dar, die von Interrupt Service Routines (ISRs) erstellt werden. Der Kontext „Initialize/Idle“ stellt zwei Kontexte in Azure RTOS ThreadX dar. Ereignisse, die während „tx_application_define“ auftreten, sind „Initialize“-Ereignisse und werden im Kontext „Initialize/Idle“ angezeigt. Wenn sich das System im Leerlauf befindet und somit keine Ereignisse auftreten, wird der grüne Balken, der „Wird ausgeführt“ in der Zeitansicht darstellt, in den Kontext „Initialize/Idle“ gezeichnet.

Navigationsmethoden

Azure RTOS TraceX ermöglicht es dem Entwickler, die Funktion der Navigationsschaltflächen „Weiter“ und „Zurück“ festzulegen.

Navigationsschaltflächen

Wenn „Event“ ausgewählt ist, erfolgt die Navigation zum nächsten/vorherigen Ereignis. Wenn „Context“ ausgewählt ist, erfolgt die Navigation zum nächsten/vorherigen Ereignis im selben Kontext. Wenn „Object“ ausgewählt ist, erfolgt die Navigation zum nächsten/vorherigen Ereignis des aktuellen Objekts, z. B. Ereignisse, die einer bestimmten Warteschlange zugeordnet sind. Wenn „Switches“ ausgewählt ist, erfolgt die Navigation zum nächsten/vorherigen Kontextwechsel. Wenn „Same ID“ ausgewählt ist, erfolgt die Navigation zum nächsten/vorherigen Ereignis für dieselbe Ereignis-ID.

Anzeige von Ereignisinformationen

Azure RTOS TraceX liefert ausführliche Informationen zu rund 300-Ereignissen. Dazu gehören sechs interne Azure RTOS ThreadX-Ereignisse, zwei ISR-Ereignisse („Enter“ und „Exit“), 14 interne Azure RTOS FileX-Ereignisse, 42 interne Azure RTOS NetX-Ereignisse sowie ein benutzerdefiniertes Ereignis. Die restlichen Ereignisse entsprechen direkt Azure RTOS ThreadX-, Azure RTOS FileX- und Azure RTOS NetX-API-Diensten. Unabhängig davon, ob der sequenzielle oder der Zeitanzeigemodus ausgewählt ist, führt ein Mouseover für ein beliebiges Ereignis im Anzeigebereich zur Anzeige detaillierter Ereignisinformationen in der Nähe des Ereignisses. Im Folgenden wird das Mouseover für Ereignis 494 in der Demo-Ablaufverfolgungsdatei „demo_threadx.trx“ gezeigt:

Anzeige weiterer Informationen durch Mouseover

Anzeige weiterer Informationen durch Mouseover

Jedes angezeigte Ereignis enthält Standardinformationen zum Kontext sowie zur relativen Zeit und zum Zeitstempel. Im Kontextfeld wird der Kontext angezeigt, in dem das Ereignis stattfand. Es gibt genau vier Kontexte: „Thread“, „Idle“, „ISR“ und „Initialize“. Wenn ein Ereignis in einem Threadkontext stattfindet, werden Name und derzeitige Priorität des Threads erfasst und wie oben dargestellt angezeigt. Die relative Zeit zeigt die relative Anzahl der Timertakte ab Beginn der Ablaufverfolgung an. Der Rohzeitstempel zeigt die Rohzeitquelle des Ereignisses an. Zu guter Letzt werden alle ereignisspezifischen Informationen angezeigt.

Vergrößern und Verkleinern

Standardmäßig zeigt Azure RTOS TraceX die Ereignisse in einer übersichtlichen Ansichtsgröße mit einer Pixel-Takt-Zuordnung von 1:1 an. Der Benutzer kann die Ansicht je nach Bedarf vergrößern oder verkleinern. Eine Verkleinerung auf 100 % ist hilfreich, um die gesamte Ablaufverfolgung in der aktuellen Anzeigeansicht darzustellen, während eine Vergrößerung sinnvoll ist, wenn sich die Ereignisse aufgrund der Auflösung des Zeitstempels überschneiden.

Verkleinern auf 100%ige Ansicht oder Vergrößern von Details

Verkleinern auf 100%ige Ansicht oder Vergrößern von Details

Durch Verkleinerung auf 100 % wird die gesamte Ablaufverfolgung auf der aktuellen Anzeigeseite dargestellt, sodass sich die in der Ablaufverfolgung erfasste gesamte Kontextausführung einschließlich der allgemeinen Ereignisse, die innerhalb dieser Kontexte auftreten, leicht überblicken lassen. Beachten Sie, dass „Thread 1“ und „Thread 2“ am häufigsten ausgeführt werden. Die blaue Färbung der zugehörigen Ereignisse weist auch darauf hin, dass diese Threads Warteschlangendienste aufrufen (Warteschlangenereignisse sind blau dargestellt).

Die Wiederherstellung der vollen Symbolansicht ist gleichermaßen einfach: Klicken Sie entweder wiederholt auf die Schaltfläche „Vergrößern“, oder geben Sie den Faktor 100 ein.

Deltatakte zwischen Ereignissen

Die Anzahl der Takte zwischen verschiedenen Ereignissen lässt sich in Azure RTOS TraceX problemlos festlegen – klicken Sie einfach auf das Startereignis, und ziehen Sie die Maus auf das Endereignis. Die Deltazahl der Takte zwischen den Ereignissen wird oben rechts auf dem Bildschirm angezeigt.

Deltatakte

Deltatakte

Die Deltatakte zeigen, dass 5032 Takte zwischen Ereignis 494 und Ereignis 496 verstrichen sind. Dies können Sie auch manuell berechnen, indem Sie die relativen Zeitstempel in jedem Ereignis ansehen und subtrahieren. Mithilfe der GUI geht dies jedoch einfacher und schneller.

Prioritätsinversionen

Azure RTOS TraceX zeigt automatisch die in der Ablaufverfolgungsdatei erkannten Prioritätsinversionen an. Prioritätsinversionen werden als Bedingungen definiert, bei denen ein Thread mit höherer Priorität blockiert wird, wenn versucht wird, einen Mutex abzurufen, der sich derzeit im Besitz eines Threads mit niedrigerer Priorität befindet. Dieser Zustand wird als „deterministisch“ bezeichnet, da das System für diese Funktionsweise eingerichtet wurde. Um den Benutzer zu informieren, zeigt Azure RTOS TraceX den „deterministischen“ Prioritätsbereich der Inversionsbereiche in einem hellen Lachston an.

Azure RTOS TraceX zeigt außerdem Inversionen „nicht deterministischer“ Priorität an. Diese Prioritätsinversionen unterscheiden sich von den „deterministischen“ Prioritätsinversionen dadurch, dass ein anderer Thread mit einer anderen Prioritätsstufe mitten in einer „deterministischen“ Prioritätsinversion ausgeführt wurde, wodurch die Zeit innerhalb der Prioritätsinversion ein Stück weit „nicht deterministisch“ war. Dieser Zustand bleibt vom Benutzer oft unbemerkt und kann sehr schwerwiegend sein. Um den Benutzer auf diesen Zustand aufmerksam zu machen, zeigt Azure RTOS TraceX „nicht deterministische“ Prioritätsinversionen in einem helleren Lachston an.

Deterministische und nicht deterministische Prioritätsinversion

Deterministische und nicht deterministische Prioritätsinversion

Ausführungsprofil

Azure RTOS TraceX stellt einen integrierten Ausführungsprofilbericht für alle Ausführungskontexte innerhalb der derzeit geladenen Ablaufverfolgungsdatei bereit.

Ausführungsprofil

Performance Statistics

Azure RTOS TraceX stellt einen integrierten Leistungsstatistikbericht für die derzeit geladene Ablaufverfolgungsdatei bereit.

Performance Statistics

Threadstapelauslastung

Azure RTOS TraceX stellt einen integrierten Stapelauslastungsbericht für alle Threads bereit, die innerhalb der derzeit geladenen Ablaufverfolgungsdatei ausgeführt werden.

Stapelverwendung

Azure RTOS TraceX zeigt die Azure RTOS FileX-Leistungsstatistik der derzeit geladenen Ablaufverfolgungsdatei an. Diese Informationen werden für das gesamte System auf allen geöffneten Medienobjekten angezeigt.

FileX-Statistik

Azure RTOS NetX-Statistik

Azure RTOS TraceX zeigt auch die NetX-Leistungsstatistik der derzeit geladenen Ablaufverfolgungsdatei an. Diese Informationen werden für das gesamte System angezeigt.

NetX-Statistik

Rohdatensicherung der Ablaufverfolgung

Azure RTOS TraceX kann eine Rohdaten-Ablaufverfolgungsdatei im Textformat erstellen und den Editor starten, um sie anzuzeigen.

Rohdatensicherung der Ablaufverfolgung

Bitte beachten Sie, dass alle aufgeführten Zeit- und Größenangaben Schätzungen sind und von denen Ihrer Entwicklungsplattform abweichen können.