Accueil > Systèmes d'exploitation > Linux, Unix, Mac > Ecriture de drivers et programmation noyau Linux
Formation #EDPL

Formation Ecriture de drivers et programmation noyau Linux

Du 11 au 13 Sept. 2019

Du 13 au 15 Nov. 2019

3 jours

Réf. EDPL

Vous souhaitez personnaliser le programme de cette formation pour qu'elle réponde aux spécificités de votre entreprise ? Demandez un devis.

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.

Objectifs

  • Maîtriser les concepts fondamentaux liés à la programmation pour le noyau Linux
Participants

Participants

  • Toute personne intéressée par le développement systèmes temps réel sur Linux
Approche Pédagogique

Approche Pédagogique

  • Cas pratiques
  • Remise d’outils
  • Echanges d’expériences
Programme
1/ 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
2/ Outils de développement noyau
  • Ecriture de code source
  • Compilation et installation d'un noyau
  • Ecriture de modules simples
  • Intégration dans le noyau
  • Paramètres au boot
  • Cross-compilation sur Raspberry Pi
3/ 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
  • Ecriture 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
4/ L'environnement du noyau
  • Les tâches et processus courants
  • Les espaces d'adressage
  • Le dialogue avec /proc
  • Ecriture d'un module d'information sur les structures internes des processus
  • Ecriture d'un module d'horodatage via /proc
  • Tests sur Raspberry Pi
5/ Ecriture 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
  • Ecriture d'un driver simple
6/ 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
  • Ecriture d'un driver d'entrées-sorties sur GPIO du Raspberry Pi
7/ 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
8/ 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
9/ 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.
10/ 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
11/ 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
12/ 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
13/ 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
14/ 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
15/ 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
16/ Les aspects avancés
  • Les écritures successives rapides
  • Les déconnexions intempestives
  • Les accès concurrents
  • Des exemples de drivers Bulk, Control et Isochrones
Dates

Dates

  • Du 11 au 13 Sept. 2019
  • Du 13 au 15 Nov. 2019