Formation Noyau linux et developpement de drivers

Ref :

Avis client : 3,3/4 - Note calculée sur la totalité des retours au cours des six derniers mois

Embarqué & IOT Durée :
3 jours - 21 heures
Lieu :
Multi-sites et sessions à distance

Tarif

Intra :
Inter :
1 650€ HT /pers
Inscrivez-vous

Demande d'informations

Les prochaines dates par ville

[+]Formation à distance

[+]Asnières-sur-Seine - Présentiel

[+]Grenoble

Pré-requis

UNIX/Linux knowledge (using the shell !) - C language knowledge

Matériel :

The Linux environment is Ubuntu 18.04 (VirtualBox)
The training materials are provided as an .ova (Open Virtual Archive) file. It is therefore necessary to install VirtualBox on the target machine used by the trainee. In order to save time it is advisable to pre-install VirtualBox before the date of the training. Full installation (in order to have an optimized screen resolution) requires installing the extension pack, see: https://www.virtualbox.org/wiki/Downloads.

 Supported operating systems are:

  •   Windows (XP or higher)
  •   Linux
  •   Mac OS X 10.5 or higher

CPU : i5 or better
RAM : 4Gb or more
Disk : 30 GB or more

Public concerné

Linux developers, Linux projects managers

Objectifs

Introducing the Linux kernel (architecture, compilation)
Introducing the kernel development API

  • kernel module API
  • char, network and block devices
  • kernel support for PCI, USB and platform device

Introducing the device tree
Debugging and profiling  kernel and drivers

Programme détaillé

A practical work is available for each item with a “star” (*).

Linux introduction

  • Introducing the Linux project
  • Licensing !
  • Linux (UNIX) architecture (user/kernel space)
  • Introducing “systemd”
  • Using Linux kernel sources
    • Get the source code
    • Configuration
    • Native (x86) and cross compilation (ARM) *

The kernel module API

  • Writing a simple “Hello World” module *
    • The “init” and “exit” functions
    • Writing a Makefile *
    • Loading and unloading module using “kmod”
  • Module dependencies *
  • Using module parameters *

The char driver API

  • Module vs driver
  • Drivers categories (char, block, network)
  • Char driver syscalls (open, read, write, close, ioctl)
  • Registering a char driver *
  • Using kernel “classes” *
  • Using the CDEV interface *
  • Locking features (“spinlock” and “mutex”) *
  • Managing hardware
    • Memory allocation *
    • Interrupt handling *
    • I/O ports and memory-mapped access *
    • Memory mapping (the “mmap” system call) *
    • DMA *
  • Writing a generic PCI driver *
  • Writing a simple USB driver (HID) *
  • Using the platform device/driver API for embedded systems
    • Introducing the device tree (with the QEMU/ARM platform)
    • DT syntax and examples *
    • Using “configfs” to load a DT overlay *

The network driver API

  • Using Linux network
  • Introducing network drivers
  • The “net_device” and “net_device_ops” structures
  • Socket buffer (SKB)
  • Writing and testing the “faketh” dummy network driver *

The block driver API

  • Block driver vs char driver
  • The new “blk-mq” framework (Linux kernel 5.x)
  • Writing a simple block driver (using ramdisk) *

Interacting with user space

  • Device node approach limitation (USB but no hotplug !)
  • Understanding “sysfs”
  • Using “udev”  *
  • “Netlink” sockets
  • Writing and testing rules *
  • modalias (device / driver association) *
  • Using “udevadm”

Debugging drivers

  • Using GDB in kernel space (QEMU/ARM)
  • Debugging static kernel and module (.ko)
  • Profiling kernel and drivers with Ftrace

Modalités pédagogiques

Tous nos stages reposent sur une alternance entre transfert de savoir-faire et d’attitudes, avec des exercices concrets, des tests avec les participants et des analyses de situations. Cette méthode permet une appropriation rapide des sujets par les stagiaires.
Notre formateur s’appuie sur les connaissances préexistantes du stagiaire. Il combine diverses modalités pédagogiques : des exposés théoriques, des temps d’échanges, des études de cas, permettant à l’apprenant d’être acteur de la séance de formation.
Lors des formations en groupe, l’accent est mis sur l’interactivité, intégrant ainsi la possibilité de progresser en équipe et de réussir ensemble.
Le scénario de nos cours est adapté afin de faire directement référence aux attentes des stagiaires. Les exemples et exercices sont, dans la mesure du possible, au plus près des missions réalisées par vos collaborateurs.
En effet, notre processus de personnalisation d’accès à la formation nous conduit à choisir et combiner différentes méthodes classiques qui ont fait preuve de leur efficacité, en fonction des objectifs à atteindre et du public reçu en formation.

Nos Actualités