JDN > Formations professionnelles > Finance, Gestion, Audit > Consulting > Formation Drivers Linux: Ecritures de drivers Linux




Formation Drivers Linux: Ecritures de drivers LinuxInformations pratiquesCentre de formation ac6-formation

 Formation Drivers Linux: Ecritures de drivers Linux


 ac6-formation, COURBEVOIE
 Formation inter entreprise / intra entreprise


Objectif * Maîtriser les outils kernel de développement et de mise au point
* Découvrir la gestion du multi-core dans le noyau Linux
* Programmer les IO, les interruptions, les timers, le DMA
* Adapter les sources des drivers du marché
* Installer et intégrer les drivers dans un kernel linux
* Gérer les interfaces standard synchrones, asynchrones et ioctl
* Développer les structures des drivers caractères, blocs et réseaux
* Comprendre les spécificités de la version 2.6
* Connaître les évolutions qui ont eu lieu jusqu'au noyau 2.6.23
* Maîtriser les techniques de debugging noyau avec les sondes jtag Lauterbach.
Contenu Présentation & Architecture
* Historique
* Licences GPL et open source
* Distributions et versions de Linux
* Architecture du noyau Linux

Programmation Linux Noyau
* Outils de développement
* Outils de compilation
* Sources de documentation
* Makefile
* Développement des modules noyaux
* Différences entre applications utilisateur et noyau
* Ecriture d'un module noyau (licence, paramètres, exportation de symboles)
* Chargement et gestion des versions des modules noyau
- Exercice : Réalisation d'un système simple de génération sélective dynamique de traces noyau
* Présentation des structures objets du noyau Linux
* Kobject, kset
* Debug noyau
* Traces dans le code noyau (printk)
* Messages Oops!
* Patchs permettant le debug noyau (kgdb, ikd)
- Exercice : Mise en oeuvre de la sonde jtag Lauterbach
* Allocation mémoire
* Algorithme d'allocation mémoire buddy et slab/slob/slub
* Allocations bloquantes ou "atomiques"
* Limitations de l'allocation dynamique et intérêt de l'allocation statique au boot
* Boot des drivers
* Zones mémoire d'allocations des drivers
* Allocation dynamique et au boot

Multi-tâches Noyau
* Gestion des tâches
* Task struct
* Pile noyau et détermination de la tâche courante (macro "current")
* Quotas d'utilisation des ressources (temps CPU, occupation mémoire, fichiers ouverts...)
* Programmation concurrente
* Multi-tâche, Multi-coeur et Hyperthreading
* Quand et comment masquer la préemption
* Spinlocks (simples et "lecture/écriture")
* Seqlocks (nouveaux en 2.6)
* Sémaphores
* RCU (nouveaux en 2.6)
- Exercice : Protection des méthodes d'un objet noyau contre une exécution parallèle
* Timers
* Jiffies
* Timers haute résolution
* Envoi de signaux
- Exercice : Mise en évidence des problèmes possibles à l'aide de timers

Introduction aux drivers Linux
* Intégration d'un pilote dans les sources de Linux
* Fichiers Makefile du noyau
* Fichiers Kconfig (description de l'interface de configuration du noyau)
* Concepts des pilotes Linux
* Pilote en mode utilisateur/pilote en mode noyau
* Numéros majeur/mineur et devnums (nouveau en 2.6). Fichiers spéciaux
* Installation d'un pilote
* Structures associées aux pilotes (struct inode, struct file, file descriptor)
* Transferts de mémoire entre espace noyau et espace utilisateur
- Exercice : Ecriture du code d'initialisation d'un pilote

Pilotes caractère
* Ouverture/fermeture
* Restriction à une seul ouverture/un seul utilisateur
* Différence entre "close" et "release"
- Exercice : Ecriture du code d'initialisation d'un driver logiciel
* Transferts de mémoire entre espace noyau et espace utilisateur
* Différences entre adresses virtuelles, logiques, physiques et bus
* Espaces d'adressage des processus. Swap et pagination
* Fonctions de copie entre espaces
* Fonctionnement en "zéro copie" grâce au mapping d'adresses utilisateur dans le noyau
* Lecture et écriture
* Fonctions de base (read/write)
* Lecture/écriture combinées (readv/writev)
* Fonctions asynchrones en mode synchrone (aio_read/aio_write)
- Exercice : Ecriture des routines de lecture-écriture d'un pilote logiciel (version sans synchronisation)
* Contrôle des périphériques
* Fonction ioctl
* Choix des codes de commandes
- Exercice : Modification des paramètres du périphérique à travers un IOCTL

Entrées sorties synchrones et asynchrones
* Synchronisation des tâches
* Files d'attente
* Mise en attente/réveil d'une tâche
* Attente exclusive
* Attente sur un bit (nouveau en 2.6)
* Evénement de complétion
* Entrées/sorties synchrones
- Exercice : Ecriture des fonctions de lecture/écriture synchrones
* Entrées/sorties asynchrones
* Requêtes non bloquantes
* Asynchrone multiplexé (select et poll)
* Asynchrone notifié (signal SIGIO)
* Asynchrone vrai (totalement parallèle)
- Exercice : Ajout des fonctions de gestion des E/S asynchrones

Accès au matériel et interruptions
* Accès aux registres des périphériques
* Espace d'IO et espace de mémoire physique
* Réservation et utilisation des ports d'IO (espace d'IO)
* Réservation et utilisation des plages d'IO en espace physique
* Mapping des registres dans un pilote
* Problèmes d'optimisation (cache, out-of-order, volatile)
- Exercice : Ecriture d'un pilote d'entrées/sorties parallèles (GPIO)
* Direct Memory Access (DMA)
* Slave DMA (ISA)
* DMA Bus Master (PCI)
* Mapping d'un buffer noyau dans l'espace du périphérique
* intérêts des mappings permanent ("coherent mapping") et temporaire ("streaming DMA")
* Spécificités des interfaces PCI
* Enumération
* Espace de configuration
* Association dynamique pilote/périphérique (hotplug)
* Interruptions
* Problèmes spécifique aux Multi-coaurs (SMP)
* IRQ, ISR, "top half" et "bottom halves" (softirq, tasklet, work_queue)
* Contexte d'exécution des gestionnaires d'interruption (atomique)
* Partage d'interruptions
* Affetation d'interruptions à des processeurs
* Synchronisation entre code noyau, "top half" et "bottom halves"
* Fonctions atomiques
- Exercice : Ajout d'un mécanisme d'attente de changement d'état de la GPIO sur interruption

Pilotes bloc
* Structures
* Représentation d'un disque (struct gendisk)
* File des requêtes (struct request queue)
* Interface
* Chargement/déchargement (open/release)
* Gestion des media amovibles
* Contrôle (ioctl). Ioctl de description de la géométrie du disque
* Routine de stratégie
* Relation entre lecture/écriture et routine de stratégie
* Algorithmes d'ordonnancement des requêtes ("elevators")
* Structures décrivant les requêtes (struct bio et bio_vec)
- Exercice : Analyse d'un pilote de Ramdisk

Pilotes réseaux
* Structures
* Représentation d'une interface réseau (struct net_device)
* Paquet réseau (struct sk_buff)
* Cas du "scatter/gather"
* Interface
* Réception de paquet
* Envoi de paquet
* Gestion des paquets perdus
* Statistiques de l'interface
* Nouvelles API réseau (NAPI, nouveau en 2.6)
* "interrupt mitigation" (suppression des IRQ inutiles)
* "paquet throttling" (désengorgement des couches protocolaires)

Pilotes USB
* La norme USB
* Notion de configuration
* Notion d'interface (rôle d'un périphérique)
* Notion de terminaison (canal de communication)
* Types des terminaisons (contrôle, interruption, bloc, isochrone)
* Drivers USB host
* Requêtes synchrones (directes)
- Exercice : Examen d'un pilote USB host
Niveau requis Connaissance de la programmation Linux utilisateur et système
Coût 1900 euros
Durée de la formation 4 jours

 

Mise à jour le 01 Mars 2011 
Mettre à jour | Envoyer cette fiche 


Rechercher
> Recherche avancée
> Toutes les formations
> Top des recherches
0-9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z


Les informations contenues dans l'Annuaire des formations sont communiquées par les établissements concernés. Elles n'engagent en rien la responsabilité de l'éditeur du Journal du Net. © Benchmark Group


Rechercher une formation
Recherche avancée | Toutes les formations
Top des recherches


ENST Telecom Paris formation continue et professionnelle – Cegos
CNFCE ORSYS
Journal du Net Voir un exemple
Management Voir un exemple
Emploi Voir un exemple
Toutes nos newsletters

Annonces Google