Formation Noyau linux et developpement de drivers

Ref :

Avis client : 8,13/10 - En date du 30.06.2023 (évaluations réalisées sur les 6 derniers mois)

Embarqué & IOT Durée :
3 jours - 21 heures
Lieu :
Asnières s/ Seine ou en Distanciel

Tarif

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

Demande d'informations

Les prochaines dates par ville

[+]Asnières-sur-Seine

Du : 07 octobre 2024 Au : 09 octobre 2024

[+]Formation en distanciel

Du : 08 juillet 2024 Au : 10 juillet 2024

Pré-requis

The skills required for the internship are the following:

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

Matériel :

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

The following table shows the PC requirements (type of CPU, RAM, free space on the hard disk).

- 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
    • Obtaining 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 (debugfs) -> trace-cmd

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