LINUX BLOCK DEVICE DRIVERS DEVELOPMENT

This intensive course transforms an IT-Professional or a Student into a Linux Device Driver & Kernel Developer for Character Storage devices, Block Storage devices & Network Storage devices and for those Programmers who already working on Linux, but looking for a methodical and concept clearing professional training on Linux system and kernel programming. Our training sessions go beyond the basics and provide the desired knowledge level to get the most out of your Linux system. We are dedicated towards offering a comprehensive level course covering varied aspects of system programming like Linux programming, Kernel programming and Linux device drivers.

COURSE CODE: ITR301

 

COURSE DURATION: 6 WEEKS

 

COURSE OBJECTIVES:

  1. We offer this course for all those beginners and working professionals who are seeking assignments on Linux kernel programming, device drivers.
  2. Introduces Linux operating systems.
  3. Introduces Linux Kernel and module programming.
  4. How to use Character drivers, Block drivers and Network drivers.
  5. Concept of Kernel synchronization and debugging.
  6. Introduces time delays deferred execution & interrupt handling
  7. Proper grounding on Linux, its concepts and finer nuances of programming
  8. Recall the basic Linux commands
  9. Grasp core operating system concepts and module programming

COURSE CONTENTS

MODULE 2: LINUX BLOCK DEVICE DRIVERS

CHAPTER 1: FUNDAMENTALS OF ‘KERNEL C’ PROGRAMMING

  1. Concurrency
  2. Delays
  3. Work Queues
CHAPTER 2: UNDERSTANDING THE BLOCK DRIVERS

  1. Request Queue Ecosystem
  2. Kernel C APIs & Data Structures
  3. Creating a RAM Block Device
  4. Partitioning a Block Device
CHAPTER 3: LDDK AS A USB MEMORY DEVICE

  1. Understanding the USB framework
  2. Integrating the USB Horizontal with Block Vertical
  3. Programming the Control Endpoint Zero
  4. Exchanging the Interrupt Messages
CHAPTER 4: FILE SYSTEM DESIGN & IMPLEMENTATION

  1. Virtual File System & its Role
  2. File System Design & Challenges
  3. Hardware File System & Formatting
  4. Kernel File System & the 5 Operation Sets
CHAPTER 5: HANDS-ON & PRACTICAL DURING TRAINING

  1. Project Development Environment
    • Setting up the project development
    • environment
  2. Writing Character Drivers
    • Registering the Character Driver
    • Automatic creation of device file nodes
    • Various file operations including read, write, ioctl
  3. Understanding the Block Drivers
    • Experiments with a RAM-based Block driver
    • Creating Partitions and Formatting them
  4. LDDK as a USB Memory Device
    • Auto-probing & detection of a USB device
    • Control operations for memory & LEDs of LDDK
    • USB data transfer through interrupt endpoints
    • Integrating the LDDK memory into block vertical
  5. File System Design & Implementation
    • Designing your custom File System
    • Application to Format your File System
    • Coding for a hardware-less File System
    • Mounting the File System over LDDK
  6. File System in Action
    • Experiments with basic File System operations
    • Enhance the File System to Support bigger file sizes
    • Add the feature of (efficient) renaming of files