USB

From Ilianko
Revision as of 16:23, 12 January 2013 by Anko (talk | contribs) (→‎Linux & USB)

Предназначение

Проектира се с цел да замени различни бавни интерфейси за предаване на данни, като паралелен, сериен, PS/2 с обща шина, към която могат да се включват всички тези устройства ползващи споменатите интерфейси.

USB интерфейсът има за цел и да улесни разработката на драйвери за нови периферни устройства.

Основни предимства:

  • Автоматичнo конфигуриране (Plug and Play);
  • Динамична инициализация (hot plug);
  • Поддръжка на различни скорости и типове данни.
  • 127 адреса за устройства.

USB архитектура

Дизайнът на USB архитектурата е асиметричен с топология тип звезда с максимум 7 нива. Топологията е изградена от три елемента: един хост, връзки, устройства (host, interconnects, devices).

От своя страна устройствата са хъбове и функции (функционалности)(hubs and functions).

Схема на свързване


  • Управлението на USB системата се извършва единствено от хоста, към който е включен root hub-a (основният хъб). Посредством маркери (token) USB хоста оведомява кога някое устройство може да предава данни.
  • Данните се предават на пакети разположени в логически канали (pipes), между хост и крайна точка (endpoint).

Нула, една и повече крайни точки се обединяват в логически интерфейс на едно устройство. Операционната система комуникира с това логическо устройство.


Адресиране:

  • Формат - [Адрес на устройството][Адрес на крайна точка (endpoint)][Посока].
  • Възможните адреси са от 0 - 127. Адрес 0 се използва за конфигуриране при начално включване на устройството
  • Възможните крайни точки са от 0 - 15. Крайна точка 0 се използва за управление.
  • Възможните посоки са IN и OUT. IN - от устройството към хоста, OUT - от хост към устройството.
  • Едно физическо устройство може е много функционално (принтер+скенер, камера+микрофон, безжична мишка и клавиатура). Има два вида свързване на многофункионалните устройства:
    1. Устройството има вграден хъб и всяка функция се адресира поотделно. (compound device)
    2. Едно устройство има няколко логически интерфейса, с различни крайни точки. (composite device)
фиг. 2. Логически канали

Задача.

  • Използвайте командата lsusb за да видите всички включени USB устройства.
  • Разгледайте опциите на lsusb. Иползвайте man lsusb и lsusb -h, тествайте всички опции на командата.
  • Разгледайте подробно само едно устройство и определете неговия адрес и крайните му точки.


Устройства не комуникират директно чрез прекъсвания с компютъра. Компютърът избира с кой да комуникира посредством хост контролер. Хост контролерът използва хардуерни прекъсвания.

Хост контролера периодично запитва всяко устройство и проверява дали то иска да комуникира с компютъра.

  • Запитването може да е веднъж на всеки (микро) интервал или за HID устройства би могло да е на всеки 10 интервала (100Hz)
  • Обикновено пакета за запитване е с размер 20 бита (4 PacketID + 7 device address + 4 end point address + 5 bit CRC)
  • USB устройство не може да започне предаване на данни без да е запитано от хост контролера
  • Пакети предназначени и изпратени за устройство съдържат адрес на устройството и краен адрес (endpoint,pipe)
    • 126 са възможните адреси, които могат да бъдат дадени от един хост контролер
  • Адресът на устройство означава определено устройство свързано към хоста
    • крайният адрес определя логическия канал на данни между устройството и хоста

Конфигурация, интерфейси и крайни точки

Всяко устройство може да има различни конфигурации. В момента на включване се определя каква конфигурация ще се ползва.

  • Две различни конфигурации: устройството ползва ток от системната шина, същото устройство може да ползва външно захранване.
  • Само една конфигурация може да е активна в даден момент

Всяка конфигурация има крайна точка за управление и един или повече интерфейси

  • Всеки интерфейс има една или повече крайни точки за вход (OUT) и/или изход (IN).
  • Интерфейсите работят последователно в споделена среда.

USB Скорости

Максимална скорост

USB устройствата могат да поддържат следните скорости на шината.

  • High speed 480Mb/s v2
  • Full speed 12Mb/s v1
  • Low speed 1.5Mb/s v1
  • Super Speed 5Gb/s v3

Реалната максимална скорост на предаване данни е между 10 и 20% по-ниска, поради резервираност на ресурсите и трафик за управление.

Съвместимост на скорости, при наличие на устройства поддържащи различни скорости

Вид връзка

Логическите канали могат да ползват четири видa трансфер.

  • Контролен (control) - За управление
  • Постоянен (isochronous) - канал с гарантирана скорост за предаване в реално време (видео, звук). Възможна загуба на данни, защото няма проверки за грешки. Поради гарантираната скорост се резервира честотна лента и броят на тези канали е ограничен от капацитета на usb контролера.
  • Прекъсваем (interrupt) - канал гарантиращ малко времезакъснение на устройства с малък трафик (мишки, клавиатури).
  • Обемен (bulk) - Канал за предаване на голям обем от данни (файлове), използващ всичкия останал капацитет на USB връзката, без загуби на данни (но няма гарантирана скорост).


Вид връзка Control Bulk Interrupt Isochronouse
Употреба идентификация и конфигуриране Принтер, скенер, памет Мишка, клавиатура Видео, аудио стрийминг
Подръжка задължителна не задължителна не задължителна не задължителна
Корекция грешки да да да не
Гарантирана скорост не не не да
Гарантирано време закъснение не не да да

Класове устройства

Според своето предназначение устройсвата се разделята на следните класове:

  • HID: Human Interface Device
    • мишка, клавиатура, джойстик ...
  • CDC: Communication Device Class
    • модеми Ethernet, ISDN ...
  • MSC: Mass storege class
    • флаш памети, твърди дискове ...

Устройствата попадащи в точно определен клас, могат да се управляват от операционната система без да има нужда от допълнително инсталиране на драйвер


Class Usage Description Examples, or exception
00h Device Unspecified Device class is unspecified, interface descriptors are used to determine needed drivers
01h Interface Audio Speaker, microphone, sound card, MIDI
02h Both Communications and CDC Control Modem, Ethernet adapter, Wi-Fi adapter
03h Interface Human interface device (HID) Keyboard, mouse, joystick
05h Interface Physical Interface Device (PID) Force feedback joystick
06h Interface Image Webcam, scanner
07 Interface Printer Laser printer, inkjet printer, CNC machine
08h Interface Mass storage USB flash drive, memory card reader, digital audio player, digital camera, external drive
09h Device USB hub Full bandwidth hub
0Ah Interface CDC-Data Used together with class 02h: communications and CDC control
0Bh Interface Smart Card USB smart card reader
0Dh Interface Content security Fingerprint reader
0Eh Interface Video Webcam
0Fh Interface Personal Healthcare Pulse monitor (watch)
DCh Both Diagnostic Device USB compliance testing device
E0h Interface Wireless Controller Bluetooth adapter, Microsoft RNDIS
EFh Both Miscellaneous ActiveSync device
FEh Interface Application-specific IrDA Bridge, Test & Measurement Class (USBTMC), USB DFU (Direct Firmware update)
FFh Both Vendor-specific Indicates that a device needs vendor specific drivers

USB устройствата се програмират, така че да отговарят на един от класовете


Формат на данните

Всяка информация която ще пратим(transfer), може да се осъществи като данните се разпределят в няколко фрейма. Данните в фрейма се оформят в транзакции. Всяка транзакция се състои от няколко пакета.


Основни понятия:

  • Пакет (packet) най-малката информационна единица е пакет. Всеки пакет съдържа:
    • (задължително) описание на типа на пакета (PID - packet identification)
    • (почти винаги) проверка за грешки (CRC)
    • (token пакет) адрес и крайна точка
    • (payload пакет) данни
    • ...
Transfer Type
Max Packet Size
LS
FS
HS
Control
8
8, 16, 32, 64
64
Bulk
-
8, 16, 32, 64
512
Interrupt
up to 8
up to 64
up to 1024
Isochronous
-
up to 1023
up to1024


Token пакета се изпраща от хоста. Устройството, което е описано в токен пакета трябва ведна след получаването да изпрати своите данни. Размера на един пакет с данни се определя от максимума за самия трансфер и от възможностите на устройството, които се обявяват при конфигурирането му.

  • Транзакция (transaction) - един (само при SOF start of Frame), два или три пакета се групират в транзакция.
  • Фрейм (frame) служи за синхронизация. В началото на всеки фрейм се изпраща SOF пакет, който служи за синхронизация. Един фрейм е с дължина 1ms. При High speed, всеки фрейм се разделя на 8 микрофрейма (по 125us).
  • Трансфер - данните, които едно устройство трябва да предаде.
USB Трансфер
Разпределение на транзакции в фреймове
Разпределение на трансфера в различни фреймове

Сигнализация

USB2 системата използва четири проводника. Два от тях се използват за обмен на данни с диференциални сигнали. Другите два USB кабела включват напрежение с номинална стойност Ucc = 5V и маса, което позволява да се захранват външни устройства. Двете информационни жила са усукана двойка, а захранващите може и да са от друг тип.

Всеки проводник в USB кабела има специфичен цвят. Сигналите за данни формират усукана двойка от бял (-Data) и зелен (+Data) цвят. За захранващото 5V напрежение се използва червен цвят. Общият сигнал (Ground) е черен (табл. 2.14).

Сигнал Цвят
+Data зелен
-Data бял
+Ucc червен
Ground черен
NCK пакет изпратен при full speed

USB 3

USB 3 надгражда USB стандарта. Добавят се две нови двойки физически линии за всяка посока, като А куплунга остава с непроменена форма, за да има обратна съвместимост с USB2. USB 3 позволява по голяма консумация на USB3 устройствата и може да сам да поеме инициатива за предаване на данни.

Задача


Bus 006 Device 009: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x046d Logitech, Inc.
  idProduct          0xc018 Optical Wheel Mouse
  bcdDevice           43.01
  iManufacturer           1 Logitech
  iProduct                2 USB Optical Mouse
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           34
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      52
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0005  1x 5 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)

Проводници и захранване на USB

USB <= 2

  • 4 проводника
  • Два проводника за захранване +/- 5V
    • Няма проводник за тактова честота
    • Предаването е асинхронно
  • Останалите два проводника са за предаване на данни
    • Обикновено се използва диференциално предаване
  • Възможно захранване до 100mA
  • При конфигуриране до 500mA

File:UsbConnectors.jpg

USB <= 3

Стъпки на свързване

  • Attached
...
  • Powered - подаване на захранване към устройството
  • Default - Устройството се захранва и се достъпва на адрес 0, след като отговори му се изпраща адрес
  • Address - Устройството е получило адрес от хост контролера по стандартния конфигурационен канал (Zero endpoint), който винаги е достъпен, независимо дали има конфигуриран адрес или не.
  • Configured - Хост контролера е получил възможните конфигурации на устройството и е избрал една.
  • Suspended - Ако няма трафик на данни за повече от 1 милисекунда. Режим на ниска консумация. Устройството излиза от този режим след наличие на активност по шината за данни.

USB1, USB2, USB3, USB On-The-Go, Wireless USB

Литература

Официална документация:

  • Jan Alexon, USB Complete, The Developer's Guide, 4th Edition, 2009


Хост контролер спецификация:

Направи си сам Интерактивен манипулатор (USB HID device)

http://www.usbmadesimple.co.uk/index.html


http://habrahabr.ru/post/92628/ http://www.jungo.com/st/support/documentation/windriver/10.2.1/wdusb_manual.mhtml/index.html http://msdn.microsoft.com/en-us/library/windows/hardware/ff538930(v=vs.85).aspx

Linux & USB