Courses Offered: SCJP SCWCD Design patterns EJB CORE JAVA AJAX Adv. Java XML STRUTS Web services SPRING HIBERNATE  

       

VIII. Linux Kernel & Device Drivers Topic Details
 

 

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