Group Services: Technology Consulting
phone +91-9999-283-283/9540-283-283
email info@sisoft.in
Sisoft

Course Details

Linux Device Drivers Training - Course Outline

Linux Device Drivers

Goal

  • Understanding of open source software
  • Easy to develop Device Drivers (Linux Kernel has provided the frame work for all kind of devices)
  • Development tools, environments and software (C, C++ and assembler are included by default)
  • Networking Support

Pre-requisites

  • Knowledge of C or C++
  • Basic understanding of Linux operating system
  • Basic understanding of Networking protocols

Prepares For

  • Easy to place in semiconductors/embedded companies (More than 200 companies across India)
  • Fast Navigation inside the Kernel source code

Audience:

  • Engineering College Interns (CS/ECE/EE/MCA)
  • Engineering college pass outs (CS/ECE/EE/MCA)
  • Working Professionals in Embedded domain
  • Any graduates willing to explore in linux embedded world

Course Structure

  • Class Room Duration: 32 hrs
  • Lab Duration : 32 hrs

Linux Device Drivers - Course content

  • Linux at System Level
    • Introduction to Linux
    • Features of Linux OS
    • RT Linux vs. Desktop Linux
    • Architecture of Kernel
    • The Boot Process
      • Sequence of the Boot Process
      • BIOS Initialization
      • The GRUB Boot Loader
      • Kernel Initialization
      • init and /etc/inittab
      • Run Levels
      • Controlling Services
    • File Management Systems
      • Structure of FMS
      • Super Block
      • Inode Block
      • Data Block
      • Boot block
      • Inodes
      • Types of Data Blocks
      • Directory Structures
    • Process Management Systems
      • Structure of Processes, User Area Fields,
      • Process Information Table
      • Paging, Page Sizes, Offset, Region Tables
      • Layout of Kernel
      • Context of a Process, Register
      • Triples Allocating, Attaching, detaching, duplicating, freeing region Process Scheduling and types
      • Priorities of Processes
      • System Boot, Init process and Kill Signals
    • Memory Management Systems
      • Virtual and Physical Memory
      • Swapping and Paging
      • Demand Paging, Page Faults
      • Copy on Write bits
    • Inter Process Communication
      • Client- Server Model
      • Pipes, FIFO's, Drawbacks of Pipes and FIFO's
      • Message Queues
      • Shared Memory
      • Semaphores-binary and array of semaphores,
      • Socket programming
    • Interrupts and Exceptions
  • Linux Device Driver programming
    • Introduction to Device Driver Programming
    • Hardware Basics
    • The CPU, Memory, Buses, Controllers and Peripherals, Addresses, Timers
    • Kernel Source Code
    • Configuring & Compiling the kernel
    • Role Device Drivers
    • Types of Device driver
    • Loadable modules and its benefits
    • Functions used to load and unload modules
    • Passing parameters to a loadable module
    • Writing a Device Driver Programme
    • Important Header Files
    • Writing a simple module
    • Compiling and loading modules
    • Device information in /proc
    • Strace command
    • Ksyms and ksymoops
    • Debuggers like gdb, kgdb
    • Major and minor numbers
    • Creating device files with mknod
    • Registering a character device driver
    • IOCTL commands to interact with a device
    • Implementing IOCTL in driver
    • Functions for accessing user and kernel space
    • Exporting symbols from loadable module
    • Creating stacked loadable module
    • Printk for debugging
    • MEMORY & INTERRUPTS HANDLING
    • Memory allocation with kmalloc and kfree
    • Page oriented memory allocation
    • Memory allocation in the virtual address space
    • Uses of I/O ports and IRQ's
    • Platform dependency issues
    • Functions used for reading/writing I/O ports
    • Interrupt handler functions
    • Timer Interrupts, Delay execution techniques
    • Task queues, Task Queue operations
    • Obtaining the current time
    • PCI Interface
    • Requirements for Network / Block drivers
    • Various network and block driver methods

    Project Assignments:

    • Writing Modules in kernel space
    • Writing one character device driver
    • Writing driver for serial interface on ARM based hardware

    Reference Books:

    • LINUX. DEVICE. DRIVERS. THIRD EDITION. Jonathan Corbet, Alessandro. Rubini, and Greg Kroah
    • Linux Kernel Development, 3rd edition . Robert Love
    • Understanding the Linux Kernel, Third Edition [Daniel P. Bovet, Marco Cesati

    Reference materials Online: