Embedded Linux Device Driver Training
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.
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.
- What is Linux Loadable Kernel Modules?
- Material and tools used during training.
- Software licenses and ways around them
- 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 regions IO regions
- Allocating memory
- Concurrent and race conditions
- Time, Delays and sleeping Interrupts
- ISA drivers
- Memory mapped drivers
- PCI drivers
- USB drivers