Embedded Coder

Générer du code C et C++ optimisé pour les 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 apportant 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 compiler un exécutable pour 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 AUTOSAR, MISRA C® et ASAP2. Il offre également des rapports de traçabilité, la documentation du code et une vérification logicielle automatisée pour supporter les processus de développement logiciel DO-178, IEC 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 systèmes de contrôle, de traitement du signal, de traitement d'images et de Computer Vision, et pour 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'application 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

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

Sélectionner les cibles

Embedded Coder utilise 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 :

  • Fichier MEX
  • Librairie statique C/C++
  • Exécutable C/C++

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

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

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

Travailler avec des 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 fonctionnalité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, notamment les interfaces de fonction, les classes de stockage et les sections de mémoire

Objet de données Simulink : offre 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 : offre des attributs préconfigurés pour les objets avancés de donné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 lookup tables

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.

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

Optimiser et packager le code

Embedded Coder vous permet de contrôler les interfaces des fonctions, de préserver des expressions et d'appliquer des optimisations à de nombreux blocs 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 de 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, le logging et la gestion 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 statiques
  • 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écuter et vérifier le 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érer une fonction main()

Embedded Coder génère une fonction main() 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écuter du code multi-échantillonné, multitâches et multicœurs

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

Effectuer des 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 avec des outils tiers. L'analyse de profilage du code fournit le temps d'exécution sur le processeur hôte ou cible.

Exécuter des 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

Regardez les présentations 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.