Get familiar with device driver development for the Linux kernel
Objectives and target audience
This course targets engineers who wish to develop or improve device drivers in the Linux kernel, for projects on embedded platforms, or on the traditional PC platform. In five days, through theory and practical labs, the course makes you familiar with the essentials of kernel development: kernel architecture, the main APIs, integration of device drivers with other parts of the kernel and with user applications.
At the end of this course, you will be ready to work on Linux device driver development projects.
Outline
Here are the main topics that we cover:
- Introduction to the Linux kernel
- Kernel source code
- Configuring, compiling and booting the kernel
- Linux kernel modules
- Memory management and accessing hardware
- Character device drivers
- Processes, scheduling, waiting for resources and interrupt management
- Locking
- Kernel debugging techniques
- mmap
- Kernel architecture for device drivers
- Using DMA
- PCI device drivers
- Kernel booting details
- Studying a specific driver type (USB, serial, framebuffer, MTD, block or network)
- Porting the Linux kernel to a new hardware platform
- Power management
- Kernel size and boot time optimization
- Working with the community
- Managing sources with git.
See the detailed agenda.
Training materials
All the training materials used during this course are freely available on our website, allowing you to make sure that the course exactly matches your needs.
Practical labs
Each lecture in our course is followed by a practical implementation, representing 50% to 60% of the whole course time. Labs are performed an embedded ARM board (USB-A9263 from CALAO systems), on which you will progressively implement drivers in the Linux kernel.
Prerequisites
Participants must be familiar with programming in the C language.
Participants should be familiar with the UNIX or Linux command line interface. Those who aren’t should do some self training using our training materials on this topic). Without being absolutely necessary, this will make them more productive in your practical labs.
If you develop on embedded hardware, we also recommend to take our Embedded Linux course first. This is not a prerequiste as you will be given all the instructions to operate your embedded Linux system, but you it will help you to understand the environment you are using. In addition, you will need embedded Linux knowledge anyway if your involved in the development of drivers for embedded products.
Training summary
- Title
- Linux kernel and driver development
- Contents
- See our detailed agenda
- Location
- On your own site (anywhere in the world), or in one of our public training sessions.
- Duration
- 5 days.
- Language
- English or French
- Audience
- People developing device drivers for the Linux kernel. This session doesn’t only target embedded developers, but also any person who has to develop Linux device drivers, has to solve kernel bugs, or just needs a better knowledge about the kernel.
See our main training page for generic details about our training sessions.
