LINUX CHARACTER 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 1: CHARACTER DEVICE DRIVER

CHAPTER 1: GETTING STARTED WITH LINUX KERNEL

  1. Linux System Architecture
  2. Linux Software Architecture
  3. Basic Kernel Services
  4. Linux Kernel Code
  5. Linux Kernel Tree
  6. Linux Kernel Configuration
  7. Introduction to GNU Tool chain
    • GCC compiler
    • Make file
    • GDB
CHAPTER 2: INTRODUCTION TO DEVICE DRIVER

  1. What is a Device Driver
  2. Classes of Devices
  3. Device Driver Classification
  4. Concept of a Module
  5. Kernel Module Vs. Application
  6. Major & Minor Numbers
  7. Reserved Major Numbers
  8. Module Parameters
  9. Loading/Unloading Modules
  10. Current Process Information
  11. Kernel Memory Allocations
  12. Driver Entry Points
  13. Init Module & Exit Module
  14. Character Device Data structures
  15. Character Device Registration
  16. Character Device Drivers
CHAPTER 3: FILE SYSTEM AND ITS OPERATION

  1. File Structure
  2. File Operations Structure
  3. Driver-User Data Transfer
  4. Open, Read, Write and Close System Calls
  5. Driver-Kernel Communication
  6. Driver-Device Communication
  7. Device File Creation
  8. Device File Control Operations
  9. Advance char device operations (ioctl), Kernel Timer
CHAPTER 4: KERNEL SYNCHRONIZATION

  1. Introduction to Race Conditions
  2. Sources of Race Conditions
  3. Semaphores &Semaphore APIs
  4. Binary & Counting Semaphores
  5. Mutexes & Mutex APIs
  6. Spinlocks &Spinlock APIs
  7. Deadlock – Sources Deadlock Prevention
  8. Rules for Sleeping
  9. Wait queues & Wait queue APIs
CHAPTER 5: INTERRUPTS HANDLING

  1. What are interrupts?
  2. Interrupt Handling
  3. Interrupt Service Routine (ISR)
  4. Interrupt Latency
  5. Installing and implementing an interrupt handler
  6. Tasklets and Work Queues
  7. Bottom Halves and Top Halves
CHAPTER 6: KERNEL CONFIGURATION AND COMPILATION FOR 0X86

  1. Retrieving the Kernel Source
  2. Configuring and Building, Installing and Booting from a Kernel
  3. Upgrading a kernel, Customizing a Kernel
  4. Boot loader – Grub Loader, U-Boot
CHAPTER 7: HANDS-ON PRACTICAL DURING TRAINING

  1. Introduction & First Driver
    • Setting up the environment
    • Writing, Building, Using the First Driver
  2. Writing Character Drivers
    • Registering the Character Driver
    • Automatic creation of device file nodes
    • Various file operations including read, write, ioctl
  3. Doing Low-level Accesses in an ARM9
    • Led Driver on ARM 9
    • Interrupt Generation on ARM 9
    • Buttons Driver on ARM 9
    • PWM Driver on ARM9
    • LCD Driver on ARM9
    • DC and Stepper Motor Driver on ARM9