Click here to start
Table of contents
LINUX USB DRIVERS
Purpose of this course
Rights to copy
Best viewed with...
Course prerequisites
Contents
LINUX USB BASICS - Linux USB drivers
USB drivers (1)
USB drivers (2)
USB gadget drivers
Linux USB support overview
USB host controllers - OHCI and UHCI
USB host controllers - EHCI
USB transfer speed
LINUX USB BASICS - USB devices
USB descriptors
Control endpoints
Interrupt endpoints
Bulk endpoints
Isochronous endpoints
The usb_endpoint_descriptor structure
The usb_endpoint_descriptor structure (2)
Interfaces
The usb_interface structure (1)
The usb_interface structure (2)
Configurations
Devices
USB device overview
USB devices - Summary
LINUX USB BASICS - User-space representation
usbview
usbtree
LINUX USB COMMUNICATION - USB Request Blocks
USB Request Blocks
Urban life
The urb structure (1)
The urb structure (2)
The urb structure (3)
The urb structure (4)
Creating pipes
Creating urbs
Freeing urbs
USB Request Blocks - Summary
LINUX USB COMMUNICATION - Initializing and submitting urbs
Initializing interrupt urbs
urb scheduling interval
Initializing bulk urbs
Initializing control urbs
Initializing isochronous urbs
Allocating DMA buffers
Allocating DMA buffers (2)
Submitting urbs
usb_submit_urb return values
Canceling urbs asynchronously
Canceling urbs synchronously
Initializing and submitting urbs - Summary
LINUX USB COMMUNICATION - Completion handlers
When is the completion handler called?
Transfer status (1)
Transfer status (2)
Transfer status (3)
Transfer status (4)
Completion handler implementation
Completion handler - Summary
WRITING USB DRIVERS - Supported devices
What devices does this driver support?
The usb_device_id structure (1)
The usb_device_id structure (2)
The usb_device_id structure (3)
Declaring supported devices
Declaring supported devices (2)
Declaring supported devices (3)
Supported devices - Summary
WRITING USB drivers - Registering a USB driver
The usb_driver structure
Optional usb_driver structure fields
Driver registration
Driver unregistration
probe() and disconnect() functions
Context: USB hub kernel thread
probe() function work
usb_set_intfdata() / usb_get_intfdata()
WRITING USB DRIVERS - USB transfers without URBs
Transfers without URBs
Transfers without URBs - constraints
USB device drivers - Summary
Advice for embedded system developers
References
ANNEX - ETHERNET OVER USB
Ethernet over USB (1)
Ethernet over USB (2)
How to help
Thanks
Related documents
Free Electrons services
Author:
Free Electrons
E-mail:
info@free-electrons.com
Homepage:
http://free-electrons.com/