Suchen

Kein Rätselraten mehr

Trace-Visualisierung stützt das Debugging von RTOS-basierter Firmware

Seite: 4/4

Firma zum Thema

Für das Begreifen der Traces ist die Visualisierung entscheidend. Viele Embedded-Systeme legen ein mehr oder weniger zyklisches Verhalten an den Tag, sodass es sich beim Großteil der Trace-Daten um irrelevante Wiederholungen der ‚normalen‘ Verhaltensweisen handelt.

Interessant sind dagegen meist die Anomalien, die jedoch unter Umständen schwierig zu finden sind, wenn man nicht genau weiß, wonach man eigentlich sucht. Das menschliche Gehirn leistet allerdings Außerordentliches, wenn es um das Erkennen visueller Muster und Anomalien geht. Voraussetzung hierfür ist jedoch die korrekte Visualisierung der Daten.

Bildergalerie

Es gibt viele Tools, die ein RTOS-Trace als klassisches Gantt-Diagramm darstellen. Diese Visualisierung eignet sich aber nicht, um weitere Ereignisse (z. B. API-Aufrufe oder User-Logging) in derselben Ansicht anzuzeigen. Ein vertikales Execution Trace dagegen kann derartige Ereignisse mit Beschriftungsfeldern anzeigen, die auf das grafische Execution Trace verweisen.

Die alleinige Anzeige eines Execution Trace ist außerdem eine sehr eingeschränkte Perspektive, da aus einem RTOS-Trace deutlich mehr Informationen extrahiert werden können. Zum Beispiel lassen sich die Interaktionen von Tasks und ISRs als Abhängigkeitsgraph visualisieren, und ebenso können Trace-Ansichten angezeigt werden, die sich auf weitere relevante RTOS-Objekte wie Semaphoren, Warteschlangen und Mutexe konzentrieren.

Fazit

Der Trend zum RTOS in der Embedded-Branche ist unübersehbar – und dies aus gutem Grund. RTOS lassen sich als dritte Generation der Firmware-Entwicklung betrachten, da das Multithreading einen höheren Abstraktionsgrad und weniger Kontrolle über die Verarbeitung bietet. Dies birgt jedoch erhebliche Fallstricke, die nach besserer Debugging-Unterstützung auf der RTOS-Ebene verlangen.

Vereinfachen lässt sich das Debugging RTOS-basierter Systeme mithilfe besserer Einblicke in ihre Echtzeitverarbeitung. Hierzu bedarf es des Tracings auf der RTOS-Ebene, wobei die Visualisierung entscheidend für das Begreifen der Daten ist.

Ergänzendes zum Thema
Percepio Tracealyzer

Percepio ist ein Spezialist in der RTOS-Trace-Visualisierung und Hersteller der Tracealyzer-Tools, die Einblicke in die Laufzeitwelt bieten.

Das Visualisierungs-Tool bietet mehr als 25 interaktive Ansichten, die zahlreiche Aspekte des Echtzeitverhaltens offenbaren. Sie stützen sich dabei auf RTOS-Ereignisse, Speicherzuweisungs-Ereignisse und kundenspezifische User-Ereignisse im Applikations-Code.

Die Spanne der Visualisierungen reicht von detaillierten grafischen Traces und Test-Logs bis zu individuellen Daten-Plots, Task-Statistiken und Abhängigkeitsgraphen. Sämtliche Ansichten sind zudem miteinander verknüpft, sodass Sie sich von Anomalien in den abstrakten Darstellungen zu den einzelnen Ereignissen vorarbeiten können. Auch ein Wechsel zwischen verschiedenen Perspektiven ist problemlos möglich, ohne die Fokussierung auf das jeweilige Problem aufzugeben.

Tracealyzer ist ein eigenständiges Tool, das parallel zu einem vorhandenen Debugger verwendet werden kann. Es erfordert keinerlei besondere Hardware und ist auf praktisch jedem Prozessor lauffähig, sofern ein unterstütztes RTOS eingesetzt wird.

Kontinuierliches Streaming ermöglicht das Tracing des Systems über lange Zeitspannen hinweg, während das Tracing an einen RAM-Puffer das Sammeln von Traces ohne Debugger-Verbindung im Rahmen von Feldtests oder an bereits im Einsatz befindlichen Systemen zulässt.

Einige Kunden aktivieren Tracealyzer im Produktions-Code und erfassen Traces aus der Ferne. Dies gibt den Entwicklern detaillierte Problemdiagnosen aus dem Praxisbetrieb in die Hand, die sonst beinahe unmöglich zu reproduzieren wären.

Die Hauptansicht von Tracealyzer.
Die Hauptansicht von Tracealyzer.
( Bild: Percepio )

Die Haupt-Traceansicht (Main Trace View) visualisiert alle Daten entlang einer vertikalen Zeitachse und fokussiert sich auf die Ausführung von Tasks, sowie auf Interrupthandler und Ereignisse wie etwa RTOS-API-Aufrufe und Ihre eigenen anwenderspezifischen Ereignisse.

Jedem Task und jedem Interrupthandler wird abhängig von der Priorität eine eigene Farbe zugewiesen, die übereinstimmend in allen Ansichten benutzt wird. Mit einem Doppelklick auf einen Task, eine ISR oder ein Ereignis öffnet sich eine weitere Ansicht, die relevante Ereignisse zeigt.

Der CPU Load Graph gibt auf einer horizontalen Zeitachse an, wie viel Prozessorzeit die einzelnen Tasks und Interrupts verbrauchen. Dies bietet einen Überblick über den Trace und ermöglicht die Fokussierung auf die Haupt-Traceansicht durch einen einfachen Doppelklick im Diagramm.

User Event Logging: User Events werden in der Tracealyzer-Hauptansicht mit gelben Beschriftungsfeldern angezeigt und lassen sich nutzen, um für das Debugging oder die Performance-Analyse weitere Details über den Applikations-Kontext beizusteuern.
User Event Logging: User Events werden in der Tracealyzer-Hauptansicht mit gelben Beschriftungsfeldern angezeigt und lassen sich nutzen, um für das Debugging oder die Performance-Analyse weitere Details über den Applikations-Kontext beizusteuern.
( Bild: Percepio )

Mit User Events ist ein explizites Logging gemeint, das ähnlich wie der klassische ‚printf‘-Aufruf in den Applikations-Code eingefügt wird. Allerdings geht die Verarbeitung deutlich schneller und dauert auf den meisten 32-Bit-MCUs nur wenige Mikrosekunden. User Events werden in der Hauptansicht mit gelben Beschriftungsfeldern angezeigt und lassen sich nutzen, um für das Debugging oder die Performance-Analyse weitere Details über den Applikations-Kontext beizusteuern.

Wie in den meisten anderen Ansichten auch, ist jeder Listeneintrag mit dem zugehörigen Ereignis in der Haupt-Traceansicht verknüpft. Ein Doppelklick fokussiert die Hauptansicht somit auf das entsprechende Ereignis.

Auch die dynamische Speichernutzung lässt sich analysieren. Auch wenn die dynamische Speicherzuweisung bei Embedded-Systemen allgemein als schlechtes Verfahren gilt, ist sie gelegentlich notwendig. Tracealyzer ermöglicht Ihnen das Analysieren der Zuweisungen und wartet sogar mit einem Filter auf, mit dem sich Speicherlecks einfacher finden lassen.

Tracealyzer wird für führende RTOS-Produkte und auch für Linux-Systeme angeboten. Es bietet direkte Unterstützung für die meisten 32-Bit-Prozessoren (einschließlich ARM) und lässt sich einfach auf andere Architekturen portieren. Weitere Informationen finden Sie auf der Website https://percepio.com. Dort finden sich unter https://percepio.com/gettingstarted/ auch Tutorials.

* * Dr. Johan Kraft ... ist Gründer und CEO des schwedischen Tool-Herstellers Percepio.

(ID:44740567)