Formation Écriture de drivers Linux

Développez vos propres pilotes noyau et maîtrisez l’écriture de drivers Linux grâce à une formation riche en mises en pratique !

Formation Écriture de drivers Linux

Cette formation à l’écriture de drivers pour Linux vous permettra de maîtriser les rouages de la programmation de pilotes pour Linux.

Au cours de cette formation, vous apprendrez :
- à développer des modules noyau,
- à manipuler les appels-système,
- à gérer la mémoire et les interruptions,
- à intégrer des drivers pour différentes catégories de périphériques (carte réseau, bus USB, etc.) et
- à construire un driver USB en parcourant l’ensemble du cycle de vie de l’implémentation.

Cette formation est destinée aux professionnel·le·s souhaitant développer des pilotes fiables et optimisés sur Linux.


Pour préparer au mieux cette formation, vous pouvez consulter :
- notre formation Administration Système Linux pour la maîtrise de Linux en tant qu’utilisateur et
- notre formation Langage C qui sera utile pour aborder sereinement les aspects bas niveau du noyau.

Les objectifs

  • Maîtriser les concepts et techniques de la programmation noyau sous Linux
  • Analyser et intégrer des drivers pour différents types de périphériques
  • Concevoir et optimiser des drivers performants et robustes

Pré-requis

  • Connaissances utilisateur de Linux (installation, manipulation de base)
  • Notions en langage C (syntaxe, compilation)
  • Ordinateur portable à apporter

Le programme de la formation Écriture de drivers Linux

Jour 1 : Fondamentaux du noyau Linux et écriture de module

  • Le noyau Linux et ses modules
    • Noyau Linux
      • modèle, versions, évolutions du kernel, modules
    • Développement en mode kernel
      • outils
      • compilation du noyau
      • programmation en mode kernel
    • Écriture de modules noyau
      • headers, macros, licences, messages, Makefile et dépendances
  • Les appels-système de Linux
    • Appels-système
      • principe et suivi d’un appel-système
    • Environnement du noyau
      • contexte de tâche
      • espaces d’adressage et échanges
    • Système de fichiers /proc
      • ajout d’entrée
      • méthodes de lecture et d’écriture

Mises en pratique :
- manipulation de modules précompilés, écriture, compilation et test d’un module, tests de modules avec dépendances
- appels-système invoqués par une application, échange de données entre espace utilisateur et kernel

Jour 2 : Exploration de l’API interne du noyau et pilotes en mode caractères

  • API interne du kernel
    • Fonctions habituelles de libC
      • chaînes, mémoire et fonctions mathématiques
    • Mise au point et débogage
      • warning
      • panic
    • Élements temporels
      • ticks, mesure du temps, attentes et actions différées
    • Gestion mémoire
      • allocation et gestion des pages
  • Driver en mode caractères
    • Enregistrement d’un driver
      • principe, numéros, modèle de drivers et classes
    • Méthodes d’un driver
      • open(), close(), read(), write(), ioctl()
    • Synchronisation entre appels-système
      • nécessité d’une synchronisation
      • mutex

Mises en pratique :
- mesure de granularité d’horodatage, de précision des timers, appels-systèmes de bases, manipulation des adresses virtuelles, physiques et de pages mémoire
- numéros majeur-mineur, appel des méthodes du driver, classe personnalisée, écriture d’un driver simple, implémentation d’un ioctl()

Jour 3 : Accès au matériel, interruptions et drivers réseau

  • Accès au matériel
    • Entrées-sorties
      • ports dédiés, mapping en adresses virtuelles, GPIO et bus PCIe
    • Interruptions
      • contexte d’interruption et handlers
      • activation et désactivation
      • routine de service
    • Traitement différé
      • tasklet, workqueue et threaded interrupt
    • Synchronisation et attente d’événement
      • spinlock() et wait_queue
      • méthodes bloquantes et non-bloquantes
    • Projection mémoire
      • méthode mmap()
      • DMA
  • Driver réseau
    • Périphérique réseau
      • interfaces, protocoles, enregistrement et adressage
    • Driver réseau
      • enregistrement, activation, socket buffer, statistiques d’utilisation

Mises en pratique :
- interactions par GPIO, écriture d’un handler d’interruption, driver virtuel en mode caractère, synchronisation par mutex et spinlock, utilisation d’une waitqueue, implémentation de mmap()
- enregistrement d’un driver netdev miroir, gestion des statistiques

Jour 4 : Drivers USB

  • Utilisation d’un bus
    • Le sous-système USB
      • principe
      • environnement USB Core
    • Implémentation d’un driver USB
      • enregistrement, identifiants, endpoints, classes, URB
  • Discussions libres sur l’ensemble des thèmes abordés

Mises en pratique :
- communication avec un bus USB, énumération, écriture et lecture vers un device USB
- Expérimentations libres suivant les demandes des participants

Télécharger le programme

Le(s) formateur(s)

Christophe BLAESS

Christophe BLAESS

Ingénieur Linux industriel depuis plus de 20 ans, Christophe est intéressé par les aspects bas niveau de Linux (embarqué, temps réel, drivers, etc.) et est attaché aux logiciels libres en général.

Il est l'auteur de plusieurs livres sur Linux (Développement système sous Linux, Écriture de scripts shell sous Linux, Solutions temps réel sous Linux…). Christophe aime partager ses connaissances avec ses pairs et est aussi le créateur de nombreux projets libres sur Github.

Au-delà de ses activités d'ingénierie (développement, mise au point de systèmes embarqués, conseil et assistance technique) et de formation, Christophe organise régulièrement différentes manifestations sur Linux embarqué (Paris embedded meetup et Live embedded event notamment).

Voir son profil détaillé

FAQ

Nos formations sont éligibles à plusieurs dispositifs de financement, selon votre situation. Human Coders est certifié Qualiopi, ce qui permet la prise en charge par des organismes comme Pôle emploi, votre OPCO ou encore le CPF (Compte Personnel de Formation) pour certaines formations.

Pour en savoir plus, veuillez consulter notre page : Comment financer votre formation ?

Oui, la formation peut être proposée en présentiel ou en distanciel. Pour les inter-entreprises, les modalités (présentiel ou à distance) sont fonction de la session.

Nous pouvons organiser des sessions à d'autres dates ou dans d'autres villes (Bordeaux, Lille, Lyon, Marseille, Montpellier, Nantes, Nice, Paris, Strasbourg, Toulouse...)

Les formations se déroulent toujours en petit groupe de 3 à 6 stagiaires. Nous souhaitons que les formateurs et formatrices puissent passer un maximum de temps avec chacun·e.

Voici une journée type :

  • 9h : vous êtes accueillis par votre formateur·rice autour d'un petit déjeuner (croissants, pains au chocolat, jus de fruit, thé ou café...)
  • 9h30 : la formation commence
  • 12h30 : pause de midi. Le·a formateur·rice mangera avec vous. C'est l'occasion d'avoir des discussions plus informelles.
  • 14h : reprise de la formation
  • 18h : fin de la journée

A propos de Human Coders

Human Coders c'est un centre de formation pour développeurs avec :

  • une certification Qualiopi, indispensable pour que vous puissiez obtenir des aides au financement via votre OPCO
  • de nombreux clients qui nous font confiance depuis des années
  • un manifeste pour garantir des formations à taille humaine, des formateurs passionnés, de véritables workshops...
  • 165 formations au catalogue, 1641 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • 99% des participants qui se disent satisfaits de nos formations
  • la possibilité de vous proposer un accompagnement personnalisé, du conseil ou un suivi après la formation

* Nombre de personnes ayant répondu au questionnaire de satisfaction sur cette formation depuis 2012