Title: USB Tutorial
1USB Tutorial
2Objectives
- Review USB functionalities
- Be able to read a USB trace
- Understand the enumeration process
- Highlight that class drivers are part of the USB
success
3Few generalities on USB
- Tiered start topology
- 2 types of peripherals
- HUB
- Function
- Up to 127 peripherals
- A master/slave architecture
- USB 2.0 spec supercedes USB 1.1 spec
- USB 2.0 LS ( ? USB1.1 at 1.5Mbps)
- USB 2.0 FS ( ? USB 1.1 at 12Mbps)
- USB 2.0 HS (480 Mbps)
- Power Management
- Different device class bus powered or self
powered - Vbus gt 4.35V. 100mA, (500mA after negociation),
500uA in suspend mode - Host disables power to ill-behaved peripherals
Host
HUB
HUB
4The Transaction Protocol is Host Based
- Host based token polling
- Data from host-to-function and function-to-host
- Host handles most of the protocol complexity
- Peripheral design is simple and low-cost
- Robustness
- Handshake to acknowledge data transfer and flow
control - Very low raw physical bit error rate (lt 10 10)
- CRC protection plus hardware retry option
- Data toggle Sequence bits
- Bounded transfer characteristics
- Data transfer bandwidth and latency prenegociated
- Flow control for peripheral buffer management
- No asynchronous message/interrupt from the
peripheral
5USB Topology
- A unique device address is assigned to each USB
device - Physical tiered start network
Dok
_at_ 3
HOST
Hub
_at_ 2
Mouse
_at_ 4
Root Hub
_at_ 1
USB cable
Root Hub
_at_ 1
- A driver has no information on the topology of
the physical network
HOST
Hub
_at_ 2
Logical link
- Each device sees all traffic generated by the
host - A device does not see data sent by another
peripheral
6USB transfer
- A device has several endpoints
- Each endpoint is assigned to a logical pipe with
the host - Each pipe is characterized by
- Device address
- Endpoint number
- Transfer type
- Transfer type
SOF
_at_6EP1
_at_5EP0
_at_6EP2
A 1ms USB Frame
- Control configuration/command/status type
communication - Bulk large amounts of data at highly variable
times - Isochronous constant-rate, error tolerant
transfers - Interrupt send or receive data infrequently but
with bounded service periods
7USB pipes
- Device address is affected by the host
- Endpoint configuration depends on the device
implementation - Time multiplexing of transfer is under host
control
8Example of USB controller
9USB transactions
- A transfer is composed of one or several
transactions - Example of control transfer (several transactions)
Setup Stage
Data Stage
Status Stage
- Example of bulk transfer (one transaction)
10USB Transactions (1)
- A transaction is made of 3 packets
- Token device address, endpoint number, transfer
type - Data data to be sent
- Handshake acknowledge
- Example of bulk transaction
11USB Transactions (2)
- Example of bulk OUT transaction
Endpoint Address
Device Address
PID
Host
Token
Data
Device
Handshake
12Summary
- The host affects an address to the device
- The device has several endpoints
- To each endpoint corresponds a pipe and a type
of transfer - Transfer is made of one or several transactions
- Transactions are composed of 3 packets
Transfer
Handles
Offers
- Pipe/Endpoint
- Endpoint number
- Endpoint type
2
1
1
1
Transaction
13Control transfer
The device is not ready The device does not
acknowledge the transaction
The host retries The device has Acknowledged
the transaction
14USB scheduling(1)
- USB transfers occurs in a millisecond time-frame
window - The host sends a Start Of Frame (SOF) Packet at
the beginning of each frame - This is the host which starts a transfer with a
logical peripheral - Transactions are time multiplexed in one or
several frames - This is the host which do the transaction
arbitration
SOF
Time
A 1ms USB Frame
- Host handles most of the protocol complexity
- Peripheral design is simple and low-cost
15USB scheduling (2)
- The bus allocation depends on the host controller
- A constant interval width is allocated to
isochronous and interrupt transfer - A minimum interval width is reserved for control
transfer - The rest of interval is for bulk transfer
Variable width
Fixed width
Valible width
Controltransfers
Iso Interrupt transfer
Bulk transfer
- A host can refuse a new peripheral which requests
large isochronous transfer size - Such peripheral offers several configurations
16Bandwidth
- Theorically up to 1216 bytes can be transferred
through a bulk endpoint in a frame - In practice 950 bytes
1ms frame
17Device detection
- The host (hub) downstream port integrates 2
pull-downs (15Kohms). The bus state is SE0 (DP
DM 0V) - When a device is connected, the bus state is idle
(DP 3.3V DM 0V). DP is forced by the device
pull-up (1.5Kohms). - The hub/host detects the port status change and
forces a bus reset to the new device (DP 0V DM
0V). - Then the host sends requests to the device
through the default control endpoint (endpoint
number 0). A newly connected device address is 0.
HOST
DP
15 Kohms
DP
DM
DM
15 Kohms
Device
18Enumeration
- Enumeration is the Process of Assigning Addresses
and Setting Configurations
19Enumeration trace
Default Address, default control endpoint
Enter Address State
Enter Configured State
20USB Device State
After 3ms of bus inactivitythe device must enter
Suspended state and drain less than 500uA
21Standard requests
- A setup transaction includes an 8-byte formatted
data packet
- Standard requests are defined in Chapter 9 of the
USB spec
22Host software architecture
- Linux and WIN CE provide
- OHCI/UHCI/EHCI HCD driver
- USBD Driver
- Main class drivers Hub, HID, Mass storage,
Printer,
MS
HUB
Etc
HID
- Symbian and RTOS does not provide USB host stack
driver - SW IPs providers are able to provide solutions
for RTOS - Softconnex, Philog,
- Expensive (65k for a mass storage solution)
- It is still possible to build a mini host from
our full host - the SW is only able to drive some kinds of devices
USB Protocol Driver API
Host Controller Driver (HCD) OHCI-UHCI-EHCI
23Device USB driver components
USB Device driver API
- Control Protocol
- Standard Requests
- Class Requests
- Vendor Requests
- Endpoint Data
- Transfer ProtocolsBulk In/Out
- Isochronous In/Out
- Interrupt In/Out
PowerManagement
StatusControl
Pull-UpResistor
ClockRegisters
USB ControllerRegisters
24Device descriptor
- The USB Host stacks uses the descriptor retrieved
from the device to find the corresponding
driver. - Windows looks for a matching Vendor ID/Product ID
in its .inf library - If not found, it will search for a matching class
driver - If not found then it will request the user to
insert a CD to install the corresponding driver
Device Descriptor
Configuration Descriptor
Configuration Descriptor
Interface Descriptor
Interface Descriptor
Interface Descriptor
EndpointDescriptor
EndpointDescriptor
EndpointDescriptor
EndpointDescriptor
EndpointDescriptor
EndpointDescriptor
25USB class drivers
- Building on top of the USB specifications, there
are Device Class Specifications from the Device
Working Group - Matching device class requirements allow use of
standard host class drivers provided by Windows
or Linux - Each class driver specifies the endpoint
configurations required - Existing class drivers
- Audio class (speakers, )
- HID (keyboard, mouse, )
- Mass Storage (disk on key)
- Printer class
- Smart Card CCID
- Communication Data Class
-
26Objectives
- Review USB functionalities
- Be able to read a USB trace
- Understand the enumeration process
- Highlight that class drivers are part of the USB
success
27What is happening?
Transaction NACKed by the device
28What is the physical topology?
How many device connected? Which device
answers? Where is connected the bus analyser?
29Answer
Bus Analyzer
HUB
New Device
Upstream Port
Downstream Ports
Device Nb 3
Device Nb 2
USB Wire
The bus analyzer logs all downstream packets from
the host and only upstream packets from the new
device