LINUX - Programmation noyau, Device drivers, BSP

(ref.003154A)

4 jours - 28 heures

Objectifs

  • Comprendre les mécanismes utilisés dans le noyau Linux
  • Comprendre comment ces mécanismes sont implémentés sur les plateformes PowerPC
  • Comprendre la séquence de boot de Linux et son implémentation sur les PowerPC
  • Programmer des drivers et les intégrer dans le noyau Linux.
  • Le cours est divisé en présentations et travaux pratiques. Les travaux pratiques permettent de mieux comprendre le contenu des présentations
  • Configurer et construire une image noyau Linux
  • Comprendre les différents types d'images noyau et de root filesystems
  • Comprendre la séquence de boot du noyau Linux et le code de bootstrap
  • Démarrer une application après le boot du noyau
  • Comprendre l'implémentation et l'initialisation Linux sur les processeurs PowerPC
  • Créer et charger des modules dans le noyau
  • Utiliser les outils de debug pour debugger le noyau
  • Comprendre les différents mécanismes de synchronisation et d'exclusion mutuelle du noyau et leur implémentation sur les PowerPC
  • Comprendre les exceptions et les interruptions et leur implémentation sur les PowerPC
  • Connecter les gestionnaires d'interruption et d'exception et utiliser les mécanismes "bottom half " pour planifier les fonctions
  • Utiliser les mécanismes "timer" pour attendre un délai, planifier les tâches périodiques, les événements datés
  • Comprendre la gestion de la mémoire par Linux
  • Comprendre comment les device drivers sont connectés au noyau Linux et programmer ces device drivers en utilisant les mécanismes vus précédemment

Partenaires

Prérequis

  • Expérience en programmation C
  • Connaissance de base des systèmes d'exploitation et des techniques de debug
  • Connaissance des mécanismes des processeurs ou des micro-contrôleurs

Configurations

  • Les travaux pratiques sont fait sous un environnement Linux

Contenu

Espace Utilisateur, Espace Noyau

BSP et Device Drivers

Licences

Sources Noyau

Configuration noyau

Construction noyau

Images noyau

La Bootline

Le Root Filesystem

Demarrage d'une application après le boot du noyau Linux

Configuration et compilation du noyau Linux

Boot du noyau sur la plateforme cible

Lancement d'una application au boot

Utilisation d'un root filesystem en RAM et d'un root filesystem monté NFS

Introduction

Ecriture de Modules

Construction des Modules

Chargement et Déchargement de Modules

printk

/proc

gdb, remote gdb, kgdb

Outils de traçage

Généralités

Planification

Files d'attente

"Atomic Operations" en C

Spinlocks

Sémaphores

Ecriture d'un module noyau

Chargement manuel et chargement automatique d'un module

Ecriture d'une procédure noyau réentrante

Debug de code noyau

Gestion Processeur des interruptions et des exceptions

Gestion des interruptions

Mécanisme "Bottom-Half" : BH et Tasklet

Gestion des exceptions

Timers Linux

Attente pendant un délai

Timestamping

Ecriture d'un gestionnaire d'interruption, connexion et activation du handler

Ecriture d'un BH et activation de celui-ci depuis un handler d'interruption

Attente pendant un délai court et un délai long

Exécution de code périodique

Timestamping haute résolution pour mesure de performances

Généralités

Allocation mémoire de l'espace noyau

Gestion des E/S

Gestion du cache

Gestion du DMA

Sujets divers

Généralités

Enregistrement d'un driver

Gestion des "device nodes"

Character Drivers

Structures de données et architecture générale

Méthodes d'implémentation des drivers

Block Drivers

Gestion "Request queue"

Gestion du cache buffer

Accès à l'espace utilisateur depuis un appel noyau

Récupération mémoire depuis le code d'initialisation

Ecriture d'un "character driver"

Ecriture d'un driver "block ramdisk" et installation d'un système de fichiers sur celui-ci

Notes

  • Les supports de cours seront fournis sur papier ou en format électronique à chaque participant pendant la formation