Shopping Cart :Check Out

USB Device Drivers using Linux Hands On Workshop

Course Introduction:

This intensive course transforms an IT-Professional or a Student into a Linux Device Driver & Kernel Developer for PCI devices. The participant will develop a deep understanding of Linux PCI subsystem, how it interfaces with rest of the Linux kernel as well as various devices; Participant will be able to write drivers for PCI devices.

Target Audience:

* Professionals and Students who are working in Linux Systems Programming Areas
* Anyone planning to learn Linux Kernel PCI Programming


* A sound knowledge of C programming language
* Sound knowledge of Linux Systems Programming
* Linux Driver Basics

Course Contents

Day 1 Day 2 Day 3
Introduction to Linux Device Drivers The USB Bus and Device Architecture The Linux USB Framework
-Hardware Programming Model(Registers, Interrupts, data I/O etc) -Overview of USB Specification -Linux USB Subsystem
-The Linux Device Sub-system -USB Bus Organization -Linux USB Core and its Role
-The /dev,/sys,and /proc filesystems -Host Controllers -URB Functions and Macros
-Linux Device I/O Model -Devices and Transfer Characteristics -USB Device and Driver Objects
-Linux Kernel Modules -Enumeration and Device Descriptors -Driver and Device Registration
-Linux Device Driver Architecture -USB Standard Descriptors -Implementing Data Transfer Functions
-Character Drivers -USB Device Classes/td> -Hands-on:
-Block Drivers -Standard Requests versus Vendor-Specfic Requests -Completing the USB-Serial converter device driver
-Network Drivers -The Linux USB-Serial Subsystem
-Implementing a Character Device Driver -Hands-on:
-Char Device Data Structure -Specification for a USB-Serial Converter Device (Prolific PL2303-based)
-Char Device Driver Methods -Creating a skeleton USB driver
-Archtitecture of the Linux Serial Port Drivers
-Writing Simple kernel modules
-Building a character device driver
-Code walk-through of a serial port driver
Day 4
Debugging and Testing Linux USB drivers
-Using lsusb to enumerate USB Devices
-Tracing and logging
-Debugging the Driver
-Memory Allocation Issues
-Driver Registration Issues
-Device Organization Issues
-URB Issues
-Making the USB Driver More Robust
-Identifying bugs in the driver

Training Programs