Personal tools
Document Actions

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

Creative commons
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.

PDF

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

Powered by Plone, the Open Source Content Management System

Linux is a registered trademark of Linus Torvalds