Embedded Linux kernel and driver development
last modified
2007-01-18 13:23
Getting familiar with the Linux kernel and device driver development.
Training materials
Available under the terms of the
Creative Commons Attribution-ShareAlike 2.5 license.
This means you are free to download, distribute and
even modify them under certain conditions.
OpenDocument Format
HTML
Description
- Overview
- The GNU / Linux operating system is more and more used in electronic devices
embedding a significant part of software (digital assistants, telephones, dedicated terminals, etc.).
Its strengths are many: freedom of modifying and redistributing sources, OS vendor independence, zero cost, no royalties, available tools, available documentation and support on the Internet by the community of its users.
- Duration
- 3 days. 1/2 of theory and 1/2 of practical labs.
- Language
- English or French
- Audience
- People developing devices using the Linux kernel. Driver developers for internal or external peripherals.
- Benefits
- Getting experience and knowledge useful to implement Linux based devices and write device drivers.
- Course objectives
- Learn how to (cross)compile and start a Linux kernel.
Learn how to write complex device drivers and debug them on the
target platform. Learn how to get help, report issues
and even contribute to improving the code.
This course mainly targets device driver developers and doesn't address inner kernel details. - Prerequisites
- Knowledge and practise of Unix or Linux commands.
Practise of the C language. - Needed equipment
- Video projector, 1 PC computer on each desk (1 or 2 people). No operating system requirement.
- Materials
- Print and electronic copy of presentations and labs. Electronic copy of lab files.
Contents
- Introduction
- System overview and role of the kernel
History and versioning scheme
Supported hardware architectures
Legal issues: licensing constraints, software patents
Kernel user interface
- Compiling and booting
- Getting the sources
Using the patch command
Structure of source files
Kernel modules
Kernel configuration
Files used by kernel configuration tools
Compiling
Cross-compiling
The bootloader
Booting parameters
Debugging through the serial port
Creation of an initrd ramdisk - Basic driver development
- Linux device drivers
A simple module
Programming constraints
Loading, unloading modules
Module parameters
Module dependencies
Adding sources to the kernel tree
Kernel debugging - Driver development
- Memory management
I/O register and memory access
Character device drivers
Sleeping, interrupts
mmap, DMA
New device model, sysfs
Hotplug
udev dynamic devices - Advice and resources
- Using Ethernet over USB
Root filesystem on the host through NFS
Review of the various filesystem types. The MTD subsystem. Advice for making a choice
Getting help and contributions
Bug report and patch submission to Linux developers.
References

