SETC Training844-434-7382
 Find a Course: 
 
Programming TrainingMicrosoft TrainingMS Office TrainingServer TrainingManagement TrainingNetwork TrainingAbout UsContact Us

LINUX Training


The learning experience was excellent.
Comment from Law Society of Upper Canada

1. Title

  • Professional Linux Device Driver Development (LIDDEV, 5 days)
    View PDF

2. Course Pre-requisites

  • Good knowledge of C Programming and Linux Architecture

3. Target Audience

  • Professional developers who need to develop Linux Device Drivers

4. Dates and Pricing


Sep 25 to Sep 29, 2017$3,900.00/person

5. Outline

Module 1: Devices in Linux

Topic 1: Linux Device Drivers Overview

Topic 2: Device Classes

Topic 3: Creating Device Files

Topic 4: Kernel Modules vs. Applications

Topic 5: User Space Driver APIs

Module 2: Loadable Modules

Topic 1: Why Loadable Modules?

Topic 2: Working with Loadable Modules

Topic 3: Device Driver Code

Module 3: Compiling, Loading, Exporting

Topic 1: Setting up the Test System

Topic 2: A Simple Module

Topic 3: Compiling Modules

Topic 4: Loading and Unloading Modules

Topic 5: Initialization and Shutdown

Topic 6: Exporting Symbols from Loadable Modules

Topic 7: Working with Stacked Loadable Modules

Module 4: Character Devices

Topic 1: Major and Minor Numbers

Topic 2: Registering Character Devices Files

Topic 3: Driver Methods

Topic 4: Working with User Spaces

Module 5: Kernel Data Types (Overview Only)

Topic 1: Standard C Types

Topic 2: Working with Sizing Data Items

Topic 3: Interface-Specific Types

Topic 4: Linked Lists

Topic 5: Other Issues

Module 6: Debugging and Tracing

Topic 1: Using printk

Topic 2: Using /proc

Topic 3: Using strace

Topic 4: ksyms and ksymoops

Topic 5: Using gdb, kgdb

Module 7: Working with Queues

Topic 1: Wait Queues

Topic 2: Safe Blocking

Topic 3: Schedule()

Topic 4: Poll()

Module 8: Working with Memory

Topic 1: Linux Memory Management

Topic 2: Working with mmap

Topic 3: Direct I/O

Topic 4: Direct Memory Access

Module 9: Working with Hardware

Topic 1: I/O Ports and Memory Mapping

Topic 2: Allocating and Mapping I/O Space

Topic 3: Working with I/O ports

Topic 4: User Space Access

Module 10: Interrupts

Topic 1: Handling Interrupts

Topic 2: Installing Interrupt Handlers

Topic 3: Interrupt Sharing

Topic 4: Kernel Restrictions

Topic 5: Tasklets and Workqueues

Module 11: USB Drivers

Topic 1: USB Structure

Topic 2: Working with Endpoints, Interfaces and Configurations

Topic 3: USB Request Blocks

Topic 4: Organization and Structure of Drivers

Topic 5: Working with Gadget Drivers

Topic 6: Accessing Hardware from User Space

Module 12: Timing

Topic 1: Timer Interrupts

Topic 2: Short Delays

Topic 3: Task Queues

Topic 4: Kernel Timers

Module 13: CHAR Drivers

Topic 1: Major and Minor Numbers

Topic 2: scull Design

Topic 3: scull’s Memory Usage

Topic 4: Char Device Registration

Topic 5: Read and Write

Module 14: Block Device Drivers (Overview Only)

Topic 1: Block Device Drivers Overview

Topic 2: Working with Header Files

Topic 3: Registering Block Device Drivers

Topic 4: Structure of block_device_operations

Topic 5: Working with Special Methods

Module 15: Network Drivers

Topic 1: Network Drivers Overview

Topic 2: Structure of net_device

Topic 3: Sockets

Topic 4: Naming Scheme and Registration

Topic 5: Network Driver Methods

Topic 6: Working with NAPI

Module 16: Kernel Tree

Topic 1: Working with the Kernel Tree

Topic 2: The Kernel Layout

Topic 3: Makefile

Topic 4: Kconfig File

Module 17: Additional Topics – Overview Only

Topic 1: Configuring and building the kernel

Topic 2: Booting via TFTP

Topic 3: Root Filesystem over NFS

Topic 4: Monitoring File Systems (iNotify)

Topic 5: Development environment NFS

Topic 6: Initializing using the Device Tree method instead of board file

Topic 7: UDEV

Topic 8: Linux Real-Time

SETC Training on LinkedIn follow @CTESTraining Follow us on Facebook
  Programming Training
  Microsoft Training
  Network Training
  Management Training
  Server Training
  Microsoft Office Training
Site developed and authored by Jean-Marc Choquette