Suchen

Echtzeit

Best Practices zur Lösung von Timing-Problemen

Seite: 2/4

Firmen zum Thema

Werkzeuglücke

Sehr eng verwandt mit der Verständnislücke ist die Werkzeuglücke. Jeder Stakeholder benutzt das für seine Zwecke passende Werkzeug, um effizient seine Probleme zu lösen. Der Austausch zwischen den einzelnen Parteien ist häufig durch händische Aktivitäten gekennzeichnet.

Gesamtsystemverständnis

Bedingt durch die Zusammenarbeit über Firmengrenzen hinweg und der Integration von Software unterschiedlichster Parteien ist es für den eigentlichen Integrator schwer, bei Problemen mit einem Gesamtsystemverständnis an die Fehlersuche zu gehen.

Bildergalerie

Pattern

Grundlegende und wiederkehrende Erfahrungen aus unterschiedlichsten Projekten manifestieren sich in Pattern, die entsprechend angewendet, großen Nutzen spenden. Trotzdem setzt die Anwendung von Patterns bzw. der Vermeidung von Anti-Pattern eine gewisse Erfahrung voraus, da nicht jedes Pattern zwingend immer erfolgreich anwendbar ist.

Vermessung des Systems

Ein Pattern, welches unserer Erfahrung nach immer anwendbar ist, ist die Entwicklung von Messmethoden für Timing-Fragen im zu entwickelnden System, da nur Dinge, die quantitativ vorliegen, auch optimiert werden können [1, 2].

Das grundlegende Vorgehen beim Tracing ist die Aufnahme von Zeitstempeln. In aktuellen Systemen erfolgt das typisch auf zwei Ebenen:

  • Schedule: Tasks, Runnables, Start-Stop, Laufzeit, CPU-Last
  • Events: Reihenfolgen, Abstände, Versatz, Jitter, Zykluszeit

Dabei geht es grundsätzlich um den ausführbaren Code, der ja auf CPU läuft und somit getraced werden kann. Dabei existieren zwei grundlegende Methoden:

  • Code-Instrumentierung
  • Hardware-Tracing (Typischerweise durch externe Geräte)

Hierbei ist zu beachten, dass prinzipiell jede Messung das System verfälschen kann. Aus diesem Grund ist es notwendig die Messtechnik möglichst non-intrusive auszulegen. Zukünftig werden deshalb CPU-Hersteller erweiterte on-chip Trace-Möglichkeiten etablieren müssen (z.B. in einer Art Timing-Unit für Programmspeicherzugriffe), um das non-intrusive Tracing aus den Laboren in die Fahrzeuge zu bringen.

Systemmodellierung

Habe ein Modell deines Systems in der richtigen Granularität! Eine wichtige Grundlage dafür ist ein systematisches Erfassen der Anforderungen. Hier empfiehlt sich folgende Vorgehensweise:

  • Auf Code-Ebene sollten mindestens Laufzeiten, Zykluszeiten und die CPU-Last erfasst werden.
  • Auf Schedule-Ebene müssen die Deadlines erfasst werden, sonst existieren keine Kriterien für Schedule-Verifikation beziehungsweise Optimierung.
  • Auf der Ebene der End-to-End Kommunikation sollten mindesten Anforderungen an die Reihenfolge der Runnables erfasst werden.
  • Eine praktische Empfehlung besteht in der Annotierung der Timing-relevanten Daten an die erzeugten Artefakte.

(ID:44195929)