Announce: Demystifying Linux Device Drivers, Workshop

We are happy to announce our next workshop, "Demystifying Linux Device Drivers". This workshop is for developers who are familiar with Linux in embedded systems, and would like to explore the world of devices and drivers.

One of the pain points in starting with device drivers, is the missing bits and pieces of information that people should know about Operating Systems before getting started. The workshop starts off with a discussion on these essential bits: memory management, system calls, devices drivers and filesystems

The workshop then moves on to kernel module programming, discussing workqueues, delays, kernel threads, interrupts, blocking IO and concurrency. On the hardware front, we discuss about LEDs, Keys, I2C based LCD and Keypad interfaces. The workshop concludes with a discussion on how hotplug and the bus model works.

Date and Time

  • Dec 15 (Fri), 9:00 AM to 6:30 PM

  • Dec 16 (Sat), 9:00 AM to 6:00 PM


The workshop venue address is provided below:

Anna Centenary Library, Conference Hall,
Koturpuram, Chennai

Location of the venue on Google maps: here

Workshop Ticket

Ticket Type Price (Inclusive of GST)

Regular (Before Dec 8th)

Rs. 6500

Late Bird (After Dec 8th)

Rs. 7000

The workshop fee is inclusive of lunch. You can purchase tickets from


  • Vijay Kumar, Technologist LinkedIn

  • Deepak, Technologist LinkedIn

  • Babusubashchandar, Technical Specialist LinkedIn

  • Raashid Muhammed, Technical Specialist LinkedIn


Should be familiar with the Linux command-line, microprocessors, C programming and Linux system programming.

Hardware / Software Requirements

Participants are required to bring their own Laptop: 2GB RAM, 10GB free Harddisk space. Supported operating systems are Mac OS X, Windows and Linux. Participants should have the following software installed. Software versions will be updated shortly.

  • Vagrant

  • Virtualbox

Tentative Schedule

Day 1Day 2
  • 09:00: Setup and Introduction
  • 09:45: Need for MMU
  • 10:45: Tea Break
  • 11:00: System Call Internals
  • 12:00: Introduction to Drivers
  • 01:00: Lunch Break
  • 02:00: Filesystem Internals
  • 03:00: Building the Linux Kernel
  • 04:00: Tea Break
  • 04:15: Writing Modules
  • 05:15: Accessing GPIOs
  • 09:00: Time and Workqueues
  • 10:00: Accessing I2C Devices
  • 11:00: Character Drivers
  • 12:00: Tea Break
  • 12:15: Character Drivers
  • 01:00: Lunch Break
  • 02:00: Interrupts and Blocking IO
  • 03:00: Concurrency and Locking
  • 04:00: Tea Break
  • 04:15: Bus Model and Driver Binding
  • 05:00: Kernel Module Autoloading


Need for MMU

  • Processes & Sharing Memory
  • Role of MMU
  • Using the MMU
  • Unmapped Pages
  • Shared Memory
  • TLBs

System Call Internals

  • Process Memory Map
  • Protection Rings
  • Syscall Tables

Introduction to Drivers

  • Unix/Linux Device Abstraction
  • Device Files
  • Types of Drivers
  • Mouse Device Access
  • Sound Mixer Device
  • RTC Access through /proc
  • Print Partition Table

Filesystem Internals

  • Filesystem Layout
  • Inode Table
  • Directory Table
  • Symbolic Links and Hard Links
  • Block Devices
  • Filesystem Tools
  • Mounting

Building the Linux Kernel

  • Kernel Modules
  • Kernel configuration
  • Building the kernel
  • Booting the kernel

Writing Modules

  • Module Programming vs Application Programming
  • Hello World Module
  • Module Programming Basics
  • Compiling
  • Loading and Unloading
  • Module Parameters

Accessing GPIOs

  • GPIOs
  • GPIO Controllers
  • Kernel GPIO API

Accessing I2C Devices

  • I2C Bus
  • I2C Protocol
  • Register Transactions
  • I2C Controller
  • Kernel I2C API

Time and Workqueues

  • Flow of Time
  • Deferred Work
  • Blinking LEDs
  • Generating Delays

Char Drivers

  • Major and Minor Numbers
  • Data Structures
  • - File Operations Structure - File Structure
  • Registering Char Driver
  • Pseudo Device Driver
  • I2C LCD Device Driver

Interrupts and Blocking I/O

  • Interrupts
  • Installing Interrupt Handlers
  • Blocking I/O
  • Process states
  • Wait Queues

Concurrency and Locking

  • Sources of Concurrency
  • Semaphores
  • Spinlocks
  • Common Locking Problems
  • Atomic Variables

Bus Model

  • Hotplug
  • I2C and SPI bus
  • Bus Model
  • Device and Driver Binding

Kernel Module Autoloading

  • Modalias and Depmod
  • Notifiactions through Netlink
  • Role of UDev

Refund Policy

  • Cancellation before 8th December 2017, 50% of the ticket amount will be refunded.

  • Cancellation before 15th December 2017, 25% of the ticket amount will be refunded.