Accueil > Windows/Linux/Unix/Mac > Ecriture de Drivers et Programmation Noyau Linux
Formation #OS110

Formation Ecriture de Drivers et Programmation Noyau Linux

Durée : 5 jours

Code : OS110


Prochaines dates programmées :

Du 24 au 28 Juin 2024

Du 16 au 20 Sept. 2024

Du 09 au 13 Déc. 2024

Fin d'Inscription :
Le Bulletin d'Inscription doit être rempli, cacheté, signé et envoyé par email : Au minimum 15 JOURS OUVRÉS avant la date de formation.
Si vous avez un besoin URGENT et que vous souhaitez une date de formation plus proche que les sessions programmées (minimum 15 à 20 jours ouvrés à date de votre demande)

Objectifs

  • Maîtriser le développement de pilotes de périphériques robustes et adaptés aux différentes distributions de Linux
Programme
1/ Noyau Linux et modules
  • Vue d'ensemble du système et rôle du noyau
  • Les sites de référence
  • Cycles de développement du noyau, les patchs
  • Mode de fonctionnement (superviseur et utilisateur)
  • Les appels systèmes
  • Modules
  • Principe de compilation du noyau et des modules
  • Les dépendances et symboles
  • Les exportations de symboles
  • Le chargement du noyau (support, argument...)
2/ Les outils utilisables
  • Outils de développement (Gcc, Kbuild, Kconfig et Makefile...)
  • Outils de débogage (GDB, KGDB, ftrace...)
  • Environnement de débogage (Linux Trace Toolkit...)
  • Outil de gestion de version (Git...)
  • Tracer les appels système (ptrace...)
3/ API du noyau
  • Chaînes de caractères, blocs mémoire, fonctions numériques et conversions
  • Pilotes de périphérique
  • Eléments temporels et actions différées
  • Préemptibilité du noyau
4/ Environnement du noyau
  • Tâches et processus "current"
  • L'espace d'adressage utilisateur et noyau
  • L'interface noyau avec /proc par le procfs
5/ Ecriture d'un driver
  • Principe des pilotes de périphérique
  • Réservation de numéros majeurs et mineurs
  • Enregistrement du pilote de périphérique
  • Fonctions de lecture et écriture
  • Fonctions de paramétrage
  • Optimisation des appels systèmes (IAPX32, VDSO)
  • Synchronisations et attentes dans le noyau, waitqueues, mutex et les completions
6/ Accès au matériel et interruptions
  • Accès simple au matériel
  • Appel système et interruption
  • Différer un traitement en interruption
  • Protection des variables globales
7/ Fonctions avancés d'un driver
  • Attentes d'événements
  • Multiplexage d'entrées et de sorties
  • Gestion de la mémoire
8/ Modèle de périphérique du noyau
  • Création d'une classe de périphérique
  • Transferts de données par DMA
9/ Périphérique en mode caractère
  • Ecriture de pilotes de périphériques caractère
  • Le VFS (Virtual File System)
  • Les méthodes associées aux périphériques caractères
  • Gestion des interruptions DMA et accès au matériel
  • Enregistrement des pilotes de périphériques de type caractère et optimisations
10/ Linux Driver Framework - sysfs
  • Présentation du framework, kobject, kset et kref
  • Les objets drivers, device driver, bus et class
  • Utilisation et génération des attributs présentés dans le sysfs
  • Interface avec le hotplug, méthodes match, probe et release
  • Gestion du firmware
  • Gestion de l'énergie, méthodes de gestion de l'énergie
11/ Périphérique en mode bloc et systèmes de fichiers
  • Principe des périphériques de bloc
  • Ecriture d'un driver
  • Enregistrement du pilote
  • Déclaration d'un disque générique
  • Initialisation de la file de requêtes
  • Requêtes sur un driver bloc
12/ Driver bloc avancé
  • Traitement différé
  • Partitionnement du disque
  • Sous-système
  • Block du noyau
  • Ordonnanceur des entrées / sorties
13/ Nouveau système de fichiers
  • Enregistrement
  • Initialisation du superbloc
  • Implémentation des appels systèmes de lecture et écriture
  • Utilisation du cache en lecture et en écriture
  • Communication avec le sous-système Block
14/ Interfaces et protocoles réseau
  • Gestion des interfaces réseau sous Linux
  • Utilisation des skbuff
  • Les hooks netfilter
  • Intégration d'un protocole
15/ Périphérique USB
  • Organisation du sous-système USB
  • Enregistrement d'un driver de classe Interrupt
  • Endpoints et types de dialogue
  • Communication avec les USB
  • Traitements des écritures successives rapides
  • Déconnexions intempestives et accès concurrents
  • Gestion simultanée de plusieurs périphériques
  • Etude de drivers Bulk et Control
Approche Pédagogique

Approche Pédagogique

  • Pédagogie très opérationnelle fondée sur l'alternance entre théorie et pratique
  • Cas pratiques
  • Remise d’outils
  • Echanges d’expériences
Public Cible

Personnes Visées

  • Développeurs Linux/Unix
Dates

Dates

  • Du 24 au 28 Juin 2024
  • Du 16 au 20 Sept. 2024
  • Du 09 au 13 Déc. 2024
  • Fin d'Inscription :
    Le Bulletin d'Inscription doit être rempli, cacheté, signé et envoyé par email : Au minimum 15 JOURS OUVRÉS avant la date de formation.