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:
|