Formation noyau Linux et développement de drivers

Transcription

Formation noyau Linux et développement de drivers
Formation noyau Linux et développement de
drivers
Durée : 4 jours
Public visé
Ingénieurs et chefs de projets techniques qui acquérir les compétences nécessaires à la conception et à la
réalisation de pilotes de périphériques pour le noyau Linux
Objectif de la formation
Cette formation va permettre à des ingénieurs de développement maîtrisant la programmation en C de
concevoir, développer et déployer un pilote de périphérique pour le noyau Linux. Le but de la formation est
d'aborder les points suivants :
• Introduction à l'architecture du noyau Linux (sources, configuration, compilation native ou croisée)
• API des modules Linux
• Pilotes en mode caractère (char drivers)
• Concepts « avancés » (interruptions, accès au matériel, registres d'I/O, mémoire, kernel threads)
• Traitement des bus PCI et USB
• Introduction aux pilotes en bloc (block drivers) et réseau (network drivers)
• Mise au point en espace noyau
A l'issue de cette formation, vous serez en mesure de prendre en charge intégralement le développement
d'un pilote de périphérique sous Linux.
Connaissances requises
Pré-requis matériel
• Connaissance utilisateur Linux ou à défaut
UNIX
• OS Windows (XP ou supérieur), Linux ou bien
MacBook sous Mac OS X 10.5 ou supérieur.
• Notions de langage C
• Droits administrateur sur le système Windows
ou MacOS X afin d'ajouter l'image VirtualBox et
le pilote du câble USB/Série
• Notions de manipulation
commande (shell)
de
la
ligne
de
• Le stagiaire utilisera son PC portable (ou un
MacBook) pour la formation.
• La machine devra disposer AU MINIMUM de 2
Gode mémoire vive, de 20 Go d'espace libre sur
le disque.
Ils ont bénéficié du transfert de compétences Open Wide Ingénierie !
Une formation de Référence !
Cette formation a été conçue par Pierre Ficheux, auteur des quatre ouvrages Linux embarqué.
Formation noyau Linux et développement de
drivers
Durée : 4 jours
Programme formation Noyau Linux et développement de drivers
•
•
•
•
Introduction au noyau Linux
o
Principes, espaces utilisateur et noyau, Historique, Principaux concepts
o
Nommage des versions, Licences
o
Compilation native et croisée d'un noyau standard
Modules Linux
o
Développement en espace noyau, API des modules Linux, écriture d'un module « Hello World »
o
Les fonctions module_init() et module_exit()
o
Manipulation des modules avec insmod, modprobe, rmmod, lsmod, modinfo
o
Macros d'identification des modules (MODULE_LICENSE, etc.)
o
Dépendances des modules, Passage de paramètres
Pilotes en mode caractère
o
Rappel sur les pilotes UNIX, Pilote statique et dynamique,
o
Les différents types de pilotes (char, block, network), Structure d'un pilote en mode caractère (char)
o
Principales fonctions du pilote →open(), release(), read(), write(), ioctl(), …
o
Interface avec l'espace utilisateur (majeur et mineur) différentes méthodes d'allocation
o
La structure file_operations, Les classes de pilotes, utilisation de la classe misc, création de classe
o
Échanges de données avec l'espace utilisateur →copy_from_user(), copy_to_user()
o
Traitement des interruptions (top-half, bottom-half, wait queue)
o
Threads noyau, Ports et mémoire d'entrée sortie (request et release)
o
Projection en mémoire, utilisation de mmap()
o
Verrouillage (spinlock et mutex)
o
Mesure du temps et compteurs
Bus PCI
o
Introduction générale au bus PCI (historique, versions, performances)
o
Ressources d'un périphérique PCI (Base Address Register, interruptions)
o
Registres de configuration
o
Le bus PCI sous Linux, Utilisation de lspci
o
Écriture d'un pilote PCI générique
o
Table des identifiants (pci_device_id)
o
Descripteur de pilote (struct pci_driver)
o
Allocation et libération, fonctions probe() et remove()
o
Ajout d'une interface en mode caractère (char driver)
o
Test du pilote sur la carte réseau du PC virtuel
Formation noyau Linux et développement de
drivers
Durée : 4 jours
•
•
•
•
Bus USB
o
Introduction générale au bus USB (historique, versions), Contrôleur (OHCI, EHCI) et connectique
o
Principe de fonctionnement host et device
o
Structure du périphérique →device,configuration(s),interface(s),endpoint(s)
o
Les messages USB → CONTROL, INTERRUPT, BULK, ISOCHRONOUS
o
Le bus USB sous Linux, Utilisation de lsusb
o
Écriture d'un pilote USB pour un périphérique simple de type HID (Human Interface Device)
o
Table des identifiants (usb_device_id), Descripteur de pilote (struct usb_driver)
o
Allocation et libération, fonctions probe() et disconnect()
o
Ajout d'une interface en mode caractère (char driver), structureusb_class_driver
o
Test du pilote sur la carte réseau du PC virtuel (tablette virtuelle) et sur un périphérique réel (Big Red
Button), Utilisation de UDEV, gestion de l'attachement et du détachement d'un périphérique HID
o
Cas général d'URB (USB Request Block), Mise au point avec USBMON,
o
Écriture de « pilote » USB en espace utilisateur, introduction à hidraw et libusb
Interfaces/bus divers (GPIO, I2C, SPI)
o
Interfaces de la carte Raspberry Pi
o
GPIO sous Linux en espace utilisateur et noyau (génération d'une interruption)
o
Bus I2C et SPI sous Linux (afficheur 7 segments et capteur de luminosité)
Introduction aux pilotes réseau
o
Rappels sur le réseau sous Linux
o
Spécificité des pilotes réseau, positionnement par rapport à la pile et au bus (PCI, USB, ...)
o
Les fonctions d'un pilote réseau →open(),stop(), start_xmit(), …
o
Les structures net_device et net_device_ops, Manipulation du socket buffer (struct sk_buff)
o
Écriture d'un pilote réseau minimal faketh, création de l'interface fake0
o
Test du pilote avec l'outil tcpdump,
o
Pilotes réseau PCI et USB, introduction à USBnet, Introduction à la NAPI
Introduction aux pilotes en mode bloc
o
Architecture d'un pilote en mode bloc (block driver), notion de gendisk
o
Développement d'un pilote de disque mémoire (ramdisk) → SBD (Simple Block Device)
Initialisation, Déclaration du nouveau disque, Gestion des requêtes
o
•
Test du pilote → partitionnement, formatage, lecture et écriture de données
Mise au point en espace noyau
o
Mise au point et profiling sous Linux,
o
Introduction à GDB,Exemple de l'agent GDB SERVER (espace utilisateur)
o
Agents pour la mise au point noyau : Sonde JTAG, Émulateur QEMU, KGDB
o
Mise au point du noyau statique (analyse de kernel panic) et Mise au point d'un module dynamique (.ko)
o
Introduction à Ftrace (profiling noyau), Utilisation de trace-cmd et kernelShark

Documents pareils

CV Expert Linux embarqué

CV Expert Linux embarqué et les problèmatiques temps réel. • Recherche et développement des algorithmes de déplacement des automates (cinématique inversée, calculs matriciels, génération de modèles numériques des lentilles...

Plus en détail