Menu Recherche Panier
(...)
Vous êtes ici : Accueil > Catalogue des formations > Formation Écriture de drivers et programmation noyau Linux
Technique

Formation Écriture de drivers et programmation noyau Linux

Gérer le matériel périphérique

Si les ordinateurs sont constitués de périphériques (disques durs, écrans...), ils sont aussi amenés à piloter des périphériques externes de type imprimantes, lecteurs optiques ou lecteurs de cartes à puce. Pour pouvoir les contrôler, les systèmes d'exploitation ont besoin d'interfaces logicielles appelées drivers (ou pilotes en français). Sous Unix et Linux, les drivers sont exécutés 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. Durant cette formation, les participants seront amenés à écrire des pilotes de différents types pour appréhender les mécanismes parfois complexes (préemptibilité, multiprocesseur, etc.) inhérents au code exécuté en mode noyau.
Objectifs de cette formation Écriture de drivers et programmation noyau Linux
  • Comprendre comment programmer pour le noyau Linux
  • Connaître les différents types de périphériques et savoir interagir avec eux
  • Disposer des compétences nécessaires au développement d’un driver
  • Être autonome pour développer des drivers de toute nature
Public
  • Toute personne intéressée par le développement systèmes temps réel sur Linux
Pré-requis
Programme détaillé

1ère partie : Programmer pour le noyau Linux

Noyau Linux et modules

  • Les modèles et versions
  • Licence GPL
  • Développement du noyau
  • Détecter des appels-système invoqués par des applications et commandes utilisateur
  • Utilisation de modules précompilés

Outils de développement noyau

  • Ecriture de code source
  • Compilation et installation d’un noyau
  • Écriture de modules simples
  • Intégration dans le noyau
  • Paramètres au boot
  • Cross-compilation sur Raspberry Pi

Les API du noyau

  • Les chaînes et blocs mémoire
  • Les fonction numériques et conversions
  • Les éléments temporels et actions différées
  • La préemptibilité du noyau
  • Écriture d’un module d’horodatage
  • Chronométrage des phases de boot
  • Mesure de précision d’horloge
  • Mesure de durée d’un appel-système

L'environnement du noyau

  • Les tâches et processus courants
  • Les espaces d’adressage
  • Le dialogue avec /proc
  • Écriture d’un module d’information sur les structures internes des processus
  • Écriture d’un module d’horodatage via /proc
  • Tests sur Raspberry Pi

2ème partie : Écriture d’un driver

Écriture d’un pilote de périphérique

  • Le principe
  • Les numéros majeurs et mineurs
  • Les classes de périphériques
  • La manipulation des fichiers spéciaux
  • La réservation de numéro majeur
  • L'enregistrement du driver
  • Les fonctions de lecture et écriture
  • Écriture d’un driver simple

La gestion des appels-système et des entrées/sorties (I/O)

  • Le paramétrage par ioctl
  • la synchronisation d’appels-système par mutex
  • L'accès matériel
  • Les ports d’entrées-sorties
  • GPIO sur carte embarquée
  • Écriture d’un driver d’entrées-sorties sur GPIO du Raspberry Pi

La gestion d’interruptions

  • Les contextes d’exécution
  • L'installation d’un handler
  • Le traitement différé (tasklet, workqueue et thread interrupt)
  • Ecriture d’un gestionnaire sur interruption clavier PC et sur GPIO du Raspberry Pi
  • Visualisation des threadeds interrupts

Les interactions entre appels-système et interruptions

  • La protection des variables globales (spinlock)
  • L'attente d’événements (waitqueue)
  • Les appels-système bloquants
  • L'influence des priorités temps-réel sur les threads d’interruption
  • La mesure de temps de latence des interruptions du Raspberry Pi

3ème partie : Les aspects avancés d’un driver de périphérique

Entrées-sorties avancées

  • Le multiplexage d’entrée-sorties (select et poll)
  • Les principes des transferts de données par DMA
  • Création d’un périphérique « file de messages » virtuel implémentant plusieurs appels-système
  • Implémentation de select sur des entrées GPIO.

La gestion de la mémoire

  • Allocation et libération de mémoire (kmalloc, vmalloc, get_free_pages, kmem_cache)
  • Les projections (mmap)
  • Expériences sur la projection mémoire en espace utilisateur, allocations mémoire maximales

Les périphériques blocs et VFS

  • Les principes
  • L'enregistrement
  • Le disque générique
  • La file de requêtes
  • Le partitionnement
  • Le sous-système Block
  • i/o scheduler
  • Virtual File System
  • Ecriture d’un driver de disque virtuel : Partitionnement, formatage et montage de disque virtuel observation des effets des caches-disques du VFS

Périphériques PCI Express

  • Le principe
  • La détection et l'enregistrement de driver
  • Base Address Registers
  • Les interruptions classiques et MSI
  • Etude d’un driver PCIe de pilotage d’une carte à FPGA.

4ème partie : Les autres types de périphériques

Les périphériques réseau

  • Les interfaces de bas-niveau et protocoles réseau
  • le périphérique net_device, l'enregistrement, l'activation, l'émission et la réception de paquets
  • Ecriture progressive d’un driver pour périphérique virtuel permettant l’utilisation du protocole IPv4.

Les communications réseau

  • Les statistiques d’utilisation d’interface
  • Les principes de la pile IP
  • Les communications entre protocoles et interface bas-niveau
  • Le trajet des données au sein de la pile IPv4 lors de réception et d’émission de données avec le protocole TCP/IP

Les périphériques USB

  • L'organisation du sous-système USB de Linux
  • Implémentation d’un driver Interrupt
  • La communication avec les URB

Les aspects avancés

  • les écritures successives rapides
  • Les déconnexions intempestives
  • Les accès concurrents
  • Des exemples de drivers Bulk, Control et Isochrones

Conclusion

  • Discussions libres sur l’ensemble des thèmes abordés
  • Expérimentations libres suivant les demandes des participants
Les plus de cette formation Écriture de drivers et programmation noyau Linux
  • De nombreux exercices et démonstrations ont lieu, suivant les sujets, sur plate-forme PC ou sur carte ARM Raspberry Pi.

Informations

  • Durée : 4 Jours (28h)
  • Réf. : IXU17


Bon à savoir...

= une réponse possible
= plusieurs réponses possibles

Vous n'avez pas répondu à toutes les questions !
Vous avez % de bonnes réponses, vous pouvez donc suivre cette formation.
Vous avez % de bonnes réponses.
Nous vous invitons à contacter nos Conseillers Formation au 0825 07 6000 afin qu'ils vous orientent vers une formation plus adaptée à vos connaissances.