Barr Group TwitterBarr Group Vimeo

Course Overview

Course Length: 
3 Days

 Download the Complete Course Syllabus

Whether you are developing Linux device drivers for unsupported peripherals or writing a board support package (BSP) to port the operating system to custom embedded hardware, there's a steep learning curve. Through a mix of lectures and hands-on programming exercises on real hardware, this course will help you quickly move on to developing your own Linux driver code. Major topics include the Linux driver model and device frameworks, debugging tools and techniques, as well as hardware initialization and interfacing, interrupt support, multithreading, and synchronization.

Attendees will complete approximately half a dozen hands-on exercises on an ARM board that they will be able to keep when the course is over.

Topics covered during this course include:

  • Introduction to Embedded Linux
  • Linux Kernel Architecture
  • Loadable Kernel Modules
  • Linux Drivers
  • Kernel Interrupts and Synchronization

This course is appropriate for:

  • Embedded software developers learning to write drivers for Linux (or Android)
  • Embedded software developers responsible for porting Linux to custom hardware

Prerequisites:  Attendees should have prior programming experience in the C programming language.


The following is a summary of the major course topics and should not be considered the section-by-subsection lecture breakdown.


  • Linux Architectural Overview
  • ARM SoC Overview
  • GNU Toolchain
  • Linux Build System
  • Building and Testing

Linux Kernel Architecture

  • Kernel Frameworks
  • ARM Linux Boot Process
  • ARM Linux Machine-Specific Initializations
  • Introduction to Platform Bus Devices
  • Kernel Debugging

Root Filesystems and Busybox

Loadable Kernel Modules

  • Introduction to Kernel Modules
  • Kernel Module Framework and Lifecycle
  • GNU Makefiles
  • Building an LKM Out-Of-Tree
  • Loading and Testing LKMs

Linux Drivers

  • Linux Device Model
  • Sysfs Attributes
  • Bus Devices and Frameworks
  • Bus Device Drivers
  • Class Devices and Frameworks
  • File Operations
  • MMUs and Caching
  • Kernel Memory Allocation
  • Passing Data Between Kernel and User-Space
  • Accessing Peripheral Controller Registers

Kernel Interrupts And Synchronization

  • Interrupt Handling
  • Kernel Threads
  • Waiting / Sleeping
  • Kernel Workqueues
  • Concurrent Access
  • Atomic Variables
  • Critical Sections

Attendees will complete approximately half a dozen hands-on exercises on an ARM board that they'll be able to keep when the course is over.

Related Courses

Find out More

To find out more about our upcoming public trainings, go to our Training Calendar.

Contact Us to find out more about this course or to enquire about an on-site training at your company.

Recording Policy

All Barr Group Training Public and On-site courses may not be audiotaped, videotaped or photographed without consent from Barr Group's executive team.  Barr Group reserves the right to record portions or all of a training course for instructional purposes.  As a result, attendees present may also appear on the recording.