Linux embarqué
- Licences, implications pour l'embarqué. Principe des drivers.
- Composant d'un système Linux. Boot d'un système embarqué.
- Outils de développement. Chaîne de compilation croisée
Travaux pratiques
Compilation, installation et test de Qemu.
Build Systems
- Présentation de Buildroot.
- Construction d'une chaîne de cross-compilation (Crosstool-NG).
- Construction d'un système embarqué avec Buildroot.
- Présentation du Yocto Project.
Travaux pratiques
Création d'une chaîne de cross-compilation. Production d'une image pour Raspberry Pi.
Noyau Linux
- Fonctionnalités du noyau. Modèle de développement.
- Configuration et compilation du noyau.
- Application de patchs.
- Transfert de l'image du noyau. Paramètres de démarrage du kernel.
- Types de système de fichiers. Formatage et préparation d'une arborescence.
Travaux pratiques
Compilation et test d'un noyau (Buildroot, émulateur Arm, Raspberry Pi). Application d'un patch.
Bootloader et Root Filesystem
- Les bootloaders : Lilo et Grub. U-Boot, barebox...
- Installation de U-Boot.
- Boot par TFTP et par NFS.
- Formats pour disques et mémoire flash. Systèmes de fichiers spéciaux.
- Organisation des partitions. Gestion de versions.
Travaux pratiques
Test de Grub. Compilation et test de U-boot sur Raspberry.
Espace utilisateur
- Busybox : présentation, configuration.
- Configuration du réseau et des serveurs . Authentification des utilisateurs et connexion distante.
Travaux pratiques
Compilation et installation de Busybox.
Code métier
- Outils de développements : compilateurs, interpréteurs, IDE.
- Débogueur, profileur, couverture de code.
- Bibliothèques statiques et dynamiques.
- Gestion de mémoire sous Linux.
Travaux pratiques
Utilisation d'Eclipse, de gdbserver, de Gprof et de Gcov.
Drivers et modules spécifiques
- Principe des drivers : intégration de modules externes.
- Principes de la programmation noyau.
- Aperçu de la programmation de drivers en mode caractère.
Travaux pratiques
Compilation et chargement de module externe.
Multiprocesseurs et temps réel
- SMP, multicœurs, hyperthreading. Gestion des tâches et des interruptions.
- Temps réel : principes. Temps-réel souple.
- Amélioration avec le patch PREEMPT_RT.
- Temps-réel strict : Présentation de Xenomai.
Travaux pratiques
Configuration des emplacements des tâches et des interruptions.