Tuesday, July 1, 2008

USB System Software


Universal serial bus (USB) system software consists of two layers, an upper layer of USB device drivers and a lower layer of USB functions. USB device drivers use the USB functions to establish connections to the devices they control and to configure and communicate with the devices. The lower layer of USB functions performs several interrelated tasks:

· Manage all communication between USB device drivers and the host computer's built-in USB root hub.

· Load and unload USB device drivers at the appropriate times.

· Translate data to and from the USB protocol's frame and packet formats.

· Perform generic configuration and status-related tasks by establishing communication with the generic endpoint on all USB devices.

The lower layer is itself composed of two parts, the upper USB driver module and the lower host controller driver (HCD) module. The USB driver module implements the high-level USB driver interface functions in terms of the functionality provided by the HCD module. USB device drivers use the USB driver interface functions to communicate with their peripherals. Use the functions that are provided by the USB driver to implement your USB device drivers.

The following illustration shows the two layers of software in the context of the host's USB hardware and a peripheral device.

During a data transfer, the flow of operation typically proceeds in the following sequence:

1. A USB device driver initiates transfers by using USB driver interface functions to issue requests to the USB driver module.

2. The USB driver module passes the requests to the HCD module.

3. The HCD module divides requests into individual transactions, based on its knowledge of the bus and on characteristics of the USB devices that are connected to the bus, and schedules these transactions over the bus.

4. The host controller hardware performs or completes the transactions.

All transactions on the bus originate from the host side; the peripherals are totally dependent


No comments: