FORMATION Ecriture de drivers et programmation noyau Linux
Objectifs de la formation linux driver
Cette formation Linux driver vous permettra de maîtriser le développement de pilotes de périphériques (drivers) robustes et adaptés aux différentes déclinaisons de Linux.
ce cours vous permettra aussi de comprendre en détail les mécanismes internes du noyau sollicités par les applications (mémoire, ordonnanceur, entrées-sorties).
Savoir développer et intégrer de nouveaux éléments dans le noyau Linux comme des protocoles réseau ou des systèmes de fichiers.
Pré-requis :
Les participants doivent disposer d’une bonne connaissance de Linux et d’une bonne maîtrise de la programmation en C.
Travaux pratiques :
Lors de cette formation Linux driver de nombreux exercices et études de cas progressifs seront réalisés sur un réseau de serveurs Linux,
Tous les programmes réalisés en TP existent sous forme de squelettes que les participants complètent eux mêmes.
Contenu de la formation linux driver
Le noyau Linux : concepts et licences. Implication de la GPL sur les développements noyau statiques et modulaires. Cycles de développement du noyau, versions et diffusion des sources.
Mode superviseur et utilisateur, fonctionnement des appels-système. Principes des modules, et organisation des sources du noyau.
Outils de développement (Gcc, Kconfig et Makefile), et de débogage (Kgdb, Ltt).
Principe de compilation du noyau et des modules. Dépendances et contrôle de versions des modules. Exportation de symboles.
Travaux Pratiques :Compilation et installation d'un noyau 2.6. Observation des appels-système invoqués. Application de patches pour débogage noyau. Ecriture et test de modules simples. Utilisation du système de fichier sysfs. Intégration de modules dans la chaîne de compilation du noyau. Chargement automatique au boot.
Eléments essentiels de programmation noyau
Périphériques : bloc, caractère, réseau et méthodes de développement.
Contextes de fonctionnement du noyau : appel-système, interruption et threads. Synchronisation des appels-système par sémaphores et mutex. Protection des variables globales par spinlocks.
Eléments temporels : ticks et jiffies, mesures horaires, attentes actives et sommeils. Programmation d'actions différées et timers.
Représentation des processus et threads, tâche « current ». Accès aux informations concernant le processus en cours d'exécution. Préemptibilité du noyau 2.6.
Mémoires virtuelle et physique, espace d'adressage utilisateur et noyau.
Communication avec les processus par le système /proc.
Travaux pratiques :
Ecriture d'un module d'horodatage d'événements à haute précision. Utilisation de notre module pour chronométrer les phases de boot. Ecriture d'un module d'information sur les structures internes des processus.
Ecriture de driver, périphérique en mode caractère
Ecriture de pilotes de périphériques : fichiers spéciaux (/dev), numéros majeur et mineur, fonctions de rappel (callback).Fonctions essentielles de gestion de périphérique.
Fonctions avancées : paramétrage du périphérique (Ioctl), attentes d'événements, waitqueue.
Accès au matériel : ports d'entrées-sorties, mapping de ports ou de plages de mémoire physique, allocation de mémoire.
Les interruptions : activation/désactivations,handler, partages et imbrication Bottom half : Tasklet et workqueue, softirq.
Travaux Pratiques :Ecriture progressive d'un pilote périphérique en mode caractère complet, incluant l'implémentation des appels-système, la gestion des interruptions, l'utilisation d'entrées-sorties physiques, la protection des variables globales, l'appel de routines différées, et le paramétrage du driver avec les différentes méthodes étudiées.
Périphérique en mode bloc et système de fichiers
Principe des périphériques en mode bloc. Enregistrement du driver. Callback de lecture et écriture. Support du formatage, et opérations avancées
Ordonnanceur des entrées-sorties par bloc du noyau 2.6, choix d'une stratégie.
Conception/Implémentation/Enregistrement des systèmes de fichiers. Travaux Pratiques :
Ecriture d'un pilote complet de périphérique virtuel (disque ram). Formatage et montage du disque ram. Implémentation d'un système de fichiers personnalisé. Ecriture d'un outil de formatage. Tests du système de fichier.
Eléments avancés de programmation noyau
Allocations de mémoire : par zones physiques, virtuelles ou par pages. Modèle des drivers du noyau 2.6 : Kset et Kobject. Gestion des événements Hotplug.
Accès au bus PCI : adressage, drivers, auto-détection et interruptions.
Transferts DMA : organisation des adresses, allocation des buffers et transfert de données.Interfaces et protocoles réseau
Gestion des interfaces réseau sous Linux. Enregistrement d'une interface net_device. Callback d'émission et réception. Implémentation et options de la pile IPv4 sous Linux. Transfert des paquets sk_buff. Résolution d'adresse et détail du routage.
Travaux Pratiques :Ecriture d'un driver réseau pour périphérique virtuel. Initialisation et affectation d'adresse IP. Ecriture et intégration d'un protocole réseau personnalisé. Ecriture d'un module d'analyse statistique de la pile IP.
Drivers pour périphériques USB
Principe des périphériques USB.
Sous Système USB-core.
Exploration de sysfs
Accès aux « endpoints » de dialogue.
Types de périphériques.
Construction d'un URB.
Dialogue en modes « Contrôle » et « Interruption ».
Inscription d'un gestionnaire de communication en modes « Bulk » et « Isochrone ».
Travaux Pratiques :Enregistrement d'un driver USB. Etudes des endpoints disponibles. Ecriture d'un driver pour carte d'acquisition Velleman K8055. Etude d'un driver en mode bulk. Ecriture d'un driver de webcam en mode isochrone.
Formation Noyau Linux
-Formation drivers Linux
-Formation programmation driver noyau Linux
-Formation USB Linux

22-24 rue du Président Wilson 92300 Levallois-Perret Tél.: 33 (0)1 43 34 90 94 Fax : 33 (0)1 43 34 90 95