Développement industriel sous Linux
- Environnement Linux.
- Licences et implications pour le développement industriel.
- Outils de développement libres.
- Méthodes de compilation avancées.
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. Débogage. Détection des fuites mémoire et des débordements de buffers. Test de couverture sur l'exécution d'une application.
Ordonnancement temps partagé et réel souple
- Précision des mesures horaires et des attentes.
- Ordonnancement temps partagé. Préemptibilité.
- Temps réel souple Posix.1b : principes.
- Configuration de l'ordonnancement des processus et des threads.
- Problèmes algorithmiques liés au temps réel.
- L'ordonnanceur Linux : noyaux 2.0 à 2.4, 2.6.
Travaux pratiques
Création et gestion de processus. Priorités et partage du CPU. Examen du fonctionnement de l'ordonnanceur. Basculement de processus en temps réel. Vérification de la précision des timers et des sommeils.
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.
- Utilisation de l'extension LXRT.
- Ordonnancement temps réel strict en mode utilisateur.
- Interruptions.
- Installation et API de Xenomai.
Travaux pratiques
Installation de RTAI. Création de tâches temps réel strict. Gestion des communications. Ecriture d'un gestionnaire d'interruption, de processus ordonnancé en temps réel strict. Installation et utilisation de Xenomai.
Environnements restreints, systèmes embarqués
- Problématique des systèmes embarqués.
- Système uCLinux : API, développement.
- Linux embarqué : choix d'une version du noyau.
- Bibliothèques système (uClibc, Newlib, DietLibc).
- Applications et utilitaires à embarquer.
- Interface utilisateur.
- Interfaces graphiques optimisées.
- Configuration d'un chargeur de démarrage.
Travaux pratiques
Installation de la chaîne de compilation. Compilation d'une application personnalisée pour uCLinux et d'un noyau de taille réduite. Création d'un système de fichiers. Incorporation d'applications minimales. Ecriture d'application utilisant une interface par Leds ou afficheur LCD. Installation d'un serveur HTTP embarqué.
Personnalisation du boot du système
- Phase de boot : mise sous tension, Bios, chargeur (Grub, UBoot…) du noyau. Processus Init.
- Initialisation depuis l'espace utilisateur.
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.