ABC Company Conference
Unsubscribe
Banner_VXW_Text

„Der Fortschritt geschieht heute so schnell,
dass, während jemand eine Sache für gänzlich undurchführbar erklärt, 
er von einem anderen unterbrochen wird, der sie schon realisiert hat.“
(Albert Einstein)

Newsletter im Juli 2019:

- Permanente Gratwanderung: Qualität vs. Termine
- RTOS-Debugging: Umgang mit Timing Problemen
- Sie haben keine Kontrolle
- Es gibt Werkzeuge ...
 und bessere Werkzeuge


Liebe Kundin, Lieber Kunde,


In Real-Time Embedded Systemen ist die Verwendung eines RTOS praktisch zu einer Notwendigkeit geworden.

Viele Entwickler stehen vor der Herausforderung, dass sie gerade erst damit beginnen, ein RTOS einzusetzen und bisher keine oder wenig Erfahrungen damit haben. Sie sind mit den notwendigen Methoden und Techniken noch nicht vertraut, ihren RTOS basierenden Applikations-Code schnell und effizient zu debuggen.

Permanente Gratwanderung: Qualität vs. Termine

Diese Schwierigkeiten in Software-Projekten wirken sich unmittelbar auf die permanente Gratwanderung zwischen Ihrem hohen Anspruch an die Qualität der Software und dem Projektfahrplan aus, der ein fixes Liefer-datum Ihres Produktes verlangt.

Meine Aufgabe sehe ich nicht nur darin, Ihnen gute Werkzeuge für Ihre Arbeit anzubieten, sondern auch darin, Ihnen einen Nutzen für Ihre Projektarbeit in Form von wertvollem Experten-Rat zu bieten.





RTOS-Debugging: Umgang mit Timing Problemen
Wenn Sie in Ihrer Entwicklung ein Echtzeit-Betriebssystem (RTOS) einsetzen, ist zweifellos eine Lernkurve zu erwarten. Sie arbeiten auf einer höheren Abstraktionsebene und verwenden mehr oder weniger parallele Tasks anstatt nur Subroutinen. Außerdem müssen Sie überlegen, wie Ihre Tasks Daten und die Prozessorzeit miteinander teilen sollen. Sie müssen diesen Aufgaben Laufzeitprioritäten zuweisen, und es ist nicht sofort ersichtlich, welche die beste Lösung ist.

Und last but not least müssen Sie lernen, wie Sie mit dem RTOS selbst umgehen, es einsetzen und konfigurieren, die API-Funktionen zur Steuerung von Inter-Task Kommunikation nutzen.

Wenn Sie das alles beherrschen und Ihren Code schreiben, ist es Zeit für die nächste Lernkurve - Sie müssen jetzt auch lernen, wie Sie Ihren Code debuggen.




Sie haben keine Kontrolle
Es gibt mehrere Gründe, warum sich das Debuggen eines RTOS-Systems (in der Regel mit präemptivem Multitasking) vom Debuggen eines Single-Threaded-Superloop-Systems unterscheidet, in dem Sie den gesamten Code selbst geschrieben haben. Die beiden wichtigsten Gründe sind:
  • Wenn mehrere Tasks interagieren und um gemeinsam genutzte Ressourcen konkurrieren, kann das Softwareverhalten durch das Software-Timing und das RTOS-Scheduling-Verhalten beeinflusst werden, die im Quellcode nicht sichtbar sind.

  • Sie haben nicht mehr die direkte Kontrolle über den Programm-ablauf. Task-Schalter können jederzeit und überall aktiviert werden.
An diesen Fragen führt kein Weg vorbei. Sie müssen sich mit ihnen befassen, da Sie dem Betriebssystem vertrauen müssen, um Ihre Aufgaben zu planen und Timer zu verwalten.

Einige Taskwechsel sind zwar vorhersehbar und daher bekannt, aber im Allgemeinen wissen Sie nicht, wo sie im Programmablauf stattfinden werden. Und wenn die Anzahl der Tasks / Threads in Ihrem System steigt, steigt auch die Anzahl der Kombinationen - es kann eine enorme Anzahl möglicher Ausführungsszenarien mit unterschiedlichem Timing und unterschiedlicher Ausführungsreihenfolge geben.

Sie freuen sich schließlich, wenn die meisten davon einwandfrei funktionieren. Aber dann gibt es diesen „Albtraum-Bug“, den einer Ihrer Kunden gemeldet hat und der nur angezeigt wird, wenn die Bedingungen genau richtig sind und den Sie nicht reproduzieren können!

Hier einige typische Symptome von RTOS-bezogenen Timing-Fehlern, die auftreten können, wenn Zeitfehler im Zusammenhang mit einem RTOS auftreten. Beachten Sie, dass viele dieser Probleme zufällig sind. Das Problem tritt manchmal, aber nicht immer auf:
  • Tasks funktionieren isoliert, aber nicht als vollständiges System
  • Das System läuft langsamer als erwartet
  • Das System stürzt ab oder reagiert manchmal nicht mehr
  • Das System erscheint instabil - geringfügige Änderungen führen zu seltsamen Fehlern
  • Zufällige Abweichungen im Ausgabe-Timing
  • Manchmal fehlerhafte Daten oder falsche Ausgabe
  • Zufällige Abstürze / schwere Fehler



 



Es gibt Werkzeuge ...
Fehler, die vom Timing abhängen, können sehr schwer zu reproduzieren oder zu finden sein, zumal die meisten Debug-Tools Multitasking-Probleme kaum unterstützen. Mir scheint, dass sich die meisten Tools immer noch auf statisch angehaltene Systeme konzentrieren und nicht auf das dynamische Softwareverhalten. Im Gegensatz dazu haben viele Systeme Echtzeit-anforderungen und können nicht zum Debuggen angehalten werden.

Abgesehen von der Suche nach Symptomen sollten Sie natürlich alle Ihre verfügbaren Tools und die von denen angebotene Instrumentierung ver-wenden, um Ihr RTOS und Ihre Anwendung auf Fehler und Fehlverhalten zu untersuchen. 

Beispielsweise unterstützt Ihre IDE möglicherweise die einfache Überprüfung von RTOS-Objekten während des Debuggens (manchmal über Plugins) und kann sogar die Stack-Verwendung Ihrer Tasks analysieren. Mit dem RTOS können Sie möglicherweise die CPU-Auslastung auf einem hohen Niveau messen und so herausfinden, wie viel CPU-Zeit jede Task durchschnittlich benötigt. Einige Debugger können Variablen in Echtzeit darstellen, während das System ausgeführt wird ("Live Watch"), obwohl dies möglicherweise nicht für schnell wechselnde Variablen geeignet ist.










 und bessere Werkzeuge
Wenn Sie eine zuverlässige Zeitachse für die tatsächlichen Vorgänge in Ihrer Anwendung und im RTOS anzeigen möchten, benötigen Sie ein RTOS-fähiges Tracing, das die Vorgänge aufzeichnet und ein Tool, mit dem Sie die Trace-Informationen nachvollziehen können.

Der Tracealyzer ist die Lösung von Percepio zum Aufzeichnen und Analysieren von Trace-Informationen. Wenn ich Ihnen dieses Tool empfehle, bin ich natürlich etwas voreingenommen. Ich empfehle jedoch, dass Sie den Tracealyzer Ihrer Debugging-Toolbox hinzufügen. Er gehört m.E. in die Toolbox jedes Entwicklers.

Percepio ist der führende Anbieter von Software-Trace-Visualisierung für Embedded Systeme und IoT. Kürzlich wurde der neue Tracealyzer Version 4.3 vorgestellt. Die aktuelle Version enthält neue Funktionen für die State-Machine-Analyse, die Stack-Usage-Analyse für Amazon FreeRTOS und wesentliche Leistungsverbesserungen beim Arbeiten mit großen Traces.

Die neue Version ist ein wichtiger Schritt in der Tracealyzer-Evolution. Die neue Ansicht "Interval Details" bietet beispielsweise einen besseren Überblick über State Machines und andere benutzerdefinierte Intervalle in der Traceaufzeichnung. Dies funktioniert genau wie bei Tasks und Events. Doppelklicken Sie einfach auf einen Eintrag in einem Intervallfeld. Wenn Sie sehr lange Traces, mehrere Stunden oder länger, aufzeichnen, werden Sie feststellen, dass das Laden bestimmter Abschnitte aus der Trace-Vorschau dank verbesserter Indizierung jetzt um Größenordnungen schneller ist als zuvor. So können Sie auch mit sehr großen Traces effektiv arbeiten

Schließlich können Sie mit der neuen Stack-Usage-Analyse die höchste Stack-Usage jeder FreeRTOS-Task und über lange Tests hinweg anzeigen. Auf diese Weise können Sie die Stack-Größe optimieren und RAM für neue Funktionen freigeben. Sie können diese Stack-Überwachung sogar vor Ort über den Device Firmware Monitor-Service (DFM) bereitstellen.

Tracealyzer Version 4.3 bringt auch Verbesserungen der Trace-Ansicht und des Datenexports. Alle Punktdiagrammansichten, wie z.B. der User Event Signal Plot, ermöglichen jetzt den Export in CSV-Dateien, die in vielen anderen Anwendungen, z. B. Tabellenkalkulationen, importiert werden können. Dies kann z.B. für Sensorwerte genutzt werden, die als Benutzerereignisse, Taskantwortzeiten, Speicherzuweisungen oder die Dauer benutzerdefinierter Intervalle zwischen zwei Ereignissen in der Ablaufverfolgung protokolliert werden.

Den aktuellen Tracealyzer können Sie kostenlos und unverbindlich testen. Gehen Sie auf die Download-Seite von Percepio. Gerne mache ich Ihnen auch ein Angebot.












Offizieller Segen von RENESAS und ARM KEIL
Wenn Sie einer der vielen Kunden sind, die Mikrocontroller von Renesas und die Entwicklungswerkzeuge von ARM Keil nutzen, werden Sie sicher wissen, dass der TRACEALYZER von Percepio inzwischen den offiziellen „Segen“ von beiden Herstellern erhalten hat:
  • ARM Keil führt den TRACEALYZER unter den eigenen Entwicklungswerkzeugen auf.

  • Renesas hat eine Partner-Seite für den TRACEALYZER in seine Galerie von Entwicklungs-Werkzeugen aufgenommen (Registrierung erforderlich).
Eine solche Unterstützung von großen Herstellern passiert nicht von ungefähr:

Kein derzeit auf dem Markt befindliches Tool hilft schneller und effizienter aus Laufzeitproblemen einer RTOS basierenden Applikation als der TRACEALYZER von Percepio.





Für die anstehende Sommerpause wünsche ich Ihnen Muße und Zeit für sich und Ihre Familie, aber auch Abstand von der täglichen Arbeit und Routine. Kommen Sie mit kreativen, neuen Ideen aus den Ferien zurück!
Ich wünsche Ihnen eine gute Zeit.


Herzlichst,  Ihr
Marian A. Wosnitza

PS. Gerne schreibe ich Ihnen wieder zum 01.September.



„Sommer ist die Zeit, in der es zu heiß ist,
um das zu tun, für das es im Winter zu kalt war.“
(Mark Twain)