Formation : Linux industriel, temps réel et embarqué
Se former avec
ORSYS
- Renseignements :
- Durée : 4 Jours
- Type : En centre
- Diplômant : Oui
-
Prix H.T. € :1930.00
- Objectifs :
- Découvrir l’ensemble des outils de développement industriel disponibles librement sous Linux. Maîtriser les mécanismes d’ordonnancement des différentes versions de Linux, connaître leurs domaines d’application, leurs possibilités et leurs limites. Accéder au développement temps réel strict en utilisant l’extension RTAI de Linux. Disposer de méthodes pour déployer Linux ou uCLinux sur des systèmes embarqués en équilibrant les performances et l’occupation mémoire.
- Pré-requis :
- Les participants doivent disposer d’une bonne connaissance d’Unix ou de Linux et d’une bonne maîtrise de la programmation en C.
- Développement industriel sous Linux
- Environnement Linux : introduction à Linux et aux logiciels libres. Licences GPL, LGPL, BSD… et implications pour le développement industriel. Versions du noyaux et distributions courantes de Linux.
- Outils de développement libres : environnements intégrés (Eclipse, KDevelop), éditeurs de texte (Vi, Emacs, Nedit, Kwrite…), outils de compilation (Gcc, Tcc, Gas…) et fichiers Makefile. Outils de débogage et de mise au point (Gdb, Ddd, Gprof, Gcov, Strace, Ltrace), débogage des allocations mémoire (Mtrace, Mcheck, Electric Fence, Valgrind).
- Utilisation de l’environnement Eclipse avec le plug-in CDT : création de projet, assistance en ligne, indexation. Débogage classique, débogage post-mortem, débogage d’application en fonctionnement.
- Méthodes de compilation avancées : compilation et installation du noyau Linux 2.6. Compilation et utilisation de bibliothèques statiques et dynamiques. Création et utilisation d’une chaîne de compilation croisée.
Travaux pratiques
Détection d’erreur à la compilation, à l’édition des liens, utilisation d’Eclipse/CDT, utilisation d’une chaîne de compilation croisée et test sur carte à processeur ARM. Débogage pas-à-pas et autopsie post mortem. Débogage avec Eclipse/CDT. Débogage distant (du PC de développement vers la cible à processeur ARM). Détection des fuites mémoire et des débordements de buffers. Obtention de statistiques diverses durant l’exécution. Test de couverture sur l’exécution d’une application. Compilation et installation d’un noyau Linux 2.6 personnalisé par chaque participant.
Ordonnancement temps partagé et temps réel souple
- Précision des mesures horaires (gettimeofday et utilisation du TSC) et des attentes (usleep et nanosleep) ; fonctionnement périodique (setitimer et timers Posix).
- Ordonnancement temps partagé et configuration des priorités des processus. Implications de la préemptibilité du noyau 2.6.
- Temps réel souple Posix.1b : principes, configuration de l'ordonnancement des processus et des threads. Limites du temps réel sous Linux standard.
- Problèmes algorithmiques liés au temps réel (synchronisation, inversion de priorité, etc.) et solutions.
- Etude de l'ordonnanceur Linux : noyaux 2.0 à 2.4, noyaux 2.6.
Travaux pratiques
Création de processus, état zombie, code de retour du processus fils. Processus multithreads, création et synchronisation des threads. Configuration des priorités et observation des effets sur le partage du CPU. Examen du fonctionnement de l’ordonnanceur. Lecture des ordonnancements et priorités des processus existants. Basculement de processus en temps réel. Vérification du fonctionnement temps réel. Vérification de la précision des timers et des sommeils, relevé à l’oscilloscope des variations des temporisations.
Temps réel strict - Extension RTAI
- Concepts de temps réel strict : principe des micro-noyaux RT-Linux, RTAI, Adeos, Xenomai, LXRT.
- Installation et API de RTAI : création de tâches simples et périodiques ; attentes actives et mises en sommeil ; timers temps réel. Configuration du timer matériel ; choix d’un ordonnancement périodique ou one-shot. Synchronisation des tâches par sémaphores, files de message et RPC. Communication avec les processus utilisateur par fifo temps réel et buffers partagés. Gestion bas-niveau des interruptions et émulation d’interruptions pour le noyau Linux.
- Utilisation de l’extension LXRT : ordonnancement temps réel strict en mode utilisateur. Création de tâches et basculement en temps réel strict. Gestion des interruptions depuis l’espace utilisateur. Communication avec les autres tâches.
- Installation et API de Xenomai : API native et émulation des API Psos, Vrtx, VxWorks.
Travaux pratiques
Installation de RTAI. Création de tâches temps réel strict. Fonctionnement périodique : mesure de précision du timer, relevé à l’oscilloscope. Communication avec les processus par fifo temps réel et buffer mémoire. Ecriture d’un gestionnaire d’interruption, mesure du temps de latence. Ecriture de processus ordonnancé en temps réel strict. Gestion d’interruption depuis l’espace utilisateur, relevé et comparaison des temps de latence. Installation de Xenomai, écriture de tâches périodiques et de gestionnaires d’interruption. Utilisation des API d’émulation.
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é. Panorama de solutions libres.
- Système uCLinux : API, environnement de développement.
- Linux embarqué : choix d’une version du noyau et options essentielles pour la réduction de sa taille. Système de fichiers généraux (Ext2/3, Reiserfs, Vfat) et spécifiques pour les systèmes embarqués (Cramfs ou Jffs).
- Bibliothèques système standard et réduites (uClibc, Newlib, DietLibc).
- Applications et utilitaires à embarquer (Busybox, TinyLogin, EmbUtils, etc.). Applications réseau minimales. Configuration de Bootp, Nfs, Tftp.
- Interface utilisateur : notification par Leds, afficheur LCD texte (LCDproc) ou graphique (uLCD), écran texte, semi-graphique (Ncurses) et graphique.
- Interfaces graphiques optimisées. Configuration du FrameBuffer Vga et Vesa. Utilisation des modules DirectFB et FBUI. Interfaces graphiques Qt-embedded, Gtk, Nano-X.
- Configuration d’un chargeur de démarrage (Uboot, RedBoot, Grub, Lilo). Installation en mémoire flash (XIP).
Travaux pratiques
Installation de la chaîne de compilation. Compilation d’une application personnalisée pour uCLinux. Transfert et test sur cible à processeur MC68EZ328. Compilation d’un noyau de taille réduite. Création d’un système de fichiers. Incorporation d’applications minimales et test sur périphérique amovible (disquette ou clé USB). Ecriture d’application utilisant une interface par Leds ou afficheur LCD. Utilisation d’un environnement graphique minimal nano-X. Installation et configuration d’un serveur HTTP embarqué.
Analyse et personnalisation du boot du système
- Phase de boot : mise sous tension, Bios, chargeur (Lilo, Grub, UBoot…) du noyau. Démarrage du noyau et chargement d’un disque ram préliminaire (initrd). Lancement du processus Init.
- Initialisation depuis l’espace utilisateur : fichier /etc/inittab et script rc.sysinit. Changement de RunLevel et invocation des scripts rc.d. Chargement des services (démons).
- Notions de sécurité informatique et rappels concernant la programmation shell.
Travaux pratiques
Création et personnalisation d’un disque initrd. Remplacement du processus Init par une version personnalisée et remplacement par un script shell. Lancement d’un démon en arrière-plan. Démarrage automatique d’une application en mode texte, et en mode graphique.
2008 au 2009 ()
2008 au 2009 (31)
2008 au 2009 (13)
2008 au 2009 (35)
2008 au 2009 (44)
2008 au 2009 (69)
2008 au 2009 (92)
2008 au 2009 (75)