Formation Écriture de drivers Linux

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 !

Prix (Formation inter-entreprise)

2600€ HT / personne

Durée

4 jours

Dates

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

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é

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...
  • 153 formations au catalogue, 1629 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

Besoin d'aide ?

Vous souhaitez discuter avec nous à propos de votre projet de formation ?
Vous voulez plus d'information sur une formation ou notre fonctionnement ?


Rappel Email

Nos forces

  • Des formations à taille humaine
  • Des formateurs passionnés
  • Des véritables workshop
Accéder au Manifeste

Nos clients

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é

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...
  • 153 formations au catalogue, 1629 sessions depuis nos débuts en 2012 avec une moyenne de satisfaction de 4,6/5
  • la possibilité de vous proposer un accompagnement personnalisé ou du conseil après la formation

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