Linux – Drivers & Programmation noyau

0 Enrolled
28 heures
  • 28 heures
  • 68
  • 0
  • no
2,750.00€

Aperçu du cours

Objectif de formation : L’apprenant saura maîtriser le développement de drivers robustes et adaptés aux différentes distributions de Linux

Prérequis

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

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

Public ciblé

  • Développeurs Linux/Unix

Programme de formation

  • Introduction au noyau

    • 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.

  • Présentation des outils utilisables

    • 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

  • Gestion des threads & scheduling

    • 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 de la mémoire & du temps et de proc

    • 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.

  • Périphérique en mode caractère

    • 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.

  • Linux Driver Framework - sysfs

    • 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.

  • Périphérique en mode bloc et systèmes de fichiers

    • 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é.

  • Interfaces et protocoles réseau

    • 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

  • Drivers pour périphériques USB

    • 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

Instructeur

Avatar de l’utilisateur

bprigent

0.0
0 commentaire
0 Students
491 Courses
Main Content