Syllabus:
VIII.
Linux Kernel & Device Drivers
After Gaining
knowledge on Advanced Linux Programming you are ready to learn
Device Drivers.
This is where you learn core of Linux Kernel and Device Drivers
programming.
8. A. Introduction to Linux kernel
Programming
• Kernel Classifications
1. Monolithic Kernels
2. Micro Kernels
• The User space & Kernel
space
• Tool Chains, Libraries, The
Makefile
1. GNU toolchain
2. Creation of Static & Dynamic
Libraries
3. Portability support in the kernel
• The Linux Kernel
1. Getting the sources
2. Configuring the kernel
3. Diff and Patching utilities
4. Compiling the kernel
5. Installing & Booting the
kernel
• Step by Step demystification
of Linux Boot Procedure
• Module Programming
1. The HelloWorld Module
2. Module Stacking
3. Module Parameters
• System Calls
1. Registering a System Call
2. System Call Handler
3. Service Routines
8.B. Character Drivers
• Device Numbers
1. Major and Minor Numbers
2. Registering and Unregistering
3. Static and Dynamic allocations
• Important Structures
1. File Operations
2. File
3. Inode
• Character Devices
1. c\dev structure
2. Adding, Allocating, Initializing
and Deleting
3. User Space Applications and
Device Driver mapping
4. Access methods within the driver,
open, rea\d, write and close
5. Advanced Character Drivers
6. IOCTL
7. Wati
8.C. Kernel Synchronizationon
• Critical Sections, Race Conditions
• Concurrency and its Sources
• Mechanisms for Kernel Synchronization
1. Semaphores
2. Rea\der Writer Semaphores
3. Spinlocks
4. Rea\der Writer Spinlocks
5. Completions
6. Sequential locks
7. Barriers
8. Rea\d Copy Update
• Atomic Operations
• Memory Allocation in the kernel
8.D. Debugging the Kernel
• Printk, Traces and Watches
• gdb, kgdb, kdb
• User Mode Linux
• Qemu
• Proc & Sys File Systems
8.E. Time Delays Deferred Execution
• HZ & Jiffies, Delays
• Kernel Timers
• Tasklets
• Work Queues
• Kernel Data Types
8.F. Interrupts
• Handling I/O
1. I/O Architecture
2. I/O Mapped I/O
3. Memory Mapped I/O
• Interrupts & Interrupt Handlers
8.G. Block I/O Layer
1. Block Device Structure
2. Request queues
3. Block Driver
4. I/O Scheduling
8.H. Linux Device Drivers
• UART Driver
1. UART Protocol
2. UART Driver Layered Architecture
3. UART subsystems
4.
Porting, Development & Validation of UART Driver
• I2C Driver
1. I2C Protocol
2. I2C subsystems
3. I2C Driver Layered Architecture
4.
Porting, Development & Validation of I2C client Driver
5.
Porting, Development & Validation of I2C platform Driver
• PCI Driver
1. PCI
Architecture & Protocol
2.
PCI Regions & Direct Memory Access
3. PCI subsystems
4. PCI Driver Layered Architecture
5.
Porting, Development & Validation of PCI client Driver
• USB Driver
1. USB
Architecture & Protocol
2.
Types of Descriptors & URB
3. USB subsystems
4. USB Driver Layered Architecture
5.
Porting, Development & Validation of USB Gadget Driver
• Network Drivers