View the site in Français Site displayed in English (USA) View the site in English (GB)
You are here: ac6 > ac6-formation > Languages > Embedded C++ programming

L3 Embedded C++ programming

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

Objectifs
bullet_jaune_1 Maîtriser les bases du langage C++
bullet_jaune_1 Découvrir la spécification Embedded C++ (EC++)
bullet_jaune_1 Intégrer les templates C++ (code générique) dans les systèmes embarqués
bullet_jaune_1 maîtriser les aspects avancés du C++ tels que le polymorphisme, l'héritage simple et l'héritage multiple
bullet_jaune_1 Redéfinir les opérateurs C++ d'allocation dynamique de mémoire pour l'embarqué
bullet_jaune_1 Rendre les objets C++ persistants flashables et romables
bullet_jaune_1 Gérer les situations d'exceptions C++ pour sécuriser les applications embarquées
bullet_jaune_1 manager des interruptions de timer en C++
bullet_jaune_1 Utiliser des objets C++ pour gérer la transmission/réception série de chaînes de caractères
Matériel
bullet_jaune_2 Un PC
bullet_jaune_2 une carte cible avec un microcontrôleur STR912FA (coeur ARM)
bullet_jaune_2 une sonde JTAG Lauterbach pour le Debug
bullet_jaune_2 Le développement se fait sur Eclipse avec GCC
bullet_jaune_2 Le débogage se fait avec Trace32
bullet_jaune_2 Un support de cours ainsi que les solutions des exercices
Pré-requis
bullet_jaune_2 Connaissance du langage C (niveau stage L2)

Outline
Introduction au C++ pour l'industrie
bullet_jaune_2 Introduction à la programmation orientée objet
bullet_jaune_2 historique et définition
bullet_jaune_2 la couche C+ : passage du C vers le C++
bullet_jaune_2 spécification Embedded C++ ( EC++)
bullet_jaune_2 comment écrire du code optimisé pour l'embarqué
Le C++ et l'embarqué
bullet_jaune_2 les outils de cross développement pour l'embarqué
bullet_jaune_2 maîtriser les différentes sections mémoire des applications embarquées
bullet_jaune_2 analyser les fichiers d'organisation de mapping mémoire
bullet_jaune_2 l'encapsulation
bullet_jaune_2 classes, objets
bullet_jaune_2 attributs et fonctions membres
bullet_jaune_2 construction et destruction d'objets
bullet_jaune_2 paramètres de construction
bullet_jaune_2 constructeur de copie
bullet_jaune_2 la composition et la containérisation d'objets
bullet_jaune_2 scope de visibilité
bullet_jaune_2 la surcharge des opérateurs
bullet_jaune_3 optimisation des passages d'objets en paramètres
bullet_jaune_3 surcharge des opérateurs par des fonctions membres
bullet_jaune_3 surcharge des opérateurs par des fonctions amies
bullet_jaune_3 surcharge des opérateurs de gestion mémoire
bullet_jaune_2 les objets romables et persistants
bullet_jaune_3 objets constants et partiellement constants
bullet_jaune_3 objets persistants
bullet_jaune_3 objets romables
bullet_jaune_2 les objets génériques et les templates
bullet_jaune_3 classes et fonctions génériques
bullet_jaune_3 surcharge de templates
bullet_jaune_3 spécialisation de templates
bullet_jaune_3 STL (Standard Template Library)
bullet_jaune_3 utilisation de templates dans l'embarqué
Exercice : prise en main des outils de cross développement
Exercice : modélisation de périphériques
Exercice : gestion de fifos
Exercice : définition de fifos génériques
Les techniques avancées du C++
bullet_jaune_2 le flux d'E/S
bullet_jaune_3 flux standard du langage C++
bullet_jaune_3 flux standard des librairies C++ standard
bullet_jaune_3 technique de redirection des flux d'E/S standard par amitié
bullet_jaune_2 objets polymorphes
bullet_jaune_2 objets virtuels et classes abstraites
bullet_jaune_2 spécialisation des objets par héritage simple
bullet_jaune_3 construction d'objets dérivés
bullet_jaune_3 règle de contrôle d'accès des objets hérités
bullet_jaune_3 spécialisation des objets par Héritage multiple
bullet_jaune_3 résolution des conflits par opérateur de résolution de portée
bullet_jaune_3 intérêt de l'héritage virtuel
bullet_jaune_2 sécurité grâce aux exceptions dans l'embarqué
bullet_jaune_3 mots clefs du langage et leur mise en œuvre
bullet_jaune_3 lancement, capture et traitement d'exceptions
bullet_jaune_3 redéclenchement d'exception
bullet_jaune_3 spécification d'exceptions
bullet_jaune_3 traitement d'exceptions inattendues
bullet_jaune_3 objets exceptions de la librairie standard C++
Exercice : redirection des flux standard sur l'UART
Exercice : modélisation de drivers de périphériques en C++
Exercice : gestion d'erreurs centralisée et décentralisée
Exercice : gestion d'exceptions inattendues
C++ dans les systèmes embarqués
bullet_jaune_2 Mécanismes des interruptions vectorisées et autovectorisées
bullet_jaune_2 contrôleur d'interruption du STR912FA
bullet_jaune_2 Timers du STR912FA
bullet_jaune_2 UARTs du STR912FA
bullet_jaune_2 Classes interruption
bullet_jaune_2 Classe UART
Exercice : Développement d'un gestionnaire d'interruptions en C++
Exercice : Développement d'un contrôleur d'UART en C++