Готовый перевод Linux Device Drivers 3 / Драйверы устройств Линукс (третье издание): 13.1. USB Device Basics

13.1.1. Конечные точки

Самой основной формой USB коммуникации является обращение к так называемым конечным точкам. Конечные точки USB могут передавать данные только в одном направлении, либо от хос-компьютера к устройству (называется конечной точкой OUT), либо от устройства к хост компьютеру (называется конечной точкой IN). Конечные точки могут быть однонаправленная "труба".

Контрольная точка USB может быть одной из четырёх различных типов, которые определяют как передаются данные.

CONTROL
Управляющие конечные точки используются для получения доступа к различным частям USB устройства.Они широко применяются для настройки устройства, получения информации об устройстве, или получения отчёта о состоянии устройства. Эти конечные точки, как правило, небольшие по размеру. Каждое USB устройство получает управляющую конечную точку обратившись к "endpoint 0", которая используется ядром USB для конфигурации устройства во время подключения. Эти пересылки гарантируют всегда резервирование необходимой пропускной способности для доставки сообщений устройству.

INTERRUPT
Конечные точки interrupt перемещают малые объёмы данных на фиксированной скорости,каждый раз когда USB-хост запросит данные от устройства. Эти конечные точки основной метод обмена данными для USB клавиатуры и мыши. Они также обычно используются для отправки данных USB устройству, для управления этим устройством, но как правило не используются для передачи больших объёмов данных. Этот тип передачи гарантирует, что USB протокол всегда имеет достаточно широкую пропускную способность для свободной передачи.

BULK
Конечная точка bulk передаёт большие объёмы данных. Этих конечных точек обычно намного больше (они могут вмещать больше информации) чем interrupt конечных точек. Они распространены для устройств, которые должны перемещать данные без потерь. Данные передачи протокола USB не гарантируют всегда доставлять данные вовремя. Если нет возможности осуществить посылку одним BULK пакетом, он разделяется на несколько и передаётся устройством. Эта конечная точка применяется для принтеров, запоминающих устройств и сетевых устройств.

ISOCHRONOUS
Isochronous конечные точки так же передают большие объёмы данных, но не всегда гарантируется доставка данных. Эти конечные точки используются в устройствах которые могут обрабатывать потери данных и больше полагаются на постоянность поступающего потока данных. Подключения с набором данных реального времени, таких как аудио и видео устройства, почти всегда используют эти конечные точки.

Control и bulk конечные точки используются для асинхронной передачи данных, когда драйвер использует их. Interrupt и isochronous контрольные точки - цикличные. Это означает что эти конечные точки создаются для передачи данных непрерывно в определённое время, что является причиной широкой пропускной способности, резервируемой ядром USB.

Конечные точки USB описаны в ядре структурой struct usb_host_endpoint. Эта структура содержит реальную информацию о конечной точке в другой структуре, называемой struct usb_endpoint_descriptor. Последняя структура включает все конкретные USB данные,которые устройство само предоставляет, в точном формате.

bEndpointAddress
Это USB адрес этой конкретной конечной точки.Кроме того включает в себя 8-ми битное значение направления конечной точки. Битовая маска USB_DIR_OUT и USB_DIR_IN может быть размещена в этом поле для определения направления передачи данных - в устройство или в хост.

Переведено на Нотабеноиде
http://notabenoid.org/book/11832/38352

Переводчики: art_injener

Настройки

Готово:

28.57% КП = 1.0

Непереведённые фрагменты будут пропущены.