Linux USB Device Driver Part2- Endpoints Differences - Control, Isochronous, Bulk, Interrupt

Control Endpoints: Used for transferring command and status information.
E.g. Resetting the device, Querying information about the device etc.

Enumeration of a USB Device is performed by a control Endpoint.
Each USB Device has a control endpoint zero, which is bidirectional
Bursty, random packets are initiated by the host and uses best effort delivery.
8 bytes packet length in low-speed devices, 8,16,32 or 64-bytes packet length in high speed devices and 64-bytes packet length in full speed devices.

Interrupt Endpoints:  Used for small and fast data transfer
E.g. Data transfer for serial port, HID Devices like keyboard, mouse etc
Can be used for low, high-speed and full speed devices
Unidirectional and periodic
Maximum packet size:
64 bytes or less for full speed devices
1024 bytes or less for high speed device

Bulk Endpoints - Used for large but slower data transfer
E.g. Data Transfers of Mass Storage Devices, printers and scanners
Bulk pipe is unidirectional, so bi-directional requires two bulk endpoints
Maximum packet size:
8, 16, 32 or 64 bytes for full speed devices
512 bytes for high speed device
cannot be used by low speed devices
non-periodic, large packet, bursty communication.

Isochronous Endpoints - Used for big transfer with bandwidth guarantee, data integrity may not be guaranteed.
E.g. Transfers of time-sensitive data like audio, video etc
Periodic and continuous
Unidirectional
No retries are made in case of error in data transfer.


Comments

Popular posts from this blog

bb.utils.contains yocto

make config vs oldconfig vs defconfig vs menuconfig vs savedefconfig

PR, PN and PV Variable in Yocto