Objectifs de la formation
Concrètement cette formation vous apprendra à:
- Maîtriser le développement de pilotes de périphériques (drivers) robustes et adaptés
- Connaitre les outils de développement noyau
- Maitriser les aspects avancés d’un driver de périphérique
- Savoir gérer la mémoire
- Connaitre les Périphériques réseau et USB
Prérequis
Connaissance de Linux (utilisateur) et bonne familiarité avec le langage C.
Programme
Programmer pour le noyau Linux
Noyau Linux et modules
- modèle, version, licence GPL, développement du kernel, appels-système, modules.
Outils de développement noyau
- sources, compilation noyau et modules, écriture et compilation de modules, cross-compilation, messages, dépendances. Travaux
API du noyau
- chaînes, blocs mémoire, fonctions numériques et conversions, éléments temporels et actions différées, préemptibilité du noyau.
du noyau
- tâches et processus current, espaces d’adressage, dialogue avec /proc.
Écriture d’un driver Linux
Écriture d’un pilote de périphérique
- principes, numéros majeurs et mineurs, classes de périphériques, enregistrement du driver, fonctions de lecture et écriture
. Appels-systèmes et I/O
- Paramétrage par ioctl. Synchronisation d’appels-système par mutex. Accès matériel. Ports d’entrée-sorties. GPIO sur carte embarqué
Gestion d’interruptions
- contextes d’exécution, installation d’un handler, traitement différé (tasklet, workqueue et threaded interrupts).
interactions entre appels-système et interruptions
- protection des variables globales (spinlock), attentes d’événements (waitqueue), appels-système bloquants.
Aspects avancés d’un driver de périphérique
Entrées-sorties avancées
- multiplexage d’entrée-sorties (select et poll), principes des transferts de données par DMA.
Gestion de la mémoire
- allocation et libération de mémoire (kmalloc, vmalloc, get_free_pages, kmem_cache), projections (mmap).
blocs et VFS
- principes, enregistrement, disque générique, file de requêtes, partitionnement, sous-système Block, i/o scheduler, Virtual File System.
périphériques PCI Express
- principe, détection et enregistrement de driver, Base Address Registres, interruptions classiques et MSI.
Périphériques réseau et USB
Périphériques réseau
- interfaces bas-niveau et protocoles réseau, périphérique net_device, enregistrement, activation, émission et réception de paquets
Communications réseau
- Statistiques d’utilisation d’interface, principes de la pile IP, communications entre protocoles et interface bas-niveau .
Périphériques USB
- Organisation du sous-système USB de Linux, implémentation d’un driver Interrupt, type de end points, Communication avec les URB.
Aspects avancés
- écritures successives rapides, déconnexions intempestives, accès concurrents, Exemples de drivers Bulk, Control et Isochrones.
Description de la formation linux drivers
Le support pour les périphériques est assuré sous Linux par des pilotes (drivers) dont le code se déroule dans le noyau du système d’exploitation. Il est donc nécessaire pour le développeur amené à écrire ou à tester des pilotes de périphériques de maîtriser les concepts propres à la programmation noyau. Cette formation Linux Drivers propose une approche originale, s’appuyant sur l’écriture progressive de pilotes de différents types, pour appréhender les mécanismes parfois complexes (préemptibilité, multiprocesseur, support d’architectures différentes, etc.) inhérents au code exécuté en mode noyau. Cette formation Linux drivers 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. Outre les périphériques classiques (caractère, bloc, réseau), son étudié les sous-systèmes du noyau tels que les systèmes de fichiers ou l’ensemble USB.
Thèmes : LINUX Développement