Embedded Linux Device Drivers Training Course

29 Jan London
request info

Capita Marks and Spencer Telefonica Cisco BBC Lloyds Sony

Embedded Linux Device Drivers training course (code: LINDEVDRI)

Develop Linux Device Drivers For Embedded Systems - Maintain Platform Independence And Cross Development Options



Embedded devices need to interact with the real world somehow. Maybe using standard interfaces such as i2c, SPI, USB or maybe using low level interfaces such as GPIO, PWM, Analog to Digital and Digital to Analog. In all cases the link between Linux and the hardware is a device driver.

This course shows how to write several different types of device drivers for Linux, with an emphasis on the techniques that are applicable to embedded systems such as platform independence, cross development and efficient use of resources. The lab exercises are cross-compiled and tested on a typical development board, the BeagleBone Black (we can accommodate other hardware at your request).



Software engineers and system architects


Developing for embedded Linux

  • Getting and configuring a cross toolchain
  • Linux bootloaders: U-Boot

The Linux kernel

  • Where to get the kernel source
  • Board support packages
  • Kernel configuration options
  • Building and loading a kernel

Kernel modules

  • Writing a module and compiling "out of tree"
  • Loading and testing on the target
  • Passing parameters
  • Modules and the GPL license

Device driver basics

  • Types of device driver
  • Different ways for applications to interact with the driver
  • Character drivers
  • Building and testing a simple “misc” character device driver

Kernel debugging

  • Review of printk and the magic sysrq key
  • Interactive debugging using kgdb
  • What to do when the board won't boot

Sysfs and proc

  • Classes of driver: /sys/class
  • Driver attributes
  • Extending the proc file system

Wait queues and completions

  • Waiting for things to happen: wait queues
  • One-shot events: completions

Kernel locking

  • Mutual exclusion using kernel mutexes
  • Spinlocks
  • Atomic operations

Advanced character driver functions

  • Notifying events: poll and fasync
  • Driver specific interfaces: ioctl

Time and timers

  • Getting the system time: high resolution timers
  • Delays and sleeps
  • Kernel timers


  • Installing an interrupt handler
  • Synchronising using using spin_lock_irq
  • Deferred processing using tasklets and work queues

Accessing hardware

  • Memory regions
  • Allocating and freeing memory
  • Overview of device tree and how to extract information from a device tree
  • Mapping in device memory: ioremap
  • DMA buffers: coherent and stream mappings
  • Memory barriers

Sharing memory

  • mmap: sharing device registers
  • mmap: sharing DMA buffers
  • get_user_pages: how to access user memory


  • Developing for embedded Linux
  • The Linux kernel
  • Kernel modules
  • Device driver basics
  • Kernel debugging
  • Sysfs and proc
  • Wait queues and completions
  • Kernel locking
  • Advanced character driver functions
  • Time and timers
  • Interrupts
  • Accessing hardware
  • Sharing memory
Receive the latest version of this course into your inbox

See why people choose JBI

"At jbi even the sales team are technical so you are able to ask questions before the course"

Garima Aon

Blog (Show All)

JBI training course London UK

C++ : Find out why this old favourite is making a comeback ?

03/10/2017: Debates on the present state of C++ in the programming world divide the participants into two camps: some dislike C++ and predict it's imminent...

JBI training course London UK

Application Security training courses | 4 Reasons to gain secure coding skills

03/10/2017: Traditionally Cyber security has been associated mainly with penetrating networks and infrastructure. Now a more subtle level of attack needs...

JBI training course London UK

Angular training courses | 7 Reasons to Learn Angular

05/10/2017: Back in March 2014, the Angular team dropped a bomb by announcing Angular 2 and everyone started yelling. Instead of an evolutionary step forward,...

Case Studies (Show All)

JBI training course London UK

Java Upgrade : Spring Boot, BDD and REST

11/10/2017: The training was to target a team of developers, with a mix of Java, C# and some C++. The team made heavy use of Java SE with some elements of...

JBI training course London UK

Grad Programme ensures new intake is productive

12/10/2017: The Graduate Programme provided a gateway into technology within investment banking. Graduates (Computer Science, Engineering, Maths, Physics...

JBI training course London UK

New Dev skills help improve Online engagement

03/10/2017: When a leading High Street Retailer (and purveyor of fine foods) recognised that teams of software engineers were writing overcomplicated and...

Call our Tech Team :  0800 028 6400  request info



29th Jan 2018 - 5 days £2500

see all dates


Show Discount for this course


  Bring a JBI course to your office
  and train a whole team onsite
  0800 028 6400
or request quote

  You can customise this course to
  suit your exact needs here
  0800 028 6400 or request quote

Get in touch
0800 028 6400

Our inspiring and up-to-date courses gain exceptional feedback

►"great tips help reduce build times"
► "we got access to exclusive content"
► "Short course meant less time off"

►"what an inspiring trainer !"
► "colleagues at 2 sites joined via web"
► "I passed my exam the next day"

Newsletter ! Get exclusive news about upcoming programs, technical insights & special offers