.. meta:: :description: Formation Linux embarqué temps réel :keywords: Linux embarqué, temps réel, realtime, embedded system Formation Linux embarqué et temps réel ************************************** .. admonition:: Résumé Cette formation comprends deux parties: La fabrication d'un système Linux embarqué, construction du noyau pour une cible en cross-compilation, fabrication complète du root filesystem, configuration des interfaces réseau, des daemons système, des utilisateurs... L'étude du noyau Linux en mettant l'accent sur les difficultés d'obtenir un système temps réel avec le noyau de base puis l'étude de différentes solutions, co-noyau, patch preempt-RT, hyperviseur temps réel, suivit de l'implémentation et du test d'une solution Linux-RT. .. image:: img_emb.png :width: 300pt :align: center Linux embarqué ============== * La chaîne de cross-compilation * Récupérer les outils de cross-compilation sur Internet * Construire les outils avec Buildroot * Le format ELF, les outils de gestion, *objdump*, *readelf*, *objcopy*... * Le boot Loader * *U-Boot* le boot loader préféré de l'embarqué * Construction de *U-Boot* * Utiliser *U-Boot* comme BIOS * Ajouter une commande à U-Boot, test de mémoire * Ajouter un nouveau BSP à U-Boot * L'initialisation * Le chargement du noyau * Points d'entrée du BSP * Utilisation d'un *Device Tree* * La configuration d'un noyau * le système de configuration, Kbuild et Kconfig * les principales entrées du système de configuration * Ajouter un nouveau driver dans l'arbre du noyau * La sécurisation du chargement * Uboot et secure boot * Gestion des clefs et PKI * Signature du noyau * Signature des modules * Le *root filesystem* * Fabrication pas à pas du *root filesystem* * *Busybox*, intérêt, configuration et adaptation * Les principaux répertoires de Linux * L'utilité de devtmpfs, procfs et sysfs * La configuration du noyau dans le procfs * Gérer le hotplug et l'énergie dans le sysfs * La sécurisation du système par les cgroups * Le debug et les traces par le debugfs * Savoir écrire un driver simple * Ecriture d'un pilote de périphérique en mode caractère * Les callbacks de la file_operations * Extensions de l'interface d'enregistrement d'un device * Les devices *misc* * Le support du *root filesystem*: les flash * Les différentes flash * Les systèmes de fichiers spécifiques pour les flash * JFFS2, UBIFS et YAFFS * ROMFS, CRAMFS * les systèmes de fichier transparents * Interfaces et protocoles réseau * Gestion des interfaces réseau sous Linux * Les socket buffers *skbuf* * Implémentation et options de la pile IPv4 sous Linux Linux temps réel ================ * La notion de temps réel: le **Déterminisme** * D'ou vient l'indeterminisme ? * Le matériel * le logiciel * Le fonctionnement du noyau Linux * Qu'est-ce qu'un process, un thread * L'ordonnancement des threads * Les différents scheduleurs Linux * Temps partagé: Completely Fair Scheduler * POSIX temps réel: FIFO et RR * Le scheduler EDF: Deadline scheduler * Contexte de thread et contexte d'interruption * Les processeurs multi-scalaires, *pipelines* et barrières * La gestion des caches * Comment la gestion des caches modifie le fonctionnement POSIX * L'influence des caches sur l'écriture d'applications multi-thread * Optimisations, Cache Allocation Technilogy, Tightly Coupled Memory * Les problèmes liés au multi-threading * Topologies multi-processeur et multi-coeur, les *spinlocks* * La synchronisation des threads * Les *wait-queues* et les *works* * Les *mutex* et les *completion* * Gestion mémoire * Mémoire physique et mémoire virtuelle: la *MMU* * Gestion mémoire noyau * Gestion de la mémoire utilisateur et déni de fonctionnement * Optimiser la gestion mémoire pour le temps réel * L'accès au matériel * La notion de temps dans le noyau, les horloges * Les timers haute résolution, précision des timers, les *slacks* * La gestion des interruptions, les *tasklet* et les *softirq* * DMA *Direct Memory Access*, *IOMMU* et synchronisation de cache * LinuxRT ou le preempt patch * Les modifications apportées par LinuxRT * Mise en oeuvre des patchs * Tests sur la latence du timer avec cyclictest * Les solutions de co-noyau * RTLinux, RTAI et Xenomai * Présentation d'un co-noyau * Xenomai * Jailhouse * Les hyperviseurs temps-réel * Xtratum * L4 et pikeOS * un micro hyperviseur: X-Hyp * Utiliser KVM/QEMU dans un cadre temps réel