embedded and real time systems training and consultancy

Linux Kernel Internals and Device Driver Programming


Duration: 5 Days


Course Background

Developers building embedded solutions using Linux often need to make kernel-level modifications, or to write drivers for custom hardware. This advanced programming course provides an intensive overview of the Linux 3.x kernel, kernel level programming and device driver theory and implementation, as well as kernel configuration and compilation. Code will be developed and tested on both a Debian 3.x kernel running on a PC Platform and a suitable embedded Linux distribution running on either a RaspberryPi or BeagleBone Black platform. [Note: the course can be tailored to use alternative target boards if required]. Linux is quite a complex operating system and mastery depends on understanding the underlying patterns and abstractions involved in developing various elements of the kernel. The Linux 3.x kernel is simply a continuation of the 2.6 kernel. This course will be based on a reasonably uptodate 3.x Kernel that can be considered to be sufficiently stable for use in real world embedded systems applications. The kernel internals aspects of the course will concentrate on mastering the architectural details of the various kernel subsystems as well as understanding the various scheduler configurations, kernel space multi-tasking and user-space multi-tasking. In addition the course will cover memory mapping and memory management, /dev, /proc and /sys filesystems and their uses as well as reviewing the various device classes and drivers that are part of the Linux kernel. Linux system build and configuration will be covered as well as the building of actual distributions.

Intended Audience

Attendees are expected to be proficient C programmers and have a good working knowledge of shell programming and the use of Linux tools and utilities.

Course Overview

Course Benefits

You will gain a comprehensive understanding of Linux Kernel building, kernel and device driver programming, and experience of device drivers for components and protocols often found in embedded systems such as I2C, SPI, Bluetooth and USB. You'll consolidate your knowledge with practical labs, including:

Course Contents