Embedded Linux Device Drivers

Instructor-led online program on Embedded Linux Device Drivers

Who is it for

This course is for Linux developers who are looking to work on device drivers for embedded Linux systems

What you will learn

Upon program completion you will be familiar with the fundamentals of device drivers, including architecture, types, and development environment setup

Who will be your Mentor

Learn from Raghu Bharadwaj, India’s leading Linux mentor, consultant and author

Program Contents

Driver Architecture
  • Device Drivers defined
  • Linux Driver model
  • Types of Linux drivers
  • Driver stacks
Char Driver Model
  • Synchronous drivers defined
  • Driver registration and de-registration
  • Driver file interface
  • Device file operations
  • Driver data structures
  • Device Configuration ops
  • Wait Queues & polling
  • Memory mapping
  • What is DMA?
  • DMA Directly to User
  • DMA and Interrupts
  • DMA Memory Constraints
  • DMA Masks
  • DMA Pools
  • Scatter/Gather Mappings
Hardware Access
  • Device Addresses
  • Port mapped I/O
  • Interacting with port mapped devices
  • Memory Mapped I/O
  • Reserving address space MMIO
  • MMIO Access
  • Device Access side effects
  • Device access from u-space
Interrupt Handling
  • Understanding Interrupts
  • Linux Interrupt handlers
  • Implementing Driver ISR
  • Need for deferred routines
  • Linux Deferred Routines
  • Interrupt event management
Platform Drivers
  • What are Platform Drivers?
  • Main Data Structures
  • Registering Platform Devices
  • An Example
  • Hardcoded Platform Data
  • The New Way: Device Trees
Device Tree
  • What are Device Trees?
  • What Device Trees Do and What They Do Not Do
  • Device Tree Syntax
  • Device Tree Walk Through
  • Device Tree Bindings
  • Device Tree support in Boot Loaders
  • Using Device Tree Data in Drivers
  • Coexistence and Conversion of Old Drivers
  •  What are ioctls?
  • Driver Entry point for ioctls
  • Defining ioctls
Unified Device Model & Sysfs
  • Unified Device Model
  • Basic Structures
  • Real Devices
  • sysfs
  • kset and kobject examples
  • What are MTD Devices?
  • NAND vs. NOR vs. eMMC
  • Driver and User Modules
  • Flash Filesystems
  • I2C
  • SPI
  • GPIO
USB Host Driver
  • USB Topology & Terminology
  • Endpoints
  • Descriptors
  • USB Device Classes
  • USB Support in Linux
  • Registering USB Device Drivers
  • Moving Data
  • Example of a USB Driver
  • PCI Device Drivers
  • Locating PCI Devices
  • Accessing Configuration Space
  • Accessing I/O and Memory Spaces
  • PCI Express
Block Driver
  • Understanding Block driver model?
  • Buffering
  • Registering a Block Driver
  • gendisk Structure
  • Request Handling
Network Driver Model
  • Network Layers and Data Encapsulation
  • Datalink Layer
  • Network Device Drivers
  • Loading/Unloading
  • Opening and Closing
  • net_device Structure
  • net_device_ops Structure
  • sk_buff Structure
  • Socket Buffer Functions
  • texttt {netdev_printk() and Associates
  • Transmitting Data and Timeouts
  • Receiving Data

Who Should Enroll

  • Linux programmers looking to upskill on embedded Linux driver development
  • System programmers looking for a structured program on embedded device drivers
  • Kernel programmers looking to build a deeper understanding on Linux device drivers

Program Schedules & Fee

  • Program Starts: 23 March 2024
  • Session Timings: 10am – 1:30pm (Sat. & Sun.)
  • Training Mode: Online, live, interactive (zoom)
  • Program Duration: 8 weekends.
  • Program Fee: ₹25,948/- (includes Yocto) (fee inclusive of GST)

Support Services

  • Missed sessions: Backup recording will be provided for missed sessions
  • Offline support: Delivered via Whatsapp
  • Batch transfers: Available within 1 year
  • Placement support: Offered on program completion (any experience category)


“I highly recommend TECH VEDA, “Raghu Bharadwaj” is highly experienced and skilled in Linux kernel, device driver development and embedded domain. He knows exactly where students and fellow developers get stuck and will help you learn problem solving approaches”




“Raghu sir has this unique ability to keep our attention drawn to the overall framework of drivers in the hindsight, when we go deep into each interface and core concepts”


Slicon Labs


“The way Raghu sir simplified the Yocoto build system and made us work on each and every aspect practically, has made building embedded Linux systems a cakewalk”



Interested. Apply Now

On receiving the application, we will contact you with further registration process

Know your trainer


Raghu Bharadwaj

  • Leading Linux mentor. Trained over 40 clients including Xilinx, Qualcomm, Broadcom, NXP, Harman, Mercedes among others
  • Trained over 3000 participants across 7 nations
  • Attended by professionals from over 100 companies
  • Leading authority and speaker on the Linux Kernel


What are the pre-requisite skills to enroll for this program?

You must be good at Linux kernel programming.

How is the program delivered?

This program is delivered online through a live, interactive session. You must login whenever there is a live session to access it. This program may have few recorded sessions. 

What if I miss some sessions due to work or other issues?

Do not worry, we have it covered. If you miss any session due to any reason, you can request to listen the backup recording at your convenient time

What is the validity of my registration?

Your registration is valid for a period of 1 year. That is, after you make the payment you can take the program once within 1 year