Embedded Coder

Generieren von C und C++ Code, der für Embedded Systeme optimiert ist

 

Embedded Coder® erzeugt lesbaren, kompakten und schnellen C und C++ Code für Embedded Prozessoren, die in der Massenproduktion eingesetzt werden. Das Tool erweitert MATLAB Coder™ und Simulink Coder™ um hochentwickelte Optimierungen, die eine differenzierte Steuerung der generierten Funktionen, Dateien und Daten ermöglichen. Diese Optimierungen verbessern die Codeeffizienz und erleichtern die Integration mit Legacy-Code, vorhandenen Datentypen sowie vorhandenen Kalibrierparametern. Embedded Coder unterstützt außerdem die Einbindung von Drittanbieter-Entwicklungstools und ermöglicht dadurch die Erstellung einsatzfertiger Executables für Ihr Embedded System oder Ihre Rapid-Prototyping-Hardware.

Embedded Coder bietet integrierte Unterstützung für die Softwarestandards AUTOSAR, MISRA C® und ASAP2. Außerdem bietet es Rückverfolgbarkeitsberichte, Code-Dokumentation und automatisierte Software-Verifikation zur Unterstützung der Software-Entwicklung nach DO-178, IEC 61508 und ISO 26262. Code von Embedded Coder ist plattformunabhängig und kann mit jedem Prozessor kompiliert und ausgeführt werden. Darüber hinaus bietet Embedded Coder Support-Pakete mit erweiterten Optimierungen und Gerätetreibern für spezifische Hardware.

Erfahren Sie, wie Unternehmen mit Embedded Coder Produktionscode für Steuerungen, Signalverarbeitung, Bildverarbeitung und Computer Vision und Machine Learning generieren.

Erste Schritte:

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-Schnellstart 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 und 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-Schnittstellen für die Entwicklung von AUTOSAR-Softwarekomponenten (erfordert AUTOSAR-Blockset)

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 benutzerdefinierten 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 Speicherabschnitten

Simulink-Datenobjekt: Bietet vordefinierte Speicherklassen, einschließlich konstante, flüchtige, global exportierte, global importierte, Definition von Direktive, Struktur, Bitfeld (einschließlich bit-gepackter Struktur) und Zugriffsmethoden zum Abrufen und Festlegen

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 (erfordert Simulink Requirements™). 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.

Dieser Codegenerierungs-Bericht aus Simulink demonstriert die bidirektionale Rückverfolgbarkeit zwischen Algorithmus und Implementierung.

Ausführung und Verifizierung 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. Simulink Test™ und Simulink Coverage helfen bei der Automatisierung von Testausführung, Ergebnisvergleich und Coverage-Analyse. Die Analyse von Codeausführungsprofilen wird ebenfalls unterstützt.

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 Multicore-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 Multithread-Code für die Mehrkern-Verarbeitung zu erstellen.

SIL- und PIL-Tests

Embedded Coder automatisiert die Ausführung des generierten Codes in Simulink für SIL-Tests oder auf dem Embedded Target für PIL-Tests unter Verwendung von Simulink-Simulationsmodi oder S-Funktionsblöcken. Simulink Test™ hilft bei der Automatisierung der Testausführung und beim Vergleich der Testergebnisse 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.

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.

Neueste Funktionen

Unterstützung des FFT Code Replacement Archivs für den Arm:

Erzeugen optimierten Codes für schnelle Fourier-Transformation (FFT) mit Codeersetzungsbibliotheken für Prozessoren der Typen Arm Cortex-A und Cortex-M

Weniger Datenkopien

Erzeugen von Code mit weniger Datenkopien für Data-Store-Speicherblöcke, die große Bus-Strukturen in Untersystemen und über Grenzen von Modellreferenzen hinweg speichern

Optimierte multidimensionale Arrays

Geringere Speichernutzung durch erneute Verwendung von Puffern für multidimensionale Arrays, die die Dimensionen erhalten

Bitweise Operatoren

Weniger ROM durch Erzeugung bitweiser Operatoren aus logischen Operatorblöcken

Multithread-Funktionen der Image Processing Toolbox

Schnellere Ausführung durch Erzeugung von Code für Funktionen der Image Processing Toolbox mit Multithread-Kapazitäten

SIMD-Vektorisierung für Schleifen

Nutzung von SIMD-Intrinsics zur Vektorisierung von Schleifen und Arrays für Intel- und ARM-Prozessoren

Kalibrierung und Überwachung durch XCP und Tools von Drittanbietern:

Erzeugen von Code, der Parameteroptimierung und Signalüberwachung mittels ASAM MCD-1 XCP Kommunikationskanal und Kalibrierungs-Tools wie ETAS INCA und Vector CANape unterstützt

Details zu diesen Features und den zugehörigen Funktionen finden Sie in den Versionshinweisen.

Coder Summit

Sehen Sie sich an, wie technische Experten und Entwicklungsmitarbeiter neue Funktionen für die Softwareentwicklung, die Generierung von Embedded Code und vieles mehr präsentieren.