Learn USB Protocol
The host initializes a device through a series of device requests via control transfers to Endpoint 0. These are defined by the USB specification and have specific control transfer formats that we have discussed.
The process used to transfer all of the configuration information to endpoint 0 is called Enumeration
The enumeration process begins
- The host initiates a set of communication requests to the device to determine
the who, what, and how about the device
- The device has pre-defined structures located in flash that describe what it
does and how it needs to do it
- These are called descriptors
the USB Specification calls out the routing of data between the bus interface (lowest layer) and various endpoints on the device. An endpoint is the ultimate consumer or provider of data. It may be thought of as a source or sink for data. We covered all of the different transfer types and how they are composed of the different packet structures and also discussed that data phase of the transfers and in which direction the data flows based on the request type. We have eluded to things called request but really haven’t delved into it so far. Chapter 9 of the USB specification outlines what all of the data in the Control Transfers means. If you recall in our outline of the control transfer we mentioned that there are 8 data bytes that get sent in the Setup phase. Those eight data bytes tells the device what information the host is requesting. All of these requests are defined in the USB specification, hence the term Standard Requests. In addition, the USB specification outlines the format for the data that the host wants to receive from devices which provides firmware developers the template required to store all of the configuration information for the end device.
- The activity that identifies and assigns unique addresses to devices attached to a bus.
- Makes USB devices hotpluggable
- The host is always checking the bus for new devices via Interrupt transfers
- The host cannot communicate with a USB device until that device has been properly enumerated
- Invisible to user
We covered a lot of detail regarding USB transfers and the means by which the host retrieves descriptors from the device. This whole process we are describing is called Enumeration. After the attach event the host begins by resetting the device and then sends a series of standard request to retrieve the descriptors. If the host can accommodate the required bandwidth request by the device as well as the power consumption if it is bus powered, then the host will go ahead and enumerate the device and normal operation would begin. There can be no communication on the bus without a successful enumeration. Once again this diagram is showing the device descriptor as part of the enumeration. This is important because when we attach a device there is a software driver that has to be loaded on the host in order to let an application communicate over the USB to the device. We will cover that next.