Support & Downloads

Quisque actraqum nunc no dolor sit ametaugue dolor. Lorem ipsum dolor sit amet, consyect etur adipiscing elit.

s f

Contact Info
198 West 21th Street, Suite 721
New York, NY 10010
youremail@yourdomain.com
+88 (0) 101 0000 000
Follow Us

Cours Linux - Drivers & Programmation noyau

réf : SYT-LDP

Cours Linux-Drivers et programmation noyau

Objectif de formation : Maîtrisez le développement de pilotes robustes adaptés à différentes distributions Linux. De l’accès au matériel à l’utilisation de l’interfaçage asynchrone, vous explorerez les défis de l’écriture d’un pilote et comment il diffère des autres langages de programmation. Ce cours est conçu pour les développeurs qui sont familiers avec le C et qui veulent en savoir plus sur la programmation du noyau.

Objectifs pédagogiques

  • Gérer le développement de pilotes de périphériques
  • Appréhender en détail les mécanismes internes du noyau
  • Développer et incorporer de nouveaux éléments dans le noyau Linux
  • Ecrire un pilote périphérique en mode caractère ou bloc

Pré-requis

Bases solides sur Linux/Unix, Compétences en programmation C 

Public concerné

Développeurs Linux/Unix…

Programme de formation Linux

  • Tour d’horizon du système et du rôle du noyau
  • Présentation des sites de référence
  • Spécificités des noyaux 3.x et 4.x
  • Cycles de développement du noyau, les patchs
  • Mode de fonctionnement & appels système
  • Organisation des sources
  • Présentation du principe de compilation du noyau et des modules
  • Dépendances & symboles
  • Exportations de symboles
  • Chargement du noyau

Travaux pratiques

Compilation et installation d’un noyau 3.x.

  • Outils de développement
  • Outils de débogage
  • Environnement de débogage
  • Outil de gestion de version
  • Traçage des appels système

Travaux pratiques

Installation de l’ensemble des outils et des sources pour la conception d’un module. Paramétrage vers le chargement automatique de module au boot. Déploiement et test de modules simples

  • Tour d’horizon des types de périphériques
  • Fonctionnement du noyau & protection des variables globales
  • Représentation des threads
  • Contexte d’exécution
  • Scheduler de Linux et la préemption
  • Création d’un thread noyau

Travaux pratiques

Conception d’un module de création de thread noyau lors de l’insertion et déchargement lors du rmmod. Ecriture d’un module d’horodatage d’événements à haute précision. Ecriture d’un module d’information sur les structures internes des processus.

  • Gestion et organisation mémoire pour les architectures UMA et NUMA
  • Espace d’adressage utilisateur et noyau
  • Gestion de pages à la demande
  • Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire
  • Gestion des accès à la mémoire
  • Problèmes liés à la sur-réservation de la mémoire
  • Gestion de la mémoire sur x86 et ARM, utilisation des Hugepages
  • Optimisation des appels systèmes
  • Synchronisations & attentes dans le noyau
  • Ticks & Jiffies dans Linux
  • Horloge temps réel, RTC (real Time Clock), implémentation des timers
  • Interface timers haute résolution & estampilles
  • Outils spécifiques au noyau, listes chaînées, kfifo et container_of
  • Interface noyau avec /proc par le procfs

Travaux pratiques

Usage des timers et des estampilles & implémentation d’un accès au procfs. Mise en œuvre de l’allocation mémoire dans le noyau et optimisation à l’aide des slabs.

  • Conception de pilotes de périphériques caractère
  • Virtual File System
  • Méthodes associées aux périphériques caractères
  • Gestion des interruptions DMA & accès au matériel
  • Enregistrement des pilotes de périphériques de type caractère et optimisations

Travaux pratiques

Rédaction progressive d’un pilote périphérique en mode caractère. Implémentation des synchronisations d’entrée-sortie entre threads et avec la routine d’interruption. Implémentation de l’allocation mémoire.

  • Introduction au framework
  • 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

Travaux pratiques

Implémentation d’un bus, d’un driver et d’un device driver. Adaptation du pilote de périphériques caractère. Exemple d’utilisation de l’interface.

  • Principe des périphériques en mode bloc & enregistrement du driver
  • Callback de lecture et écriture & support du formatage et opérations avancées
  • Présentation de l’ordonnanceur des entrées-sorties par bloc du noyau
  • Conception des systèmes de fichiers
  • Enregistrement d’un nouveau système de fichiers

Travaux pratiques

Exemple de pilote complet de périphérique virtuel. Exemple d’un système de fichiers personnalisé.

  • Gestion des interfaces réseau sous Linux
  • Utilisation des skbuff
  • Les hooks netfilter
  • Intégration d’un protocole

Travaux pratiques
Exemple de driver réseau pour périphérique virtuel & implémentation de protocole réseau

  • Principe des périphériques USB & interface avec le module USB-core
  • Interaction du périphérique avec le noyau Linux
  • Construction d’un URB (USB Request Block)
  • Les gadgets USB

Travaux pratiques

Enregistrement d’un driver USB & écriture d’un driver en mode isochrone

Équipe pédagogique

Professionnel expert technique et pédagogique

Moyens pédagogiques et techniques

  • Espace intranet de formation.
  • Documents supports de formation projetés.
  • Exposés théoriques
  • Étude de cas concrets
  • Mise à disposition en ligne de documents supports à la suite de la formation.

Dispositif de suivi

  • Émargement numérique.
  • Mises en situation.
  • Formulaires d’évaluation de la formation.
  • Certificat de réalisation de l’action de formation Linux.

Vous avez une question ?

    Jours

    4 (28 heures)

    Prix

    2390 € HT

    Télécharger