Descriptif
L’objectif de ce cours est de familiariser les élèves aux concepts spécifiques au développement logiciel dans le contexte d’un système embarqué et/ou temps réel. Il s’agit d’un cours très orienté sur la pratique concrète de la programmation multitâches abordant des problématiques temps réel et/ou embarquées ainsi que les questions liées à l’interaction entre matériel et logiciel. Le cours comprends un 1er volet introduisant les notions fondamentales mapping mémoire, de tâche, de mutex et de condition et leur implémentation sous la forme de l’API Posix au sein d’un Linux embarqué à noyau préemptible. Un 2e volet étend ces notions au contexte de la programmation orientée objets. Des objets de plus haut niveau tels que les sémaphores, les conteneurs thread-safe et les objets actifs sont également traités dans la partie finale du cours.
Les séances sont des cours magistraux très interactifs émaillés d’exercices pratiques permettant un apprentissage concret. Les travaux de programmation en C sont tous basés sur l’API Posix.
Objectifs pédagogiques
2) Être capable d’écrire en C un programme comportant plusieurs tâches simples effectuant des accès concurrents à des structures de données partagées.
3) Savoir programmer en C les problématiques de gestion du temps dans une cible embarquée et/ou temps-réelle.
4) Savoir comment implémenter en C++ des classes de haut niveau encapsulant les concepts fondamentaux de la programmation multitâches.
5) Pouvoir concevoir une architecture multitâches orientée objets en C++ en réponse à un problème faisant intervenir des objets concrets en interaction.
- Cours d'improvisation et théatre : 28
effectifs minimal / maximal:
10/30Diplôme(s) concerné(s)
Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
1. Voie SIS
2. Programmation C, Notions d'électronique numérique, Notions de
programmation orientée objet (C++, Java)
Applications & débouchés:
==========================
Bureaux d'étude et développement de systèmes
embarqués, Génie logiciel appliqué aux développements de systèmes temps réel
/ embarqués, Conception d'architecture de systèmes matériels/logiciels
(aéronautique, automobile)
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Vos modalités d'acquisition :
- le rattrapage est obligatoire si :
- Note initiale < 6
- le rattrapage peut être demandé par l'étudiant si :
- 6 ≤ note initiale < 10
- Crédits ECTS acquis : 1.5 ECTS
Le coefficient de l'UE est : 1
La note obtenue rentre dans le calcul de votre GPA.
L'UE est évaluée par les étudiants.
Programme détaillé
Séance 1/8 : Familiarisation avec les concepts fondamentaux associés à l’interaction entre matériel et logiciel : mapping mémoire, interruption matérielle, représentations et opérations binaires, endianité, principes de contrôle/commande.
Séance 2/8 : Architecture électronique d’un CPU, principes d’un OS multitâches préemptif, OS temps réel, représentation, analyse et programmation des problématiques temporelles dans les séquences d’exécution multitâches.
Séance 3/8 : Programmation multitâches de base en C avec pthreads et mutex de l’API Posix. Spécificités de l’ordonnancement de tâches temps réel et problématiques spécifiques aux contraintes temporelles.
Séance 4/8 : Types de tâches dans un système « réactif », liens avec les notions de « condition » et d’appel bloquant.
Séance 5/8 : Principes de bases d’une architecture multitâches orientée objets. Mise en œuvres en C++ des concepts de base.
Séance 6/8 : Programmation de sémaphores et de conteneurs orientés objets en environnement multitâches.
Séance 7/8 : Programmation d’un objet actif et conception d’une architecture logicielle à base d’objets actifs.
Séance 8/8 : Contrôle QCM + exercices sur station de travail.