Embedded Coder

Hauptmerkmale

  • Erweitert den MATLAB Coder und Simulink Coder um zusätzliche Optimierungs- und Konfigurationsoptionen
  • Unterstützt Simulink®-Data-Dictionary-Funktionalitäten wie Custom Storage Class, Datentyp und Daten-Alias-Definitionen
  • Bietet prozessorspezifische Codeoptimierung
  • Ermöglicht die Ausführung in Multiraten-, Multitasking- und Mehrkern-Umgebungen mit oder ohne RTOS
  • Unterstützt die Code-Verifikation durch SIL- und PIL-Tests, Anwenderkommentare sowie Codegenerierungs-Berichte mit bidirektionaler Rückverfolgbarkeit des Codes zu Modellen und Anforderungen
  • Ermöglicht die Anbindung von Texas Instruments Code Composer Studio, Analog Devices VisualDSP++® und anderer Drittanbieter-Entwicklungsumgebungen für Embedded Systeme
  • Unterstützt zentrale Standards wie ASAP2, AUTOSAR, DO-178, IEC 61508, ISO 26262 und MISRA C® in Simulink
A fixed-point model with generated code and its simulation mode set for SIL execution.
Ein für die SIL-Ausführung eingerichtetes Festkommamodell mit daraus generiertem Code. Mit dem Embedded Coder generieren, dokumentieren und testen Sie in kürzester Zeit Code für Embedded Systeme in Produktionsumgebungen.

Targets konfigurieren und mit Targets arbeiten

Die Codegenerierungs-Einstellungen des Embedded Coder werden über das Project-GUI des MATLAB Coder oder den Simulink Model Explorer konfiguriert. Alternativ dazu können alle Einstellungen auch mithilfe von MATLAB-Befehlen und -Skripten gesetzt werden.

Vom Project-GUI des MATLAB Coder aus können Sie:

  • Code aus MATLAB-Dateien und -Funktionen generieren
  • Funktionen und Fähigkeiten des Embedded Coder auswählen
  • Projekteinstellungen für die Codegenerierung konfigurieren
  • Projekte erzeugen, laden und wiederverwenden

Über das Simulink Model Explorer-GUI können Sie:

  • Code aus Simulink-Modellen und -Subsystemen generieren
  • Targets für den Embedded Coder auswählen
  • Targets für die Codegenerierung konfigurieren
  • Konfigurationssätze erzeugen, laden und wiederverwenden

Auswählen von Targets

Der Embedded Coder übersetzt MATLAB-Code und Simulink-Modelle mithilfe von Konfigurationsobjekten und System Target-Files in Quellcode und ausführbare Programme in Produktionsqualität.

Für MATLAB-Konfigurationsobjekte stehen die folgenden Targetformate als Ausgabe zur Auswahl:

  • MEX-Datei
  • Statische C/C++-Bibliothek
  • Ausführbare C/C++-Programmdatei

Für Simulink System Target-Files geben Sie die Echtzeitumgebung vor, in der der generierte Code ausgeführt werden soll. Der Embedded Coder enthält Target-Files für eine Reihe einsatzfertiger Konfigurationen und unterstützt außerdem Targets von Drittanbietern sowie anwenderdefinierte Targets. Zu den integrierten Targets gehören:

Embedded Real-Time Target: Erzeugt ANSI/ISO C-, C++- und Encapsulated C++-Code mit Fließkomma- und Festkommadaten für die effiziente Echtzeit-Ausführung auf fast allen Produktionsprozessoren.

AUTOSAR Target: Generiert C-Code und Run-Time-Interfaces für die Entwicklung von AUTOSAR-Softwarekomponenten.

Shared Library Target: Generiert eine Shared Library-Version des Codes zur Ausführung auf Hostplattformen in Form einer Dynamic Link Library (.dll) für Windows® oder einer Shared Object-Datei (.so) für UNIX®.

IDE Link Target: Ermöglicht die Generierung von Code für die Kompilierung und Implementierung unter Einbindung von Drittanbieter-IDEs wie etwa Texas Instruments Code Composer Studio.

Definieren der Eigenschaften von Embedded Hardware

Für die Codegenerierung aus MATLAB oder Simulink können Sie auf eine Liste mit vordefinierten Target-Prozessoren zugreifen oder alternativ selbst generische Targeteinstellungen setzen. Die vordefinierte Liste lässt sich zudem beliebig für eigene Umgebungen erweitern.

Simulink Model Explorer, which provides access to a predefined list or generic settings for specifying the microprocessor for code deployment.
Im Simulink Model Explorer können Sie auf eine vordefinierte Liste von Prozessoren zurückgreifen oder selbst die Konfiguration des Targets bestimmen. Der Embedded Coder generiert Code für beliebige 8-, 16- und 32-Bit-Mikroprozessoren oder -DSPs.

Definition und Steuerung eigener Daten

Mit dem Embedded Coder können Sie definieren und steuern, wie die Modelldaten später im generierten Code angezeigt werden. Zur Erleichterung der Softwareintegration lässt sich die Klasse, Größe und Komplexität von MATLAB-Daten für Einsprungpunkt-Funktionen und globale Daten über die Project-Oberfläche des MATLAB Coder festlegen.

Für MATLAB-Code unterstützt der Embedded Coder sämtliche Datendefinitionen des MATLAB Coders, darunter auch Festkommaobjekte.

Der Embedded Coder verwendet folgende Datenspezifikationen und Data-Dictionary-Funktionalitäten aus Simulink zur Codegenerierung:

Simulink Data Objects: Ermöglichen Custom Storage Classes wie const, volatile, exported global, imported global, #define, structure und bitfield (gepackte Bit-Struktur) sowie get- und set-Zugriffsmethoden.

Module Packaging Data Objects: Bieten vorkonfigurierte Attribute für erweiterte Datenobjekte, die typischerweise in der Serienfertigung genutzt werden, etwa Speichersegmente zur Kalibrierung und Optimierung von Look-Up-Tabellen.

Anwenderdefinierte Datentypen: Dienen zur Definition abstrakter Typen komplexer Daten. Sie können damit beispielsweise exakt festlegen, wie die Modelldaten im generierten Code erscheinen sollen, vorhandene Daten jeder beliebigen Komplexität einbinden oder in Simulink eingebaute Datentypen ergänzen oder ersetzen.

Folgende Tools unterstützen Sie bei der Erzeugung und Verwaltung von Projektdaten in Simulink:

Custom Storage Class Designer: Gestattet die grafische Erzeugung eigener Definitionen und Deklarationen, mit deren Hilfe sich Datenstrukturen in generierten Code importieren, Daten exportieren, Speicherplatz einsparen oder Standards für den Datenaustausch wie ASAM/ASAP2 automatisch erzeugen lassen.

Simulink Model Explorer: Zeigt alle von Simulink-Modellen und Stateflow®-Diagrammen verwendeten Daten an und bietet veränderbare Darstellungen zur maßgeschneiderten Anpassung der Informationen in einem Data Dictionary Format.

Der Embedded Coder erlaubt den Zugriff auf das ASAP2-Datenaustauschformat aus Simulink® heraus und ermöglicht damit den ASAP2-konformen Export von Modelldaten mit beliebig komplexen Datendefinitionen. Durch Modifikation der integrierten Funktionen lassen sich außerdem jederzeit neue Mechanismen für den Datenaustausch schaffen.

A custom storage class created using the Customer Storage Class Designer.
Diese eigene Speicherklasse wurde mit dem Custom Storage Class Designer erzeugt, dessen intuitives GUI den Entwurf, die Darstellung und die Validierung komplexer Datentypen ermöglicht.

Code-Optimierung und -Packaging

Mit dem Embedded Coder können Sie Funktionsschnittstellen definieren, funktionale Ausdrücke definieren sowie eine Vielzahl von Blöcken optimieren und so die Codegröße zusätzlich verkleinern. Daten können dem generierten Code in Form globaler Daten oder auch als Funktionsargumente übergeben werden. Der Programmcode lässt sich außerdem zu den Blöcken und Signalen des Modells zurückverfolgen, aus dem er generiert wurde.

Mit den Optimierungsoptionen des Embedded Coder für die Codegenerierung aus MATLAB-Code und Simulink-Modellen können Sie:

  • Prozessorspezifischen Code für mathematische Funktionen und Operatoren generieren
  • Code wiederverwenden und damit in existierende oder externe Umgebungen exportieren
  • Unnötigen Programmcode entfernen, der ursprünglich für Initialisierungen, Terminierungen, die Signal-Protokollierung oder die Fehlerbehandlung genutzt wurde
  • Fließkommacode aus Anwendungen entfernen, die ausschließlich mit Integer-Datentypen arbeiten

Für Simulink-Modelle bietet der Embedded Coder zusätzliche Optimierungs- und Konfigurations-Optionen an:

  • Generierung von Code-Varianten mit Makros für die Präprozessor-Kompilierung aus Modellen
  • Speicherung von booleschen Daten und Stateflow-Zuständen in Bitsets
  • Steuerung des Formats aller einzelnen generierten Dateien
  • Festlegung der Art und Weise, wie globale Daten definiert und referenziert werden
  • Festlegung von Inhalt und Platzierung von Kommentaren
MATLAB example of target-specific math extensions and reusable function optimizations.
Simulink example of target-specific math extensions and reusable function optimizations.
MATLAB-Beispiel (links) und Simulink-Beispiel (rechts) für zielsystemspezifische mathematische Erweiterungen und die Optimierung wiederverwendbarer Funktionen. Der Embedded Coder verbessert die Codeeffizienz durch zielsystemspezifische und plattformunabhängige Codeoptimierungen.

Kommentieren, Rückverfolgen und Dokumentieren von Code

Der Embedded Coder bietet eine Reihe von Fähigkeiten zur Untersuchung des aus MATLAB-Dateien und -Funktionen sowie Simulink-Modellen und -Subsystemen generierten Codes. Mit diesen Fähigkeiten können Sie:

  • Codeberichte mit Beschreibungen sämtlicher Module und Konfigurationseinstellungen generieren
  • Die Identifier-Formate für generierte globale Daten, Datentypen und Funktionen steuern
  • MATLAB-Code inklusive der Hilfetexte für Funktionen als Kommentar in generierten Code einbauen

Unter Simulink lassen sich mit dem Embedded Coder außerdem High Level-Anforderungen als Codekommentare mit Links zum Anforderungsdokument einfügen (setzt Simulink Verification and Validation voraus). Codeberichte für die Codegenerierung aus Simulink enthalten eine Beschreibung der Codeschnittstelle, einen Rückverfolgbarkeits-Bericht sowie alle generierten Quelldateien und den gesamten Code. Modelle und generierter Code sind bidirektional miteinander verbunden, wodurch Sie unmittelbar zwischen Codezeilen und den zugehörigen Modellelementen – Subsystemen, Blöcken, MATLAB-Funktionen und -Code sowie Stateflow-Diagrammen und -Übergängen – wechseln können. Durch Klicken auf einen Link wird das entsprechende Modellelement oder die entsprechende Codezeile hervorgehoben und dadurch Code-Reviews und das Debugging erleichtert.

Simulink code generation report highlighting bidirectional traceability between algorithm and implementation.
Dieser Codegenerierungs-Bericht aus Simulink demonstriert die bidirektionale Rückverfolgbarkeit zwischen Algorithmus und Implementierung.

Ausführung und Verifikation von Code

Mit dem Embedded Coder können Sie generierten Code in Ihre spezifische Ausführungsumgebung integrieren.

Unter MATLAB wird der mit dem Embedded Coder generierte Code mit demselben Ausführungsframework ausgeführt wie mit dem MATLAB Coder.

Unter Simulink erweitert der Embedded Coder das vom Simulink Coder bereitgestellte Echtzeit-Ausführungsframework erheblich und ermöglicht die Ausführung mit oder ohne Echtzeitbetriebssystem (RTOS) sowie im Singletasking-, Multitasking- oder asynchronen Modus. Alle Ergebnisse der Codeausführung können außerdem durch SIL-Tests (Software-in-the-Loop) und PIL-Tests (Processor-in-the-Loop) verifiziert werden.

Generieren einer Main-Funktion

Der Embedded Coder erzeugt auf der Grundlage der von Ihnen spezifizierten Implementierungs-Informationen eine erweiterbare Main-Funktion, die exakt auf die jeweilige Echtzeit-Umgebung abgestimmt ist. Mit dieser Funktion können Sie ein vollständig an Ihre Erfordernisse angepasstes ausführbares Programm aus Ihrem Modell erzeugen.

Gruppierung von Taktraten

Der Embedded Coder generiert je nach den im Modell definierten Abtastintervallen Single-Raten- oder Multi-Raten-Code. Bei Multi-Raten-Modellen mit Multitasking-Einstellung wird die Strategie des Rate Grouping verwendet. Hierbei werden separate Funktionen für den Basisraten-Task und jeden einzelnen Subraten-Task im Modell generiert.

Verwendung von IDE-Links und Targets

Für unterstützte IDEs, Mikroprozessoren und Echtzeitbetriebssysteme von Drittanbietern (darunter VxWorks® von Wind River Systems®) kann der generierte Code automatisiert gebaut, geladen, integriert, optimiert und ausgeführt werden.

SIL- und PIL-Tests

Der Embedded Coder automatisiert die Ausführung von generiertem Code in Simulink und ermöglicht dadurch SIL-Tests sowie PIL-Tests auf dem Embedded System. Er verwendet dazu Simulink-Simulationsmodi oder S-Function-Blöcke. Mit Verifikations-APIs für die Codegenerierung lässt sich sowohl die Testausführung als auch der Vergleich von Testergebnissen mit den Simulationsergebnissen des Originalmodells zusätzlich automatisieren. Durch die Integration mit Tools von Drittanbietern lässt sich außerdem die Vollständigkeit der Tests durch Analyse der strukturellen Codeabdeckung messen.

Probieren Sie Embedded Coder

Testsoftware anfordern

Datenmanagement für Model-Based Design und die Generierung von Seriencode

Webinar anzeigen