Site affiché en Français Voir le site en Anglais (USA) Voir le site en Anglais (GB)
Vous êtes ici: ac6 > ac6-formation > Temps réel > Les projets temps réel
Télécharger le catalogue
Télécharger le catalogue
Télécharger la page
Télécharger la page
Ecrivez nous
Ecrivez nous
Version imprimable
Version imprimable
 

L70 Les projets temps réel

Conduire un projet temps réel embarqué en C, C++ ou Java(TM).

Java est une marque déposée de Sun Microsystems

formateur
Objectifs
bullet_jaune_1 Découvrir les concepts de base du multi-tâches et du temps réel
bullet_jaune_1 Découvrir la méthode de conception temps-réel UML-RT
bullet_jaune_1 Comprendre le fonctionnement d’une chaîne de compilation
bullet_jaune_1 Maîtriser les difficultés de la programmation concurrente
bullet_jaune_1 Connaitre les standards applicables
bullet_jaune_1 Découvrir les contraintes temps réel (déterminisme, interruptions, préemption...)
bullet_jaune_1 Comprendre les implications des architectures des processeurs en contexte temps-réel (cache, pipeline,...)
Cette formation est particulièrement adaptée aux personnes ayant à conduire des projets d'informatique embarquée et temps-réel, ou devant participer à toutes les étapes de ces projets, de l'analyse et la concepton à la réalisation.
Les personnes désireuses d'un cours plus orienté vers le développement peuvent regarder également notre cours référence L71 - La programmation temps réel
Matériel
bullet_jaune_2 Un PC et une carte ColdFire par binôme
bullet_jaune_2 Chaîne de compilation croisée et sonde d'émulation BDM
bullet_jaune_2 Machine virtuelle Java
bullet_jaune_2 Manipulations et exercices en environnements natif et croisé
bullet_jaune_2 Un support de cours ainsi que la disquette contenant les exemples
Pré-requis
bullet_jaune_2 Connaissance de la programmation en C, C++ ou Java (niveau cours L2, L3 ou L4)
bullet_jaune_2 Connaissance d'un microprocesseur souhaitée
bullet_jaune_2 Connaissance de la programmation embarquée utile

Plan
Introduction au temps réel
bullet_jaune_2 concepts temps réel de base
bullet_jaune_2 contraintes particulières du temps réel
bullet_jaune_2 programmation structurée et objet
bullet_jaune_2 apports des techniques objets
L'approche temps réel avec UML
bullet_jaune_2 genèse d’UML
bullet_jaune_2 modèles UML standards
bullet_jaune_2 cycle de développement Objet
bullet_jaune_2 contraintes liées à l’interprétation des diagrammes
bullet_jaune_2 interprétation des diagrammes
bullet_jaune_2 définition de nouveaux diagrammes
bullet_jaune_2 cycle de développement avec RT UML
Le langage de modélisation UML
bullet_jaune_2 modélisation statique
bullet_jaune_3 cas d'utilisation
bullet_jaune_3 modèles de classes
bullet_jaune_2 modélisation dynamique
bullet_jaune_3 diagrammes de Séquence
bullet_jaune_3 diagrammes de Collaboration
bullet_jaune_3 diagrammes Etats Transitions
Les extensions pour le temps réel
bullet_jaune_2 environnement / diagramme de contexte système
bullet_jaune_2 contraintes / diagramme de contraintes
bullet_jaune_2 comportement / diagramme d’états
bullet_jaune_2 timings / diagramme de séquence étendu
bullet_jaune_2 parallélisme / diagramme architecture logicielle
bullet_jaune_2 architecture / diagramme architecture matérielle
Analyse des éléments constitutifs d'une chaîne de compilation
bullet_jaune_2 Explication des étapes du processus de génération de code en natif et en croisé
bullet_jaune_2 Rôle du compilateur, de l’assembleur et du linker
bullet_jaune_2 Paramétrage en fonction d’un mapping mémoire
bullet_jaune_2 Découpage d’une application en fichiers distincts
bullet_jaune_2 Le préprocesseur
bullet_jaune_2 Les instructions define et include
bullet_jaune_2 Ecriture de macros
bullet_jaune_2 Précautions à prendre dans les headers pour éviter les redéclarations de variables
bullet_jaune_2 Notion de projet, réalisation de librairies
Exercice : mise en œuvre de la chaîne de compilation et fabrication d’une librairie
Particularités de la programmation dans le contexte embarqué
bullet_jaune_2 Les tableaux de pointeurs
Exercice : allocation d'un pointeur sur un port d'I/O
bullet_jaune_2 Accès aux champs d’une structure
bullet_jaune_2 Déclaration de variables et de pointeurs sur type structuré
bullet_jaune_2 Les formats big et little endian
bullet_jaune_2 Les structures à champ de bits : modélisation des périphériques
bullet_jaune_2 Les unions : une même zone mémoire peut être envisagée de différentes manières
Exercice : modélisation de l’UART du ColdFire au moyen d’une union et d’une structure à champs de bits et communication avec un terminal
bullet_jaune_2 Utilité des tableaux de pointeurs sur des fonctions
Exercice : lancement d’une fonction à partir d’un tableau de pointeurs
Principe de fonctionnement d'un système Temps réel et embarqué
bullet_jaune_2 Notion de tâche
bullet_jaune_2 Cadencement des tâches selon leur priorité, préemption
bullet_jaune_2 Sauvegarde de contexte
bullet_jaune_2 Nécessité d’un tick temps réel pour déclencher les commutations de tâches
Les standards du temps réel
bullet_jaune_2 Les standards d'environnements temps réel
bullet_jaune_3 POSIX
bullet_jaune_2 Les langages à sémantique temps-réel
bullet_jaune_3 Java
bullet_jaune_3 Ada
Les traitements concurrents
bullet_jaune_2 Recensement des champs d’un descripteur de tâche
bullet_jaune_2 Réalisation d’une structure chaînée des tâches en attente d’exécution
bullet_jaune_2 Insertion d’un nouveau descripteur lors du chargement d’une nouvelle tâche
bullet_jaune_2 Exemple de règles d'ordonnancement: priorité évoluant en fonction du temps
bullet_jaune_2 Réorganisation de la file lors de l’invocation de l'ordonnanceur: préemption
Mise au point
bullet_jaune_2 Communication avec la cible
bullet_jaune_2 Les différents niveaux de mise au point : C, assembleur
bullet_jaune_2 Les fenêtres du debugger : source, mémoire, pile et variables
bullet_jaune_2 Positionnement de points d’arrêt
bullet_jaune_2 Analyse de la pile et extraction des stacks frames correspondant aux fonctions imbriquées
La programmation dans le contexte multi-tâches
bullet_jaune_2 Structures de données:
bullet_jaune_3 Listes simplement chaînées
bullet_jaune_3 Listes doublement chaînées
bullet_jaune_3 Listes circulaires
bullet_jaune_3 Files d'attentes
bullet_jaune_3 Piles
Exercice : réalisation de listes chaînées utilisables en contexte multi-tâches
bullet_jaune_2 Gestion des accès concurrents
bullet_jaune_3 Variable simple
bullet_jaune_3 Structure de données
bullet_jaune_3 Entre tâches
bullet_jaune_3 Entre tâches et routines d'interruption
Exercice : synchronisation et communication entre tâches
bullet_jaune_2 Gestion de la mémoire
bullet_jaune_3 Algorithmes
bullet_jaune_3 Gestion des fuites mémoire
Exercice : mise en évidence et détection de fuites mémoire