Accueil / Linux, temps réel et embarqué
Linux, temps réel et embarqué
Durée : 4 jours
Tarif Inter : 2295 €
Tarif sur mesure : Nous consulter
Référence : 3LTRE
Programme
Public & Pré-requis
Organisation
Présentation
Ce cours vous montrera l’architecture générale d’un système embarqué et comment mettre en œuvre les outils de développement industriel sous Linux
Objectifs
- Découvrir l’ensemble des outils de développement industriel disponibles librement sous Linux
- Disposer de méthodes pour déployer Linux sur des systèmes embarqués en équilibrant les performances et l’occupation mémoire
- Maîtriser les algorithmes d’ordonnancement temps-partagé ou temps-réel souple, les mécanismes de communications entre processus, les options de configuration de la mémoire virtuelle
- Accéder au développement temps-réel strict en utilisant des extensions comme Linux-RT ou Xenomai
Programme
-
Développement industriel sous Linux :
- Environnement Linux : Linux et les logiciels libres
- Licences GPL, LGPL, BSD… et implications pour le développement industriel
- Kernels et distributions Linux
- Outils de développement libres : environnements intégrés, éditeurs de textes, outils de compilation et Makefile
- Débogage, profiling et mise au point
- Utilisation de l’environnement Eclipse avec le plug-in CDT : création de projet, aide en ligne, indexation
- Débogage classique, post-mortem, et d’application en fonctionnement
- Compilation et installation du noyau Linux 3.x
- Compilation et utilisation de bibliothèques statiques et dynamiques
- Création et utilisation d’une chaîne de compilation croisées
- TRAVAUX PRATIQUES : Détection d’erreur à la compilation, à l’édition des liens. Débogage pas-à-pas et autopsie post mortem. Débogage avec Eclipse. Obtention de statistiques diverses durant l’exécution. Tests de couverture. Utilisation d’une chaîne de compilation croisée et test sur processeur ARM.
-
Environnements restreints et systèmes embarqués :
- Problématique des systèmes embarqués
- Contraintes matérielles, logicielles et opérationnelles
- Choix d’un système d’exploitation embarqué
- Préparation d’un noyau linux embarqué : options essentielles pour la réduction de taille
- Système de fichiers
- Bibliothèques système pour l’embarqué
- Compilation croisée du noyau
- Boot du noyau sur cible ARM
- Préparation du système de fichiers
- Fichiers spéciaux des périphériques
- Processus init
- Applications et utilitaires à embarquer
- Débogage à distance sur la cible
- Configuration d’Eclipse
- TRAVAUX PRATIQUES : Installation de la chaîne de compilation. Compilation d’un noyau de taille réduite. Création d’un système de fichiers. Incorporation d’applications minimales et test sur émulateur.
-
Multitâche sous Linux, temps réel souple :
- Processus et threads : création, terminaison, attente, synchronisation (mutex et variables conditions)
- Communication entre processus : files de messages Posix, mémoire partagée et sémaphores
- Mesures horaires et des attentes: fonctionnement périodique (timers)
- Ordonnancement temps-partagé et priorités des processus
- Préemptibilité du noyau 3.x
- Temps réel souple Posix1b
- Principes, configuration de l’ordonnancement
- Processus et threads
- Limites du temps-réel sous Linux standard
- Améliorations avec patch Linux-RT
- Problèmes algorithmiques liés au temps-réel (synchronisation, inversion de priorité, etc.) et solutions
- TRAVAUX PRATIQUES : Création de processus uni-threads et multi-threads, synchronisation. Priorités temps-partagé et effets sur le partage du CPU. Fonctionnement de l’ordonnanceur. Ordonnancement temps-réel souple. Vérification du fonctionnement temps-réel. Vérification de la précision des timers et des sommeils.
-
Temps réel strict – Extensions Xenomai :
- Concepts de temps-réel strict : principe des micro-noyaux RT-Linux, RTAI, Adeos, Xenomai, LXRT
- Installation et API de Xenomai : création de tâches simples et périodiques
- Attentes actives et mises en sommeil
- Timers temps-réel
- TRAVAUX PRATIQUES : Installation de Xenomai, écriture de tâches périodique et de gestionnaires d’interruption. Utilisation des API d’émulation