Linux Kernel & Device Drivers

course content

Quick Enquiry

Contact Us

+91 93478 22722, +91 75698 22722

info@vivenembedded.com

After Gaining knowledge on Advanced Linux Programming you are ready to learn Device Drivers.
This is where you learn core of Linux Kernel and Device Drivers programming.

➢ Kernel Classifications

  • Monolithic Kernels
  • Micro Kernels

➢ The User space & Kernel space
➢ Tool Chains, Libraries, The Makefile

  • GNU toolchain
  • Creation of Static & Dynamic Libraries
  • Portability support in the kernel

➢ The Linux Kernel

  • Getting the sources
  • Configuring the kernel
  • Diff and Patching utilities
  • Compiling the kernel
  • Installing & Booting the kernel

➢ Step by Step demystification of Linux Boot Procedure

  • Module Programming
  • The HelloWorld Module
  • Module Stacking
  • Module Parameters

➢ System Calls

  • Registering a System Call
  • System Call Handler
  • Service Routines

➢ Device Numbers

  • Major and Minor Numbers
  • Registering and Unregistering
  • Static and Dynamic allocations

➢ Important Structures

  • File Operations
  • File
  • Inode

➢ Character Devices

  • cdev structure
  • Adding, Allocating, Initializing and Deleting
  • User Space Applications and Device Driver mapping
  • Access methods within the driver, open, rea\d, write and close
  • Advanced Character Drivers
  • IOCTL
  • Wait

➢ Critical Sections, Race Conditions
➢ Concurrency and its Sources
➢ Mechanisms for Kernel Synchronization

  • Semaphores
  • Reader/ Writer Semaphores
  • Spinlocks
  • Reader/ Writer Spinlocks
  • Completions
  • Sequential locks
  • Barriers
  • Read Copy Update

➢ Atomic Operations
➢ Memory Allocation in the kernel

➢ Printk, Traces and Watches
➢ gdb, kgdb, kdb
➢ User Mode Linux
➢ Qemu
➢ Proc & Sys File Systems

➢ HZ & Jiffies, Delays
➢ Kernel Timers
➢ Soft irqs
➢ Tasklets
➢ Work Queues
➢ Kernel Data Types

➢ Handling I/O

  • I/O Architecture
  • I/O Mapped I/O
  • Memory Mapped I/O

➢ Interrupts & Registering Interrupt Handlers
➢ Interrupt Context vs Process Context

➢ H Block Device Structure
➢ Request queues
➢ Block Driver
➢ I/O Scheduling

➢ UART Driver

  • UART Protocol
  • UART Driver Layered Architecture
  • UART subsystems
  • Porting, Development & Validation of UART Driver

➢ I2C Driver

  • I2C Protocol
  • I2C subsystems
  • I2C Driver Layered Architecture
  • Porting, Development & Validation of I2C client Driver
  • Porting, Development & Validation of I2C platform Driver

➢ PCI Driver

  • PCI Architecture & Protocol
  • PCI Regions & Direct Memory Access
  • PCI subsystems
  • PCI Driver Layered Architecture
  • Porting, Development & Validation of PCI client Driver

➢ USB Driver

  • USB Architecture & Protocol
  • Types of Descriptors & URB
  • USB subsystems
  • USB Driver Layered Architecture
  • Porting, Development & Validation of USB Gadget Driver

➢ Network Drivers