+ +
- -
Systèmes d'Exploitation
Calendrier  Détails
Programmation
 
Calendrier  Détails
Processeurs ARM
 
Calendrier  Détails
Processeurs PowerPC
 
 
 
 
Calendrier  Détails
Communications
 
 
Calendrier  Détails
+ +
> >
- -

Dernières Nouvelles

Webinaire Linux Embarqué avec System Workbench for Linux sur SoC STMicroelectronics STM32MP1 (gratuit)

Contrôle moteur par des gestes avec System Workbench for Linux sur un MCU STM32MP1 (présentation vidéo)

 
ac6 >> ac6-training >> Programmation >> Langages >> C++ embarqué Télécharger le catalogue Télécharger la page Ecrivez nous Version imprimable

L3 C++ embarqué

Le langage C++ pour les systèmes embarqués

formateur
Objectifs
  • Maîtriser les bases du langage C++
  • Intégrer les templates C++ (code générique) dans les systèmes embarqués
  • Maîtriser les aspects avancés du C++ tels que le polymorphisme, l'héritage simple et l'héritage multiple
  • Redéfinir les opérateurs C++ d'allocation dynamique de mémoire pour l'embarqué
  • Rendre les objets C++ persistants flashables et romables
  • Gérer les situations d'exceptions C++ pour sécuriser les applications embarquées
  • Utiliser des objets C++ pour gérer la transmission/réception série de chaînes de caractères
  • Découvrir les fonctionnalités du C++ moderne
Matériel
  • Matériel de cours imprimé
  • Un PC par binôme
  • Carte STM32F4 - ARM Cortex M4
  • Environnement de développement Eclipse et compilateur GCC
Pré-requis

Premier jour
Introduction au C++ pour l'industrie
  • Introduction à la programmation orientée objet
  • Historique et définition
  • Overview C++98/C++03/C++11/C++14/ C++17
  • Objectifs de C++ Moderne
  • La couche C+ : passage du C vers le C++
  • Spécification Embedded C++ ( EC++)
  • Comment écrire du code optimisé pour l'embarqué
Exercise :  Comprendre l'encodage des noms de fonctions (function mangling)
Exercise :  Fonction inline
Exercise :  Gestion des variables volatiles
Le C++ et l'embarqué
  • Programmation objet en C++
    • Encapsulation
    • Classes et objets
    • Attributs et fonctions membres
    • Construction et destruction d'objets
    • Paramètres de construction
    • Paramètres de construction
    • Composition et la containérisation d'objets
    • Visibilité et portée des déclarations
Exercise :  Déclaration de classes et de méthodes
Exercise :  Les constructeurs par défaut, de copie et paramètrisés
Exercise :  Comprendre les différences entre composition et agrégation
Second jour
Le C++ et l'embarqué
  • Surcharge des opérateurs
    • Optimisation des passages d'objets en paramètres
    • Surcharge des opérateurs par des fonctions membres
    • Surcharge des opérateurs par des fonctions « friend »
    • Surcharge des opérateurs de gestion mémoire
Exercise :  L'opérateur d'affectation
Exercise :  Surcharge des opérateurs
  • Héritage simple
    • Spécialisation par addition et substitution
    • Règles de dérivation et d'accès
    • Construction pendant l'héritage
    • Le polymorphisme
    • Méthodes Virtuelles
Exercise :  Comprendre l'héritage
  • Objets ROMables et persistants
    • Objets constants et partiellement constants
    • Objets persistants
    • Objets ROMables
Exercise :  Création d'objets constants, mutables, persistants et ROMables
  • Renforcement de la sécurité avec des exceptions
    • Lancement, capture et traitement d'exceptions
    • Redéclenchement d'exception
    • Spécification d'exceptions
    • Traitement d'exceptions inattendues
    • Objets exceptions de la librairie standard C++
Exercise :  Gestion des erreurs avec des exceptions
Exercise :  Gestion d'exceptions inattendues
Troisième jour
Les techniques avancées du C++
  • Le flux d'E/S
    • Flux standard du langage C++
    • Flux standard des librairies C++ standard
    • Technique de redirection des flux d'E/S standard par amitié
Exercise :  Redéfinition des opérateurs ‘<<’ et ‘>>’ lire/écrire des objets depuis un flot d'entrées-sorties
  • Pointeurs membres
  • Objets génériques et templates
    • Classes et fonctions génériques
    • Surcharge de templates
    • Spécialisation de templates
    • STL (Standard Template Library)
    • Utilisation de templates dans l'embarqué
Exercise :  Classes et fonctions génériques
  • Objets polymorphes
  • Objets virtuels et classes abstraites
  • Spécialisation des objets par héritage simple
    • Construction d'objets dérivés
    • Règle de contrôle d'accès des objets hérités
    • Spécialisation des objets par Héritage multiple
    • Résolution des conflits par opérateur de résolution de portée
    • Intérêt de l'héritage virtuel
Exercise :  Comprendre l'utilisation des méthodes virtuelles en dérivant une classe Device générique
Exercise :  Comprendre l'héritage multiple et les bases virtuelles
Eléments de la chaine de compilation
  • Utilisation de la compilation croisée
  • Objectif du compilateur, de l’assembleur et de l'éditeur de liens
  • Consulter les différentes sections du fichier objet
  • Fichier de démarrage « Startup »
  • Options du compilateur GCC
  • Configuration de l’éditeur de liens
  • Makefile
Quatrième jour
C++ moderne
  • Introduction
    • Mot-clé auto
    • Initialisation uniforme
    • Range-based for loops
    • Fonctions par défaut et supprimées
Exercise :  Testez les différentes utilisations de "auto"
  • Lambdas
    • Syntaxe de lambda
    • Utilisation de lambda avec des algorithmes standard
    • Lambda récursif
Exercise :  comprendre la fonction lambda
  • Nouveaux mots-clés
    • nullptr, static_assert, noexcept
    • constexpr, if constexpr, decltype
  • Bibliothèque standard
    • std::optional, std::any, std::byte
    • Conversion entre types numériques et types de chaîne
    • Bibliothèque de système de fichiers
  • Littéraux
    • Littéraux « Raw » et « Cooked »
    • Opérateurs littéraux standard
    • Littéraux Raw string
  • Alignement
    • alignas
    • alignof
  • Pointeurs intelligents
    • Raw Pointers vs Smart Pointers
    • Shared Pointers, Weak Pointers, Unique Pointers
    • Make unique
  • Concurrence and Multithreading
    • La classe Thread
    • Mutex
Exercise :  comprendre les pointeurs intelligents
Annexe
Architecture Cortex-M
  • Aperçus de l'architecture Cortex-M
    • Deux pointeurs de piles
    • Différents modes de fonctionnement et niveaux privilégiés
    • Présentation de la MPU
    • Description du timer Systick
  • Aperçu du mécanisme d’exception / d’interruption
    • Interruption de l'entrée et du retour
    • Présentation des interruptions : SVC / PendSV / Systick
Exercise :  Gestion des interruptions sur Cortex-M4