Noyau Linux et développement de drivers
Pour connaitre les prochaines sessions de formation en Logiciel embarque et programmation cliquez ici.
Le support pour les périphériques est assuré sous Linux par des pilotes (drivers) dont le code se déroule dans le noyau du système d’exploitation. Il est donc nécessaire pour le développeur amené à écrire ou à tester des pilotes de périphériques de maîtriser les concepts propres à la programmation noyau.
Cette formation vous permettra de concevoir, développer et déployer un pilote de périphérique pour le noyau Linux.
OBJECTIFS
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
PUBLIC VISE
Concepteurs, techniciens et ingénieurs de développement et chefs de projets techniques qui souhaitent concevoir de futurs produits basés sur des cartes ARM sous Linux.
PREREQUIS
La maîtrise du langage C. et les commandes de base GNU/Linux.
Les commandes de base sont indispensables et une première expérience sur Linux est recommandée.
Un PC avec webcam, haut-parleur et micro et une liaison Internet sont requis.
Un deuxième écran est recommandé
INTERVENANT
Expert spécialisée dans l’intégration de solutions Open Source. Il est également l’auteur d’ouvrages sur "Linux embarqué"
Le Programme CAP’TRONIC aide, chaque année, 400 entreprises à monter en compétences sur les technologies liées aux systèmes électroniques et logiciel embarqué.
PRIX
Non-adhérent : 1750€ HT
Adhérent CAP’TRONIC : 1350€ HT
PROGRAMME
Tour de table
Introduction au noyau Linux
Principes, espaces utilisateur et noyau
Historique
Principaux concepts
Nommage des versions
Licences
Compilation native et croisée d’un noyau standard
Modules Linux
Développement en espace noyau
API des modules Linux, écriture d’un module « Hello World »
Les fonctions module_init() et module_exit()
Manipulation des modules avec insmod, modprobe, rmmod, lsmod, modinfo
Macros d’identification des modules
Dépendances des modules
Passage de paramètres
Pilotes en mode caractère
Rappel sur les pilotes UNIX
Pilote statique et dynamique
Les différents types de pilotes (char, block, network)
Structure d’un pilote en mode caractère (char)
Principales fonctions du pilote
Interface avec l’espace utilisateur (majeur et mineur) différentes méthodes d’allocation
La structure file_operations
Les classes de pilotes, utilisation de la classe misc, création de classe
Échanges de données avec l’espace utilisateur
Traitement des interruptions
Threads noyau
Ports et mémoire d’entrée sortie
Projection en mémoire, utilisation de mmap()
Verrouillage (spinlock et mutex)
Mesure du temps et compteurs
Bus Platform
Introduction générale à la séparation Device/Driver
Le bus virtuel Platform
Modules driver
Modules devices
Configuration d’une carte électronique
Le "devices tree"
Les "overlays"
Bus PCI
Introduction générale au bus PCI (historique, versions, performances)
Ressources d’un périphérique PCI (Base Address Register, interruptions)
Registres de configuration
Le bus PCI sous Linux
Utilisation de lspci
Écriture d’un pilote PCI générique
Table des identifiants
Descripteur de pilote
Allocation et libération, fonctions probe() et remove()
Ajout d’une interface en mode caractère (char driver)
Test du pilote sur la carte réseau du PC virtuel
Bus USB
Introduction générale au bus USB (historique, versions)
Contrôleur (OHCI, EHCI) et connectique
Principe de fonctionnement host et device
Structure du périphérique
Les messages USB
Le bus USB sous Linux
Utilisation de lsusb
Écriture d’un pilote USB pour un périphérique simple de type HID (Human Interface Device)
Utilisation de UDEV, gestion de l’attachement et du détachement d’un périphérique HID
Cas général d’URB (USB Request Block)
Mise au point avec USBMON
Écriture de « pilote » USB en espace utilisateur, introduction à hidraw et libusb
Interfaces/bus divers (GPIO, I2C, SPI)
Interfaces de la carte Raspberry Pi
GPIO sous Linux en espace utilisateur et noyau (génération d’une interruption)
Bus I2C et SPI sous Linux (afficheur 7 segments et capteur de luminosité)
Introduction aux pilotes réseau
Rappels sur le réseau sous Linux
Spécificité des pilotes réseau, positionnement par rapport à la pile et au bus (PCI, USB, ...)
Les fonctions d’un pilote réseau
Les structures net_device et net_device_ops
Manipulation du socket buffer (struct sk_buff)
Écriture d’un pilote réseau minimal faketh, création de l’interface fake0
Test du pilote avec l’outil tcpdump
Pilotes réseau PCI et USB, introduction à USBnet
Introduction à la NAPI
Introduction aux pilotes en mode bloc
Architecture d’un pilote en mode bloc (block driver), notion degendisk
Développement d’un pilote de disque mémoire (ramdisk) → SBD (Simple Block Device)
Test du pilote → partitionnement, formatage, lecture et écriture de données
Mise au point en espace noyau
Mise au point etprofilingsous Linux
Introduction à GDB
Exemple de l’agent GDB SERVER (espace utilisateur)
Agents pour la mise au point noyau
Sonde JTAG
Émulateur QEMU
KGDB
Mise au point du noyau statique (analyse de kernel panic)
Mise au point d’un module dynamique (ko)
Introduction à Ftrace (profiling noyau)
Utilisation de trace-cmd et kernel shark
Tour de table
ORGANISATION
MOYENS PEDAGOGIQUES
Outil de visioconférence. Support de cours en anglais. La formation alternera des exposés théoriques et un ou des cas pratiques fil rouge et se clôtura par une action de synthèse des concepts et méthodologies clefs. Une assistance pédagogique sur le cours sera assurée par le formateur pendant 1 mois à l’issue de la formation.
MOYENS PERMETTANT D’APPRECIER LES RESULTATS DE L’ACTION
Evaluation de l’action de formation par l’envoi d’un questionnaire de satisfaction à chaud à l’issue de la formation, puis d’un questionnaire à froid quelques semaines après la formation.
MOYEN PERMETTANT DE SUIVRE L’EXECUTION DE L’ACTION
Evaluation des connaissances via un questionnaire avant et après la formation.
SANCTION DE LA FORMATION
Attestation d’assiduité.
Remarque : Jessica France est titulaire d’un numéro d’agrément de formation continue et est référencé DATADOCK depuis le 1er juillet 2017. Cette formation est éligible au financement par votre Opérateur de Compétences (OPCO) hors CPF.
RENSEIGNEMENTS ET INSCRIPTION
Florence CAGNARD, cagnard@captronic.fr - 06 70 73 23 43
Pour toute question y compris les conditions d’accès pour les publics en situation de handicap.
Les inscriptions sont closes. Pour connaitre les prochaines sessions de formation en Logiciel embarque et programmation cliquez ici.
Informations mises à jour le 22/03/2023