Embedded Coder

Générer du code C et C++ optimisé pour systèmes embarqués

 

Embedded Coder® génère du code C et C++ lisible, compact et rapide pour les processeurs embarqués utilisés dans la production en grande série. Il permet d'étendre les fonctionnalités de MATLAB Coder™ et Simulink Coder™ en fournissant des optimisations avancées pour un contrôle précis des fonctions, fichiers et données générés. Ces optimisations améliorent l'efficacité du code et facilitent l'intégration avec le code existant, les types de données et les paramètres de calibration. Il est possible d'incorporer un outil de développement tiers pour produire un exécutable en vue d'un déploiement clé en main sur votre système embarqué ou carte de prototypage rapide.

Embedded Coder offre un support intégré pour les normes logicielles AUTOSARMISRA C® et ASAP2. Il fournit également des rapports de traçabilité, une documentation du code et une vérification logicielle automatisée à l'appui d'un développement logiciel DO-178IEC 61508 et ISO 26262. Le code produit par Embedded Coder est portable et peut être compilé et exécuté sur n'importe quel processeur. Embedded Coder offre en complément des support packages avec des optimisations avancées et des pilotes de périphériques pour du hardware spécifique.

Découvrez comment les entreprises génèrent du code de production avec Embedded Coder pour les contrôles, le traitement du signal, le traitement d'images et la Computer Vision, ainsi que les applications de Machine Learning.

En savoir plus :

Configuration pour la génération de code

Pour configurer les paramètres de la génération de code pour Embedded Coder®, vous pouvez utiliser l'app MATLAB Coder pour MATLAB® ou le guide de démarrage rapide d'Embedded Coder pour Simulink. Vous pouvez également configurer chaque paramètre directement avec des commandes et scripts MATLAB.

À partir de l'application MATLAB Coder, vous pouvez :

  • Générer du code pour vos fichiers et fonctions MATLAB
  • Sélectionner votre processeur et votre sortie de génération de code
  • Choisir des optimisations d'Embedded Coder

À partir du guide de démarrage rapide d'Embedded Coder pour Simulink, vous pouvez :

  • Générer du code pour vos modèles et sous-systèmes Simulink
  • Sélectionner votre processeur et votre sortie de génération de code
  • Choisir des optimisations d'Embedded Coder

Utilisation du guide de démarrage rapide d'Embedded Coder pour accélérer la génération du code de production à partir de Simulink.

Sélection des cibles

Embedded Coder a recours à des objets de configuration et des fichiers cibles système pour traduire votre code MATLAB et vos modèles Simulink en code source et en exécutables de qualité production.

Pour MATLAB, vous spécifiez une des cibles de sortie suivantes :

  • MEX-file
  • Librairie statique C/C++
  • Exécutable C/C++

Pour Simulink, vous spécifiez l'une des configurations prêtes à l'emploi, qui incluent :

Cible embarquée temps réel : génère du code ANSI/ISO C, C++ et C++ encapsulé, virgule flottante ou virgule fixe permettant une exécution temps réel efficace sur potentiellement tout processeur de production

Cible AUTOSAR : génère du code C et des interfaces run-time qui supportent le développement de composants logiciels AUTOSAR (nécessite AUTOSAR Blockset)

Cible librairie partagée : génère une version librairie partagée de votre code pour une exécution sur plateforme hôte, sous forme de librairie dynamique (.dll) Windows® ou d'objet partagé (.so) UNIX®

MathWorks et des tiers offrent par ailleurs des produits complémentaires MATLAB qui étendent les capacités d'Embedded Coder pour supporter du hardware spécifique, comme ARM®, Intel®, NXP™, STMicroelectronics® et Texas Instruments™.

Utilisation de support packages hardware pour déployer rapidement le code généré sur les dispositifs embarqués.

Utilisation de données personnalisées

Embedded Coder vous permet de définir et de contrôler l'apparence des données du modèle dans le code généré afin de faciliter l'intégration logicielle.

Pour le code MATLAB, Embedded Coder supporte toutes les définitions de données de MATLAB Coder, y compris les objets virgule fixe et les classes de stockage prédéfinies.

Pour les modèles Simulink, Embedded Coder supporte les capacités de spécification et les dictionnaires de données suivants :

Embedded Coder Dictionary : vous permet d'afficher et de personnaliser les définitions de code, y compris les interfaces de fonction, les classes de stockage et les sections de mémoire

Objet de données Simulink : fournit des classes de stockage prédéfinies, par exemple constant, volatile, exported global, imported global, directive define, structure, champ de bits (structure de bits, notamment) et accès avec les méthodes get et set

Objet de données de packaging de module : fournit des attributs préconfigurés pour les objets de données avancées généralement employés dans une production en série, comme les segments de mémoire permettant de calibrer ou d'ajuster les tables de recherche

Type de données utilisateur : permet de créer des types abstraits pour les données complexes permettant un contrôle précis de l'apparence des données du modèle dans le code généré, un interfaçage avec les données existantes, ainsi que l'augmentation ou le remplacement de types Simulink prédéfinis

Embedded Coder vous donne accès aux fichiers d'échange de données ASAP2 dans Simulink, ce qui vous permet d'exporter les données des modèles comportant des définitions de données complexes avec la norme ASAP2. Vous pouvez modifier les fonctionnalités intégrées pour produire d'autres mécanismes d'échange de données.

Utilisation d'Embedded Coder Dictionary pour définir et contrôler l'apparence des modèles et des données dans le code généré.

Optimisation et packaging du code

Embedded Coder vous permet de contrôler les interfaces des fonctions, de préserver des expressions et d'appliquer des optimisations à des blocs multiples pour réduire davantage la taille du code. Les données sont échangées avec le code généré par le biais de variables globales ou d'arguments de fonction. Vous pouvez remonter du code généré jusqu'aux blocs et aux signaux de votre modèle.

Les options d'Embedded Coder pour la génération de code à partir de code MATLAB et des modèles Simulink vous permettent de :

  • Générer un code spécifique à un processeur pour les opérateurs et fonctions mathématiques
  • Réutiliser le code pour l'exportation dans des environnements existants ou externes
  • Éliminer le code superflu pour l'initialisation, la terminaison, la journalisation et le traitement des erreurs
  • Supprimer le code virgule flottante des applications utilisant uniquement des types entiers

Des options d'optimisation et de configuration Embedded Coder supplémentaires sont proposées pour les modèles Simulink, vous permettant de :

  • Générer des variants de code avec des macros de compilation préprocesseur
  • Contrôler le format de chaque fichier généré
  • Déterminer les critères de définition et de référencement des données globales
  • Spécifier le contenu et le positionnement des commentaires

Génération de code SIMD à partir d'un modèle Simulink.

Commentaires, suivi et documentation du code

Embedded Coder offre plusieurs options pour examiner le code généré depuis vos fichiers et fonctions MATLAB ou vos modèles et sous-systèmes Simulink. Avec ces fonctionnalités, vous pouvez :

  • Générer un rapport de code décrivant les modules de code, les interfaces de fonction et les métriques de code statique
  • Contrôler les formats des identificateurs pour les fonctions, types de données et données globales générées
  • Inclure du code MATLAB en commentaires du code généré, notamment le texte de documentation des fonctions

Avec Simulink, Embedded Coder permet également d'insérer des exigences de haut niveau sous forme de commentaires dans le code généré avec des liens vers la source des exigences (nécessite Simulink Requirements™). Le rapport de code pour la génération de code Simulink comprend également une description de l'interface du code, un rapport de traçabilité et l'affichage du code et des fichiers source générés. Des liens bidirectionnels existent entre le modèle et le code généré, ce qui facilite la navigation entre chaque ligne de code et son élément de modèle Simulink correspondant, par exemple les sous-systèmes, blocs, code et fonctions MATLAB, transitions et états Stateflow®.

Rapport de génération de code Simulink mettant en évidence la traçabilité entre algorithme et implémentation.

Exécution et vérification du code

Embedded Coder vous permet d'incorporer du code généré dans votre environnement d'exécution de code.

Avec MATLAB, le code généré à partir de Embedded Coder s'exécute avec le même environnement d'exécution que celui fourni par MATLAB Coder.

Avec Simulink, Embedded Coder étend de manière significative l'environnement d'exécution temps réel fourni par Simulink Coder. Par défaut, le code peut être exécuté avec ou sans système d'exploitation temps réel (RTOS), en mode monotâche, multitâches, multicœurs ou asynchrone. Vous pouvez également vérifier les résultats de l'exécution du code avec Embedded Coder pour les tests SIL (Software-in-the-loop) et PIL (Processor-in-the-loop). Simulink Test™ et Simulink Coverage contribuent à automatiser l'exécution des tests, la comparaison des résultats et l'analyse de la couverture. L'analyse du profilage de l'exécution du code est également supportée.

Génération d'un programme principal

Embedded Coder génère un programme principal extensible en fonction de l'information fournie pour le déploiement du code dans votre environnement temps réel. Cette fonctionnalité vous permet de générer et de créer un exécutable personnalisé complet à partir de votre modèle.

Exécution de code multicadencé, multitâche et multicœur

Embedded Coder génère du code monocadencé ou multicadencé en fonction des pas d'échantillonnage périodiques spécifiés dans le modèle. Pour les modèles multicadencés et multitâches, il a recours à une stratégie appelée groupage de taux d’échantillonnage qui génère des fonctions distinctes pour la tâche dans le taux de base et pour chaque tâche dans les sous-taux du modèle. Vous pouvez également utiliser la modélisation Simulink Concurrent Execution pour produire du code multithreadé pour le traitement multicœurs.

Exécution de tests SIL et PIL

Embedded Coder automatise l'exécution du code généré dans Simulink pour les tests SIL ou sur la cible embarquée pour des tests PIL avec des blocs S-function ou des modes de simulation Simulink. Simulink Test™ aide à automatiser l'exécution des tests et la comparaison des résultats des tests et de la simulation à partir du modèle original. Vous pouvez exécuter une analyse de couverture structurelle du code afin de mesurer l'exhaustivité des tests grâce à Simulink Coverage ou à l'intégration à des outils tiers. L'analyse de profilage du code fournit le temps d'exécution sur le processeur hôte ou cible.

Exécution de tests software-in-the-loop (SIL) et processor-in-the-loop (PIL) sur le code généré par Embedded Coder.

Nouveautés

Support de la bibliothèque de remplacement de code FFT pour ARM

Générez du code optimisé pour la transformée de Fourier rapide (FFT) en utilisant des bibliothèques de remplacement de code pour les processeurs ARM Cortex-A et Cortex-M

Réduction des copies de données

Générez du code avec un nombre réduit de copies de données pour les blocs Data Store Memory qui stockent de grandes structures de bus au sein des sous-systèmes et à travers les frontières des modèles référencés

Tableaux multidimensionnels optimisés

Réduisez la mémoire en réutilisant des buffers pour les tableaux multidimensionnels qui préservent les dimensions

Opérateurs binaires

Réduisez la ROM en générant des opérateurs binaires à partir des blocs d’opérateurs logiques

Fonctions d’Image Processing Toolbox multithreadées

Augmentez la vitesse d’exécution en générant du code pour les fonctions d’Image Processing Toolbox avec des capacités de multithreading

Vectorisation SIMD pour les boucles

Utilisez des intrinsèques SIMD afin de vectoriser les boucles et les tableaux pour les processeurs Intel et ARM

Calibration et surveillance avec des outils XCP et tiers

Générez du code qui supporte le réglage des paramètres et la surveillance des signaux par l’intermédiaire d’un canal de communication XCP ASAM MCD-1 et d’outils de calibration tiers tels qu’ETAS INCA et Vector CANape

Consultez les notes de version pour en savoir plus sur ces fonctionnalités et les fonctions correspondantes.

Coder Summit

Assistez à des présentations par des ingénieurs d'application et des équipes de développement sur les nouvelles fonctionnalités pour la conception de logiciels, la génération de code embarqué et bien plus encore.