I thought I would spend some time to explain some basic USB terminology. This information might be helpful if you have been assigned the task of writing a USB driver, but don’t have any idea where to start. This will certainly not take the place of better sources like www.usb.org or books like USB Complete: Everything You Need to Develop Custom USB Peripherals by Jan Axelson. What I hope is to quickly give you enough information to hold a conversation about USB.
Terminology:
Host is the controller on the BUS. The host is the end of the cable that shaped like a rectangle, like on your PC. The host controls and provides power to the BUS.
Function is a device that provides a single functional feature on the BUS. A mouse, keyboard and camera are examples of a USB Function. Some devices may contain multiple functions, like a Printer\Scanner\FAX machine, but each of these are separate functions so the device must include a built-in hub to connect them each to the host.
Client is a driver that presents some function by communicating with the USB Function driver. Prior to Windows CE 5.0, the USB Function driver and the Client were contained in one monolithic driver.  This was typically implemented as a Serial device for use with ActiveSync. Starting with Windows CE 5.0 the Client driver is separate and can be selected at runtime to specify the functionality of the device on the bus.
Class is a type of device on the BUS. For example, mice, keyboards and joysticks are of class Human Interface Device (HID). These devices might be recognized on the BUS by their class and a generic class driver would be loaded to manage them.
Hub a device on the BUS that provides a one-to-many relationship between a USB Host and several USB Function devices.
 
OTG stands for On The Go which is a USB controller that can be either a host or a function based on what is at the other end of the cable. Many digital cameras have USB OTG so that they can download pictures to a PC as a USB Function or control a printer as a USB Host. The connected device identifies itself to the camera via a special cable that has an extra wire.
 
USB Device Drivers
USB Host Controller driver supports the USB Host controller, or hardware. This driver handles communications to attached devices.
USB BUS driver manages BUS communications. On Windows CE, this is usually built as a monolithic USB Host driver.
USB Hub driver manages hubs on the BUS. On Windows CE, this is usually built as a monolithic USB Host driver.
USB Function driver supports the USB Function controller, or hardware. This driver handles communications to the host.
USB Client driver presents a specific function, through the USB Function driver, to the host.
USB Class driver supports a generic class type device, through the USB Host, that is attached to the host.
USB custom driver supports a specific device, through the USB Host, that is attached to the host.
 
 
Copyright © 2009 – Bruce Eitman
All Rights Reserved