Was nützt Codegenerierung im embedded Umfeld?

Wer embedded Systeme entwickelt, hat das sicher schon erlebt: Während der Produktionseinführung, die Software ist eigentlich schon fertig, zeigt es sich, dass der Standby-Controller für den Test noch einen Pin setzen muss. Das Setzen des Pin ist schnell gemacht, jedoch den Befehl dazu von der Testschnittstelle über den HMI-Controller und den Steuerungscontroller zum Standby-Controller durch alle Protokoll-Stacks zu schlaufen ist aufwändig und fehleranfällig.

Wenn man sich das nur auf Knopdruck machen lassen könnte!
...man kann: mit Codegenerierung!

Diesmal gibt es einen etwas technischeren Blog, ich hoffe, er gefällt Ihnen trotzdem.

Was will Codegenerierung erreichen?

Ein wichtiges Ziel ist es natürlich, Zeit zu sparen und weniger Fehler zu machen. Zusätzlich soll sich die Qualität des Codes erhöhen, da repetitive Teile automatisch erzeugt werden und die ganze Information nur an einer Stelle vorhanden ist ("Single Point of Truth": aus einer Quelle, dem Modell wird der Code für alle Controller, der Code für den steuernden PC und die Dokumentation des Protokolls erzeugt). Und zuletzt sind auch die Entwickler besser motiviert, wenn sie keinen langweiligen "Boilerplate" Code selbst schreiben müssen.

Codegenerator Blockschema

Wie erzeugt man Code?

Grundsätzlich besteht die Codeerzeugung darin, eine Modell-Beschreibung in kompilierbaren und nachher natürlich ausführbaren Code zu transformieren. Das Modell kann grafischer Natur sein oder ein textuelles Datenmodell z.B. basierend auf den Standards JSON oder XML .

Was macht der Solcept Codegenerator?

Unser Codegenerator ist eine .NET/ C# Applikation, welche C oder C++ Code für das embedded System erzeugt. Wir verwenden textuelle Modelle in JSON, welche die Datenstrukturen, Wertebereiche, Inhaltsbeschreibung etc. enthalten.

Der Generator liest das Modell ein, dann prüft er das Modell auf Syntax und Konsistenz und transformiert das Modell für die Codeerzeugung. Mit Hilfe der .NET Template Engine und den spezifischen Code Templates für C und C++, oder auch C# etc. erzeugt er dann den Zielcode für das embedded System oder auch für ein PC/ Tablet basiertes Konfigurationstool.

Wo verwenden wir Codegenerierung?

Wir verwenden Codegenerierung pragmatisch, d.h. nur dort wo wir wirklich einen Nutzen erzeugen können. Die wichtigsten zwei Anwendungen sind Kommunikation und Management von Daten und Bedienschnittstellen.

Für die Kommunikation modellieren wir Übertragungsdaten ("Protokolle") und Konfigurationsdaten. Daraus lässt sich der Code für Speicherung, Datenmanagement (nichtflüchtige Speicherung...) und Übertragung (sowohl zwischen embedded Controllern als auch zu übergeordneten (PC-) Systemen) erzeugen. Zusätzlich fällt auch gerade eine aktuelle Dokumentation der Daten an.

Die Modellierung von GUI (Graphical User Interface) Menüs ist die andere Anwendung. Der Menü-Baum und die dazugehörigen Berechtigungen werden modeliert, aus diesem Modell erzeugen wir den Code für das ganze Menü inklusive der Verbindung zum Datenmodell sowie den Code für das Zugriffs- und Berechtigungsmanagement.

Eine einfachere Anwendung ist Versionsinformation. Dabei wird der Code für die Verwaltung der Versionsinformationen der Software des embedded Systems automatisch erzeugt und kann z.B. für das Management von Updates verwendet werden.

Was ist Ihr Nutzen?

Wenn wir in Projekten Codegenerierung einsetzen, dann können wir den Aufwand für die Entwicklung verkleinern und gleichzeitig die Qualität optimieren, vor allem auch für Änderungen kurz vor dem oder kurz nach dem Serienstart.

Wenn auch Sie von unserer Codegenerierung profitieren möchten, kontaktieren Sie mich:

Andreas Stucki

Stichworte/ Tags

Keine Kommentare

Was ist Ihre Meinung?

Teilen auf