You are on page 1of 29

USB Tutorial

USB Tutorial

Objectives

Review USB functionalities Be able to read a USB trace Understand the enumeration process Highlight that class drivers are part of the USB success

USB Tutorial

Few generalities on USB


Host Root Hub HUB

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) Different device class: bus powered or self powered Vbus > 4.35V. 100mA, (500mA after negociation), 500uA in suspend mode Host disables power to ill-behaved peripherals
3

HUB

Keyboard

Disk

Power Management

Speaker

Printer

USB Tutorial

The 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 (< 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


4

USB Tutorial

USB Topology

A unique device address is assigned to each USB device Physical tiered start network:
HOST Root Hub @: 1
USB cable

Dok

@: 3 @: 4

Hub @: 2 Keyboard @: 6

Mouse

IP phone @: 5 Root Hub @: 1 Hub Dok Mouse


@: 2 @: 3 @: 4

Logical network:
HOST HUB Driver MSD Driver

A driver has no information on the topology of the physical network

Audio Driver
HID Driver
Logical link

IP phone @: 5 Keyboard @: 6

Each device sees all traffic generated by the host A device does not see data sent by another peripheral
5

USB Tutorial

USB 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
SOF @5EP0 @6EP1 @6EP2

A 1ms USB Frame

Transfer type:
Type Control Bulk Isochronous Interrupt

Direction Bidir Unidir Unidir Unidir

Packets per frame Several Several One One max

M ax Packet Size 64 Bytes 64 Bytes 1024 Bytes 64 Bytes

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

USB Tutorial

USB pipes

Device address is affected by the host Endpoint configuration depends on the device implementation Time multiplexing of transfer is under host control
Control Transfer Bulk IN Transfer Bulk OUT Transfer Control Transfer Interrupt IN Transfer

Device Address 3 Ep0 Disk On Key Ep1 Ep2 Device Address 4 Ep0 Mouse Ep3 Device Address 5 Ep0 IP Phone Ep1 Ep2 Device Address 2

Host

Control Transfer Iso IN Transfer Iso OUT Transfer

Control Transfer Interrupt IN Transfer

Ep0 Ep1

Hub

Logical Pipe
7

USB Tutorial

Example of USB controller

USB Tutorial

USB 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)

USB Tutorial

USB Transactions (1)

A transaction is made of 3 packets


- Token: device address, endpoint number, transfer type - Data : data to be sent Token Data Transfer - Handshake: acknowledge

Handshake

Example of bulk transaction:

10

USB Tutorial

USB Transactions (2)

Example of bulk OUT transaction:


Token
Endpoint Address Device Address PID

Data Transfer

Handshake

Host

Token Data

Device

Handshake

11

USB Tutorial

Summary

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
Device
Device address

Transfer
Handles

Offers

Control
2+

Bulk
1+

Iso
1+

Int
1+

Pipe/Endpoint
Endpoint number Endpoint type

Transaction
Token pkt Data pkt Handshake pkt
12

USB Tutorial

Control transfer

The device is not ready The device does not acknowledge the transaction

The host retries The device has Acknowledged the transaction

13

USB Tutorial

USB 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

@5

@3

@6

SOF

@5

@6

@6

SOF

@5

@2

SOF

Time
A 1ms USB Frame

-Host handles most of the protocol complexity -Peripheral design is simple and low-cost
14

USB Tutorial

USB 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
Fixed width

Valible width

Variable width

Control transfers

Iso + Interrupt transfer

Bulk transfer

-A host can refuse a new peripheral which requests large isochronous transfer size -Such peripheral offers several configurations
15

USB Tutorial

Bandwidth

Theorically up to 1216 bytes can be transferred through a bulk endpoint in a frame In practice ~950 bytes

1ms frame

16

USB Tutorial

Device 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. 3.3V HOST
1.5 Kohms
DP

15 Kohms
DM

DP DM

15 Kohms

Device
17

USB Tutorial

Enumeration

Enumeration is the Process of Assigning Addresses and Setting Configurations


Host Status Change Query Change Port Enable Hub Connect Cable Device
Attached

Powered

Reset Device Get Device Descriptor via default Pipe and Address Assign a Unique Address

Default

Read all Configuration Information


Configure and Assign Configuration Value

Addressed

Configured

18

USB Tutorial

Enumeration trace
Default Address, default control endpoint Enter Address State

Enter Configured State

19

USB Tutorial

USB Device State

After 3ms of bus inactivity the device must enter Suspended state and drain less than 500uA
20

USB Tutorial

Standard requests

A setup transaction includes an 8-byte formatted data packet

Standard requests are defined in Chapter 9 of the USB spec

21

USB Tutorial

Host software architecture


Linux and WIN CE provide OHCI/UHCI/EHCI HCD driver USBD Driver Main class drivers: Hub, HID, Mass storage, Printer, 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

HID

MS

HUB Etc

USB Protocol Driver API


Host Controller Driver (HCD) OHCI-UHCI-EHCI

Host Controller

regs

22

USB Tutorial

Device USB driver components


USB Device driver API Power Attach/ Status Control Protocol Endpoint Data Detach & Standard Requests Transfer Protocols Bulk In/Out Processing Control Class Requests
Vendor Requests

Management

Isochronous In/Out Interrupt In/Out

Clock Registers

Pull-Up Resistor

USB Controller Registers

Endpoint FIFO Registers

23

USB Tutorial

Device 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 Endpoint Descriptor Endpoint Descriptor Endpoint Descriptor
24

Interface Descriptor Endpoint Descriptor

Interface Descriptor Endpoint Descriptor

Endpoint Descriptor

USB Tutorial

USB 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

25

USB Tutorial

Objectives

Review USB functionalities Be able to read a USB trace Understand the enumeration process Highlight that class drivers are part of the USB success

26

USB Tutorial

What is happening?

Transaction NACKed by the device

27

USB Tutorial

What is the physical topology?


How many device connected? Which device answers? Where is connected the bus analyser?

28

USB Tutorial

Answer
Bus Analyzer

HUB
Upstream Port Downstream Ports

New Device

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
29

You might also like