810 likes | 2.6k Views
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. Keyboard. Root Hub. Speaker. Printer. Disk. Few generalities on USB. Tiered start topology
E N D
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
Keyboard Root Hub Speaker Printer Disk Few 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 > 4.35V. 100mA, (500mA after negociation), 500uA in suspend mode • Host disables power to ill-behaved peripherals Host HUB HUB
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
Dok @: 3 Mouse @: 4 Keyboard Keyboard IP phone @: 6 @: 6 @: 5 IP phone @: 5 Audio Driver MSD Driver HUB Driver HID Driver USB Topology • A unique device address is assigned to each USB device • Physical tiered start network: Dok @: 3 HOST Hub @: 2 @: 1 Mouse @: 4 Root Hub USB cable • Logical network: Root Hub @: 1 A driver has no information on the topology of the physical network HOST Hub @: 2 Logical link • Each device sees all traffic generated by the host • A device does not see data sent by another peripheral
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 • Transfer type: SOF @5EP0 @6EP1 @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
Disk On Key Device Address 3 Host Control Transfer Ep0 Bulk IN Transfer Ep1 Bulk OUT Transfer Ep2 Mouse Device Address 4 Control Transfer Ep0 Interrupt IN Transfer Ep3 IP Phone Device Address 5 Control Transfer Ep0 Iso IN Transfer Ep1 Iso OUT Transfer Ep2 Hub Device Address 2 Control Transfer Ep0 Interrupt IN Transfer Ep1 Logical Pipe USB pipes • Device address is affected by the host • Endpoint configuration depends on the device implementation • Time multiplexing of transfer is under host control
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)
Token Data Transfer Handshake USB 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:
Token Data Transfer Handshake USB Transactions (2) • Example of bulk OUT transaction: Endpoint Address Device Address PID Host Token Data Device Handshake
Control Bulk Iso Int Handshake pkt Token pkt Data pkt 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 Transfer • Device • Device address Handles Offers • Pipe/Endpoint • Endpoint number • Endpoint type 2+ 1+ 1+ 1+ Transaction
Control transfer The device is not ready… The device does not acknowledge the transaction The host retries… The device has Acknowledged the transaction
@3 @6 @6 @6 @5 @2 @5 @5 SOF SOF SOF 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 Time A 1ms USB Frame • Host handles most of the protocol complexity • Peripheral design is simple and low-cost
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 Variable width Valible width Fixed 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
Bandwidth • Theorically up to 1216 bytes can be transferred through a bulk endpoint in a frame • In practice ~950 bytes 1ms frame
3.3V 1.5 Kohms 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. HOST DP 15 Kohms DP DM DM 15 Kohms Device
Host Hub Device Connect Cable Status Change Addressed Configured Attached Powered Default Query Change Port Enable Reset Device Get Device Descriptor via default Pipe and Address Assign a Unique Address Read all Configuration Information Configure and Assign Configuration Value Enumeration • Enumeration is the Process of Assigning Addresses and Setting Configurations
Enumeration trace Default Address, default control endpoint Enter Address State Enter Configured State
USB Device State After 3ms of bus inactivitythe device must enter Suspended state and drain less than 500uA
Standard requests • A setup transaction includes an 8-byte formatted data packet • Standard requests are defined in Chapter 9 of the USB spec
Host Controller regs Host software architecture Linux and WIN CE provide • OHCI/UHCI/EHCI HCD driver • USBD Driver • Main class drivers: Hub, HID, Mass storage, Printer, … HID MS HUB Etc… • 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
Attach/DetachProcessing Endpoint FIFORegisters Device 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 Status&Control ClockRegisters Pull-UpResistor USB ControllerRegisters
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 Interface Descriptor Interface Descriptor EndpointDescriptor EndpointDescriptor EndpointDescriptor EndpointDescriptor EndpointDescriptor EndpointDescriptor
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 • …
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
What is happening? Transaction NACKed by the device
What is the physical topology? How many device connected? Which device answers? Where is connected the bus analyser?
Answer 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