+ +
- -
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
+ +
> >
- -

 
ac6 >> ac6-formation >> 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