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.
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.