This program is basically suitable for engineers or programmers who intended to get more knowledge on hardware based programming along with debugging capabilities.

Linux Device Drivers

VACT Device Drivers

This is an intensive program intended at explaining the core concepts of Linux OS and Device Driver Development on Linux OS. And this session is also intended for providing in-depth knowledge on below listed topics.


This program is basically suitable for engineers or programmers who intended to get more knowledge on hardware based programming along with debugging capabilities.

VACT Device Drivers

1st Day - Embedded Systems & Software Development overview

Linux Introduction and Overview
  • OS History
  • Tasks of the Kernel
  • Implementation Strategies
  • Elements of the Kernel
  • Why the kernel is special
Process Management and Scheduling
  • Process Priorities
  • Process Life Cycle
  • Process Representation
  • Process Management System Calls
  • Scheduler Implementation
  • Far Scheduling Class
  • Real-Time Scheduling Class
  • Scheduler Enhancements
  • Process Descriptor, Process State
  • Process List, Run Queue
  • Chained Hashing of PIDs
    Wait Queues, Process Switching, Creating Process
  • Kernel Thread Creation, Process Termination Process Termination
Memory Management
  • Memory Initialization
  • Physical Memory Allocation
  • Slab Allocator
  • Non-Contiguous Memory Allocation
  • Process Virtual Memory Management
  • Demand Paging
  • Page Cache
  • Swapping
  • Intel Architecture

2nd Day - Embedded Linux

Locking and Interprocess Communication
  • Control Mechanisms
  • Kernel Locking Mechanisms
  • System V Interprocess Communication
  • Other IPC Mechanisms
Kernel module programming basics
  • Modules defined
  • Data types in kernel
  • Version dependency
  • Building and running kernel modules
  • Developing kernel modules
  • Kernel module related commands
  • Statically linked vs
  • Dynamically linked modules
  • Kernel Symbol table
  • Exporting symbols from modules
  • Module parameters
Virtual File system
  • Types of File Systems
  • The Common File Model
  • Structure of VFS
  • Working with VFS Objects
  • File System Calls
Extended File system Family
  • Second Extended File system
  • Third Extended File system
File system without Persistent Storage
  • Proc file system
  • Simple File systems
  • Sysfs
  • Extended Attributes
  • Access Control Lists

3rd Day - Linux Device Drivers

Proc file system programming
    • Using /proc
    • Creating proc file system entries
    • Registration
    • Access proc file systems
Kernel Activities
    • Hardware Interrupts
    • Software Interrupts
    • Tasklets
    • Wait Queues and Completions
Kernel debugging techniques
    • Overview on printk and dmesg
Time Management
    • Low-Resolution Timers
    • High-Resolution Timers
    • Generic Time Subsystem
    • Dynamic Ticks
    • Broadcast Mode
    • Timer-Related System Calls
    • Managing Process Times
Hardware access and control
    • System memory and device memory
    • IO Ports and IO ports vs Memory mapping
    • Allocating and mapping IO space
    • IO port accessing
    • Compiler optimization techniques
    • IO API’s
    • Sample driver code walk through
    • Accessing HW from user space
Hardware & Interrupt Handling
    • Implementing & installing ISR
    • ISR restrictions
    • IRQ registration and Handling
    • Top & bottom Halves
    • Auto detection of IRQ’s
    • Probing for ISR
    • Enable & Disable of Interrupts

4thDay - Linux Device Drivers

Introduction on Linux Device Drivers
    • User space and Kernel space
    • Kernel space architecture
    • Kernel modules and application modules
    • Purpose of device drivers
    • Classes of device Drivers
    • Device Driver compilation
    • Introduction on gcc
    • Make file creation
Simple character driver
    • Sample code walk through
    • Creating Makefile
    • Building driver
    • Installing & uninstalling driver
    • Debugging Simple driver
    • Creating Simple Application to test driver
Simple Driver – Extension
    • Ioctl
    • Kernel timers
    • Thread creation
    • Thread Synchronization
    • Interrupts
    • IO access
    • EXPORT Symbol creation
    • Making changes in Makefile
    • Compiling driver
    • Testing

5thDay - Linux Device Drivers

Sample PCI driver
    • PCI Overview
    • Sample code walk through
    • Sample Makefile walk through
    • Building and Installing driver
    • Debugging driver
Overview uDevd frame work
    • Overview
    • uevents
    • udev rules
    • inotify
    • Sample driver with uDev
Concurrency and Race conditions
    • UP vs SMP Issues
    • Combating Race Conditions
    • Atomic Operations
    • Semaphores
    • Spin Locks
    • Overview
    • Functionalities
  • Boot sequence
  • BDA and EBDA Overview
  • IVT Overview
BIOS Advanced features
    • ACPI Overview
    • EFI / UEFI Overview
    • Secure boot
    • CSM
    • Microcodes and bios support
  • EFI System partition
  • Traditional BIOS vs EFI / UEFI framework
  • UEFI BIOS Initialization phases
  • Bootloader – uBoot overview

Register Now