Embedded Linux Device Driver Training
Place: Onsite or Online
Language: English
Request more information
Heidi Lehtomäki – Finland
phone: +358 40 196 0142
heidi.lehtomaki@nohau.fi
Lena Bernhardsson – Sweden, Norway
+46 (0) 40 59 22 09
lena.bernhardsson@nohau.se
Klaus Ahrensbach – Denmark
Phone: +45 3116 1019
ka@nohau.dk
On this “Embedded Linux Device Driver Training” course you will learn how to develop Linux kernel modules and device drivers for different type of hardware interfaces.
During course many of the Kernel API will be highlighted and the usage of different debug technique will be learned.
Previous knowledge
You know programming and have basic knowledge in the C-programming language, equal to the “C-programming for embedded systems, part I” training.
You should also have some prior experience using Linux/UNIX as a user, and have some experience on how to use development environments and debuggers for Embedded Systems.
Practical exercises / Tools
Embedded Linux Approximately half of the time will be on hands-on exercises. They have been designed to highlight the development process for Embedded Linux projects.
Students work in pairs with the exercises with guidance from the trainer.
We use a PC as host for the development environment and connect to an ARM-based target system (BeagleBone). On the target we run Embedded Linux.
You will keep the BeagleBone, as well as USB-adapters, to be able to continue exploring embedded Linux after the training.
Content
Introduction
- What is Linux Loadable Kernel Modules?
- Material and tools used during training.
Overview
- Software licenses and ways around them
- Patents
- Getting the source
- Configuration and compiling
Basic Device Drivers
- Linux Loadable Kernel modules framework
- Loading and managing modules
- Building and testing drivers
Character Device Drivers
- Initialization and de-initialization
- Callback functions
- User accesses
Kernel and driver debugging
- Debugging techniques
Memory Accesses
- Memory regions IO regions
- Allocating memory
Kernel APIs
- Concurrent and race conditions
- Locking
- Time, Delays and sleeping Interrupts
- Timers
Hardware Accesses
- ISA drivers
- Memory mapped drivers
- PCI drivers
- USB drivers