Home header
Formations Linux temps réel, Linux embarqué, noyau et drivers Linux Liens





Formation Noyau Linux et Drivers

Réf.FormationDétailDuréeDatesLieuTarif
6110Noyau Linux et drivers 5 j. Nous consulter Nous consulter 2490 €
 

Autres formations Linux et Open-Source

 
1110Introduction à UNIX et Linux 4 j. Nous consulter Nous consulter 1990 €
1120UNIX perfectionnement 4 j. Nous consulter Nous consulter 1990 €
2110Shell UNIX 4 j. Nous consulter Nous consulter 1990 €
3110Administration avancée Linux 5 j. Nous consulter Nous consulter 2490 €
3210XEN et virtualisation sous Linux 5 j. Nous consulter Nous consulter 2490 €
4110Programmation C sous UNIX 5 j. Nous consulter Nous consulter 2490 €
5110Réseaux Privés Virtuel 5 j. Nous consulter Nous consulter 2490 €
6120Linux embarqué et uBoot 5 j. Nous consulter Nous consulter 2490 €
6130Linux temps réel 5 j. Nous consulter Nous consulter 2490 €
6140Assembleur et SoC ARM 5 j. Nous consulter Nous consulter 2490 €


Noyau Linux et drivers
6110

Objectifs

Cette formation permet de passer en revue l'ensemble des outils disponible dans le noyau Linux pour écrire un driver Linux et d'apprendre à connaître les différents outils utiles pour la mise en oeuvre et le deboggage du noyau et des pilotes de périphériques.
Sont abordées les themes suivants:

  • caractéristiques et architectures du systèmes Linux. le chargement, le BSP, l'initialisation du noyau
  • la gestion mémoire
  • la gestion des threads utilisateurs et noyau, le scheduler
  • la gestion des périphériques
  • les mécanismes de synchronisation, barrières, spinlocks, sémaphores, mutex
  • les files systèmes, le VFS
  • configuration du noyau
  • Linux 2.6 driver framework
  • Gestion mémoire, DMA, synchronisation ...

Pré-requis

Au minimum: Bonnes connaissance des systèmes d'exploitation.
De préférence: Bonnes connaissance des systèmes d'exploitation et de la programmation en C.

Programme

Présentation du noyau

  • Vue d'ensemble du système et rôle du noyau.
  • Les sites de référence.
  • Spécificités des noyaux 2.6 et 3.x.
  • Cycles de développement du noyau, les patchs.
  • Mode de fonctionnement (superviseur et utilisateur). Appels système.
  • Organisation des sources (Include/linux, Arch, Kernel, Documentation, ...).
  • Principe de compilation du noyau et des modules.
  • Les dépendances et symboles.
  • Les exportations de symboles.
  • Le chargement du noyau (support, argument,...).
  • Travaux pratiques
    Compilation et installation d'un noyau 3.x.

Les outils utilisables

  • Outils de développement (Gcc, Kbuild, Kconfig et Makefile, ...).
  • Outils de débogage (GDB, KGDB, ftrace, ...).
  • Environnement de débogage (Linux Trace Toolkit, ...).
  • Outil de gestion de version (Git, ...).
  • Tracer les appels système (ptrace, ...).
  • Travaux pratiques
    Installer l'ensemble des outils et des sources pour générer un module pour le noyau. Ecriture et test de modules simples.

Gestion des threads, scheduling

  • Représentation des threads (structure task_struct, thread_info, ...).
  • Les threads, contexte d'exécution.
  • Les ordonnanceurs de Linux et la préemption.
  • Création d'un thread noyau (kthread_create, wakeup_process, ...).
  • Travaux pratiques
    Créer un module qui créé un thread noyau lors de l'insertion et le décharge 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

  • L'organisation mémoire pour les architectures UMA et NUMA.
  • L'espace d'adressage utilisateur et noyau.
  • Allocations mémoire, buddy allocator, kmalloc, slabs et pools mémoire.
  • La gestion des accès à la mémoire (les caches et la MMU).
  • La gestion de pages à la demande (demand paging), copy-on-write, allocations lazy.
  • Les problèmes liés à la sur-réservation de la mémoire (OOM killer).
  • Gestion de la mémoire sur x86 et ARM, utilisation des Hugepages.
  • Synchronisations et attentes dans le noyau, spinlocks, waitqueues, mutex et les completions.
  • L'horloge temps réel, RTC (real Time Clock), implémentation des timers, les jiffies.
  • Interface timers haute résolution, estampilles.
  • Les outils spécifiques au noyau, listes chaînées, kfifo et container_of.
  • L'interface noyau avec /proc par le procfs. Gestion mémoire par le procfs.
  • Travaux pratiques
    Utilisation des timers et des estampilles. Implémentation d'un accès au procfs. Mise en oeuvre de l'allocation mémoire dans le noyau et optimisation à l'aide des slabs.

Périphérique en mode caractère

  • Ecriture de pilotes de périphériques caractère.
  • Le VFS (Virtual File System).
  • Les méthodes associées aux périphériques caractères.
  • Gestion des interruptions, du DMA et des accès au matériel.
  • Enregistrement des pilotes de périphériques de type caractère et optimisations.
  • Travaux pratiques
    Ecriture 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. Enregistrement d'une interuption partagée.

Linux Driver Framework - sysfs

  • Présentation du framework, kobject, kset et kref. Interaction avec le sysfs (/sys).
  • 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 fichier

  • Principe des périphériques en mode bloc. Enregistrement du driver.
  • Callback de lecture et écriture. Support du formatage et opérations avancées.
  • 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 block 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.

Autres Drivers

  • Principe des périphériques USB. Interface avec le module USB-core.
  • Construction d'un URB (USB Request Block).
  • Les gadgets USB.
  • Les drivers audio
  • Les drivers vidéo, Linux Frame Buffer
  • les drivers d'entrée, drivers input.
  • Travaux pratiques
    Driver pour périphérique d'entrée (input)

Participants

Cette formation est adaptée aux techniciens et ingénieurs, désirant perfectionner leurs connaissances de Linux en vue de développer des pilotes de périphérique.

Matériel mis à disposition des participants

Les travaux pratiques du stage Linux embarqué sont réalisés sur:

  • Ordinateur portable ou station de travail sous Debian (RedHat ou Fedora sur demande(*)).

(*) Attention ces modifications peuvent entrainer une modification des themes abordés.

Mis en place des sessions

  • Nombre de participants: Le nombre de participant est limité à 8 par session
  • Formateurs: Nos formateurs sont tous des ingénieurs expérimentés, ayant plus de 10 ans de pratique du noyau Linux et de l'écriture de périphériques.
  • Sessions spéciales: Organisation de sessions en intra-entreprise sur demande. Dans ce cas nous pouvons adapter la formation à vos besoins précis.

Inscrivez-vous pour une session

MNIS est agréé pour les formations d'entreprise, la déclaration d'activité est enregistrée sous le numéro 11 75 43153 75 auprès du préfet de région d'Ile de France.

Envoyez-nous un email, indiquant la formation et les dates que vous avez retenues et nous contacterons pour finaliser avec vous votre inscription.
Cliquez pour cela sur l'icône à droite...


Consultez nos références - contactez-nous à formations@flinux.org.


©M.N.I.S FLinux fait partie du groupe M.N.I.S ©M.N.I.S