View the site in Français View the site in Anglais (USA) Site displayed in Anglais (GB)
You are here: ac6 > ac6-formation > Real time > Real time project management

L70 Real time project management

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

Java est une marque déposée de Sun Microsystems
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

Outline
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