Réservez les formations disponibles partout en France !

location-dot
location-dot
location-dot
À partir de
location-dot
2da83165-8c2b-417e-b352-4d93b7500072
image OF
  1. Accueil
  2. Numérique
  3. Informatique
  4. Linux
  5. Formation Noyau Linux & développement de drivers
Formation Noyau Linux & développement de drivers

Formation Noyau Linux & développement de drivers

Qualiopi
En centre
Non éligible CPF
Objectifs
Programme

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

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 *

 

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

 

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

Public visé

Linux developers, Linux projects managers

Prérequis

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

Informations complémentaires

Matériels :

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

Autres formations disponibles :
formation
Asnières-sur-Seine (92600)
Architecture Linux avec SYSTEMD et D-BUS
Prochaines sessions disponibles :04 déc.
Qualiopi
En centre
Non éligible CPF
Prochaines sessions disponibles :16 déc.
Qualiopi
En centre
Non éligible CPF
logo ouformer
Réalisation :Definima
Utilisation des cookies

Nous utilisons des cookies pour vous fournir l'ensemble de nos services, notamment la recherche et les alertes. En acceptant, vous consentez à notre utilisation de ces cookies.

Refuser
Accepter