Hauptmerkmale

  • Optimierungs- und Codekonfigurationsoptionen zur Erweiterung von MATLAB Coder™ und Simulink Coder™
  • Ermöglicht die Definition von Speicherklassen, Typen und Aliasen mithilfe von Data Dictionaries
  • Ermöglicht die Ausführung in Multiraten-, Multitasking- und MehrkernMulticore-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
  • Unterstützt zentrale Standards wie ASAP2, AUTOSAR, DO-178, IEC 61508, ISO 26262 und MISRA C® (mit Simulink®)
  • Erweiterte Codeoptimierungen und Gerätetreiber für spezifische Hardware, einschließlich ARM®, Intel®, NXP™, STMicroelectronics® und Texas Instruments™

Ein Motorsteuerungsmodell mit generiertem Produktionscode und der Möglichkeit der Simulation für die SIL- oder PIL-Ausführung. Mit dem Embedded Coder generieren, dokumentieren und testen Sie in kürzester Zeit Code für eingebettete Systeme in Produktionsumgebungen.


Konfiguration für die Codegenerierung

Um Einstellungen für die Codegenerierung für Embedded Coder® zu konfigurieren, verwenden Sie die MATLAB Coder-App für MATLAB® oder den Embedded Coder-Schnellstart für Simulink. Alternativ dazu können alle Einstellungen auch mithilfe von MATLAB-Befehlen und -Skripten festgelegt werden.

Von der MATLAB Coder-App aus können Sie:

  • Code aus MATLAB-Dateien und -Funktionen generieren
  • Ihren Prozessor und die Ausgabe der Codegenerierung wählen
  • Optimierungen für Embedded Coder wählen
  • Vom Embedded Coder- Quick Start für Simulink aus können Sie:

  • Code aus Simulink-Modellen und einzelnen Subsystemen generieren
  • Ihren Prozessor und die Ausgabe der Codegenerierung wählen
  • Wählen, ob Embedded Coder im Hinblick auf RAM oder Ausführungsgeschwindigkeit optimiert

Verwenden des Embedded Coder-Schnellstarts, um die Generierung von Produktionscode aus Simulink zu beschleunigen.


Auswählen von Targets

Embedded Coder verwendet Konfigurationsobjekte und System Target-Dateien, um Ihren MATLAB-Code und Ihre Simulink-Modelle in Quellcode und Programmdateien in Produktionsqualität zu übersetzen.

Für MATLAB stehen die folgenden Target-Formate als Ausgabe zur Auswahl:

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

Für Simulink stehen die folgenden einsatzfertigen Konfigurationen zur Auswahl:

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

Außerdem bieten MathWorks und Drittanbieter MATLAB-Add-Ons an, die Embedded Coder für die Unterstützung spezifischer Hardware erweitern, einschließlich ARM®, Intel®, NXP™, STMicroelectronics® und Texas Instruments™.

Verwendung von Hardware-Support-Paketen, um generierten Code schnell auf eingebetteten Geräten bereitzustellen.


Arbeiten mit angepassten Daten

Mit Embedded Coder können Sie definieren und steuern, wie die Modelldaten später im generierten Code angezeigt werden.

Für MATLAB-Code unterstützt Embedded Coder sämtliche Datendefinitionen von MATLAB Coder, darunter Festkommaobjekte und vordefinierte Speicherklassen.

Für Simulink-Modelle unterstützt Embedded Coder folgende Data-Dictionary- und Spezifikationsfunktionalitäten:

Embedded Coder Dictionary: Ermöglicht die Anzeige und Anpassung von Codedefinitionen einschließlich Funktionsschnittstellen, Speicherklassen und Arbeitsspeicherabschnitten.

Simulink-Datenobjekte: Ermöglichen angepasste Speicherklassen wie const, volatile, exported global, imported global, #define, structure und bitfield (gepackte Bit-Struktur) sowie get- und set-Zugriffsmethoden.

Module Packaging-Datenobjekte: 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.

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.

Verwendung von Embedded Coder Dictionary, um zu definieren und zu steuern, wie die Modelle und Daten später im generierten Code angezeigt werden.


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 von 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 Codevarianten mit Makros für die Präprozessor-Kompilierung aus Modellen
  • 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

SIMD-Codegenerierung aus Simulink-Modellen.


Kommentieren, Rückverfolgen und Dokumentieren von Code

Embedded Coder bietet eine Reihe von Fähigkeiten zur Untersuchung generierten Codes für Ihre MATLAB-Dateien und -Funktionen oder Ihre Simulink-Modelle und -Subsysteme. Mit diesen Fähigkeiten können Sie:

  • Codeberichte mit Beschreibungen sämtlicher Codemodule, Funktionsschnittstellen und Metriken für statischen Code 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

In Simulink lassen sich mit Embedded Coder außerdem High Level-Anforderungen als Codekommentare mit Links zum Anforderungsdokument einfügen (setzt Simulink Requirements™ 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 Simulink-Modellelementen – Subsystemen, Blöcken, MATLAB-Funktionen und -Code sowie Stateflow®-Diagrammen und -Übergängen – wechseln können. Durch Klicken auf einen Link werden das entsprechende Modellelement oder die entsprechende Codezeile hervorgehoben und dadurch Code-Reviews und das Debugging erleichtert.

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.

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

In Simulink erweitert Embedded Coder das von Simulink Coder bereitgestellte Echtzeit-Ausführungsframework erheblich. Standardmäßig ist die Ausführung mit oder ohne Echtzeitbetriebssystem (RTOS) sowie im Singletasking-, Multitasking-, Mehrkern- oder asynchronen Modus möglich. 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.

Durchführung von SIL-Tests (Software-in-the-Loop) und PIL-Tests (Processor-in-the-Loop) für Code, der mit Embedded Coder generiert wurde.


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.


Ausführung von Multiraten-, Multitasking- und Mehrkern-Code

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. Sie können auch die Modellierung der nebenläufigen Ausführung mit Simulink nutzen, um Multithreading-Code für die Multicore-Verarbeitung zu erstellen.


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 eingebetteten System. Er verwendet dazu Simulink-Simulationsmodi oder S-Function-Blöcke. Simulink TestTM erleichtert die Automatisierung der Testausführung und des Vergleichs von Testergebnissen mit den Simulationsergebnissen des Originalmodells. Analysen der strukturellen Codeabdeckung zur Messung der Vollständigkeit der Tests können mit Simulink Coverage oder durch Integration mit Tools von Drittanbietern durchgeführt werden. Code-Profiling-Analysen zeigen die Ausführungszeit auf Host- oder Target-Prozessoren.