Shopping Cart :Check Out

Linux Device Drivers workshop

Course Introduction:

This course consists of four full days of training on Linux Device Driver Programming which covers the various aspects of Device Driver programming in Linux OS. The course starts with a session on Device driver module and related kernel programming, also cover Memory management, Character Device Driver, Block Device Driver, USB, Serial, Network Device Driver Programming.


Linux Kernel Internal Programming Workshop is Prerequisite to this course. However those who have strong Linux Internal Knowledge will be able to start this course without the prerequisite course. Considerable knowledge of Linux System Programming concepts like signals, processes, file operations, system calls and sockets or Linux Internals & Programming are Essentials Course . We will try to take DAY 1 of the workshop for recollecting the Linux Systems introduction.

Target Audience :

This course is designed for C programmers who are familiar with Linux System Programming.

Note: The program concentrates more on hands on. The lab exercises contain developing and testing of respective programs on X86 /PC hardware introduced on day one of the program.

Course Contents

Day 1 Day 2
Introduction to Linux An introduction to device drivers
o History and open source o Role of the Device Drivers
o Features o Splitting the kernel
o Modular and monolithic vs micro o Classes of devices and modules
o Kernel design goals o Kernel Architecture or Model
o Lab exercises
Understanding the kernel
o Kernel structure Module Concepts
o Kernel components and organization o The kernel symbol table
o Modes of operation o Module Initialization and shutdown
o User library different from kernel o Using memory, I/O Memory and I/O ports
o Module parameters and description
Booting and kernel initialization o Doing it in user-space
o Booting Basics o Lab exercises
o System Ups and Down under Linux
o Boot-loaders (Various target specific boot loaders) OS Services And Data Structures
o Understanding Linux start_kernel in brief o Atomic functions, Bit Operations
o Linked List, Memory barriers
Linux Basic Common Set o Semaphores,Time intervals in the kernel
o File and directory related command s o Delaying execution, Task queues
o Using VI effectively [contrast w.r.t Word processor] o Tasklets, Kernel timers
o Commands for filters, IO redirection and etc o Basic memory Management
o Process related commands o The proc file system
o Miscellaneous Command [zip/tar/mount etc] o Lab exercises
o Shell scripts
Simple handy utilities
Major script techniques
o Compiling C codes
System calls
o Understanding the Layer for Communication
o Basics
o Common system calls
o Using a system call directly in assembly
o Linux implemented methods
Day 3 Day 4
Character Device Drivers Hardware and Interrupt Handling
o Registering a character device driver o Top halves vs bottom halves
o File operations o registering a interrupt handler
o The file structure o freeing a interrupt handler
o devfs / lseek / ioctl o Using IO Ports
o Lab exercises o Installing and implementing an interrupt handler
o Blocking, non blocking and asynchronous operations o why bottom halves?
o Lab exercises o Tasklets and Bottom halves
o softirq's
Block Device Divers o Lab exercises
o Registering a block device driver
o File operations Block Device Drivers
o The file structure o Handling requests
o devfs / lseek / ioctl o buffers and buffer head
o Lab exercises o Ram Disk Driver
o Lab exercises
Network Drivers
o The net_device structure in detail
o Packet transmission
o Packet reception
o The Interrupt handler
o Simulating a network device
o Lab exercises
Serial Interface Device Drivers
o Working of serial devices
o system calls related to serial device drivers

Training Programs