View the site in Français View the site in English (USA) Site displayed in English (GB)
You are here: ac6 > ac6-formation > Linux > USB Linux Drivers
Download Catalog
Download Catalog
Download as PDF
Download as PDF
Write us
Write us
Printable version
Printable version
 

D8 USB Linux Drivers

Writing USB-2.0 and USB-3.0 host and gadget drivers on Linux

Writing USB-2.0 and USB-3.0 host and gadget drivers on Linux

formateur
Objectives
bullet_jaune_1 Learn to write Linux drivers for USB-2.0 and USB-3.0
bullet_jaune_2 Explore the Linux USB host-driver stack
bullet_jaune_2 Learn the structure of USB device drivers
bullet_jaune_2 Discover USB gagdet drivers (2.0 and 3.0)
bullet_jaune_2 Understand the support for OTG-2.0 and OTG-3.0.
bullet_jaune_1 Understand the specifics of the Linux kernel in the management of devices and drivers.
bullet_jaune_1 Learn to configure the Linux kernel for optimal hotplug management.
bullet_jaune_2 Understand how hotplug events are generated and how to use them in drivers.
bullet_jaune_2 Install and use external hotplug daemons: udev, libusb, etc ...
bullet_jaune_1 Discover Linux kernel changes up to the latest versions (up to 3.6.39 and 3.x).
bullet_jaune_1 Master the techniques of kernel debugging using Lauterbach JTAG probes.
Labs are conducted on target boards, that can be:
    Dual Cortex/A9-based "SnowBall" boards from ST-Ericsson, with Lauterbach JTAG probes.
    Atmel ARM9-based boards, with Lauterbach JTAG probes.
We use the last linux kernel, as delivered on www.kernel.org.
Course environment
bullet_jaune_2 A PC workstation and a target board per two trainees group with Lauterbach JTAG probe.
bullet_jaune_2 Printed course material.
bullet_jaune_2 CDROM with documentation and exercises solutions.
Prerequisite
bullet_jaune_2 Good practice of C programming on Linux
bullet_jaune_2 Good knowledge of Linux kernel and driver programming (see our D3-Linux drivers and D7-Linux drivers hotplug and power management courses)

Outline
First day
Reminders on kernel programming
bullet_jaune_2 Reminders on kernel module development
bullet_jaune_2 Kernel objects
Exercice : Writing a kernel module creating and using kernel objects and sets
bullet_jaune_2 The sysfs file system
Exercice : Interacting with a kernel module through a kernel object and the sysfs file sytem
Hotplug
bullet_jaune_2 Hotplug in the kernel
bullet_jaune_3 uevents
Exercice : Writing a kernel module sending hotplug events to a user mode program.
bullet_jaune_2 Hotplug at user level
bullet_jaune_3 Udev
bullet_jaune_3 Hal and Dbus
Exercice : Cross-compiling, configuring and using Udev.
Second Day
Devices and Drivers
bullet_jaune_2 The Device/Driver model in Linux
bullet_jaune_3 Device class and types
bullet_jaune_3 Bus drivers
bullet_jaune_2 Bus types
bullet_jaune_3 Generic devices and drivers
bullet_jaune_3 System devices and drivers
bullet_jaune_3 Platform devices and drivers
Exercice : Writing a platform device driver showing how device matching work
USB Drivers
bullet_jaune_2 The USB bus
bullet_jaune_3 USB devices
bullet_jaune_3 USB descriptors
bullet_jaune_3 USB endpoints
bullet_jaune_3 USB requests
bullet_jaune_2 User view of the USB bus and devices
bullet_jaune_2 USB device drivers
bullet_jaune_3 Hotplug
bullet_jaune_3 Communicating with devices through URBs
Exercice : Writing a basic usb device driver using URBs
Exercice : Writing an usb device driver using synchronous request management
Third Day
The libUSB user-mode USB driver framework
bullet_jaune_2 The libUSB libraries.
bullet_jaune_3 libUSB 0.1.12.
bullet_jaune_3 libUSB 1.0
Exercice : Building libUSB
Exercice : Writing a user-mode USB driver using libUSB
USB gadget drivers
bullet_jaune_2 Basic USB gadgets.
bullet_jaune_2 Composite USB gaddget drivers.
Exercice : Writing a gadget driver and the corresponding host driver on the Linux workstation.
bullet_jaune_2 The USB On-The-Go (OTG) specification.
bullet_jaune_3 OTG support in Linux