Formation Noyau linux et developpement de drivers
Ref :Les prochaines dates par ville
[+]Asnières-sur-Seine
[+]Formation en distanciel
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.