USB
Contents
Предназначение
Проектира се с цел да замени различни бавни интерфейси за предаване на данни, като паралелен, сериен, PS/2 с обща шина, към която могат да се включват всички тези устройства ползващи споменатите интерфейси.
Основни предимства:
- Автоматичнo конфигуриране (Plug and Play);
- Динамична инициализация (hot plug);
- Поддръжка на различни скорости и типове данни.
USB управление на данните
Дизайнът на USB архитектурата е асиметричен с топология тип звезда и е изграден от три части: един хост, връзки, устройства от тип хъбове и от тип функции (host, interconnects, devices - hubs and functions).
- Управлението на USB системата се извършва единствено от хоста, който включва в себеси root hub-a.
- Данните се предават на пакети разположени в логически канали (pipes).
- Едно физическо устройство може да изпълнява няколко функции. Тези устройства имат вграден хъб и всяка функция се адресира поотделно.
- Mогат да се адресират до 127 функции и хъба.
- Между една функция и хоста могат да бъдат създадени няколко канала, които се идентифицират с адрес на крайната точка (endpoint - както номер на порт при IP адресацията) фиг.2.
USB устройства
USB устройствата могат да бъдат разделени на хъбове и функции. Когато едно устройство е многофункционално (принтер+скенер, камера+микрофон) то в себеси съдържа хъб и контролера вижда няколко различни функции.
Според скоростта устройствата се разделят на следните класове:
- High speed 480Mb/s v2
- Full speed 12Mb/s v1
- Low speed 1.5Mb/s v2
- Super Speed 5Gb/s v3
Според своето предназначение устройсвата се разделята на следните класове:
USB оранизация: класове устройства
USB устройствата се програмират, така че да отговарят на един от класовете
Основни класове
- 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 |
Задача
Хъбовете осигуряват допълнителни точки за свързване. В едно мулти функционално устройство има вграден хъб и различни функции. Особен режим на работа е когато в един хъб има включени устройства опериращи с различна скорост.
Логически канали (pipes)
Поток на данните: INPUT: от устройство към хост (компютър) OUTPUT: от хост към устройство
Типове логически канали
- За управление - двупосочен
- Контролен (control)
- Поток от данни - еднопосочни канали
- постоянен (isochronous) - канал с гарантирана скорост за предаване в реално време (видео, звук). Възможна загуба на данни, защото няма проверки за грешки. Поради гарантираната скорост се резервира честотна лента и броят на тези канали е ограничен от капацитета на usb контролера.
- Прекъсваем (interrupt) - канал гарантиращ малко времезакъснение (мишки, клавиатури)
- Обемен (bulk) - Канал за предаване на голям обем от данни (файлове), използващ всичкия останал капацитет на USB връзката, без загуби на данни (но няма гарантирана скорост).
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 свързването е тип звезда. Максималния брой нива на свързване е 7. Root хъба е първо ниво. Едно мулти функционално устройство не би молгло да се свърже в ниво 7.
Проводници и захранване на USB
USB <= 2
- 4 проводника
- Два проводника за захранване +/- 5V
- Няма проводник за тактова честота
- Предаването е асинхронно
- Останалите два проводника са за предаване на данни
- Обикновено се използва диференциално предаване
- Възможно захранване до 100mA
- При конфигуриране до 500mA
USB <= 3
Основни понятия
USB системата се състои от три части:
- USB хост - контролер който изцяло управлява връзката между устройствата и компютъра
- USB Устройства
- Функции
- Хъбове
- USB връзки - осъществяват
Функции
Всички функции разбират USB протокола и изпълняват стандартните операции (конфигуриране, reset и др.) и описват своите възможности на USB хоста. Според скоростта има четири класа функции
Хъбове
Връзки
USB Host
Eдна USB система има само един USB хост. Хостът съдържа контролер и root хъб. Root хъба може да има един илиняколко извода/порта.
USB оранизация: класове устройства
USB устройствата се програмират, така че да отговарят на един от класовете
Основни класове
- HID: Human Interface Device
- мишка, клавиатура, джойстик ...
- CDC: Communication Device Class
- модеми Ethernet, ISDN ...
- MSC: Mass storege class
- флаш памети, твърди дискове ...
Устройствата попадащи в точно определен клас, могат да се управляват от операционната система без да има нужда от допълнително инсталиране на драйвер
USB управление на данните
Основи на USB протокол
Устройства не комуникират директно чрез прекъсвания с компютъра. Компютъра избира с кой да комуникира посредством хост контролер. Хост контролера изпозлва хардуерни прекъсвания.
Хост контролера периодично запитва всяко устройство и проверява дали то иска да комуникира с компютъра.
- Запитването може да е веднъж на всеки (микро) интервал или за HID устройства би могло да е на всеки 10 интервала (100KHz)
- Обикновено пакета за запитване е с размер 20 бита (4 PacketID + 7 device address + 4 end point address + 5 bit CRC)
- USB устройство не може да започне предаване на данни без да е запитано от хост контролера
- Пакети предназначени и изпратени за устройство съдържат адрес на устройството и краен адрес (endpoint,pipe)
- 126 са възможните адреси, които могат да бъдат дадени от един хост контролер
- Адресът на устройство означава определено устройство свързано към хоста
- крайният адрес определя логическия канал на данни между устройството и хоста
Конфигурация и крайни адреси (endpoints)
Всяко устройство може да има различни конфигурации
- само една конфигурация може да е активна в даден момент
Всяка конфигурация има краен адрес за управление и съвкупност от интерфейси
- Всеки интерфейс има набор от крайни адреси за вход и изход
- Интерфейсите работят последователно в споделена средапаралелно
Всяка конфигурация на устройство има набор от крайни адреси:
- IN входящи крайни адреси - пренос на данни от устройството към хоста
- OUT изходящи крайни адреси - пренос на данни от хоста към устройството
Стъпки на свързване
- Attached
- Powered - подаване на захранване към устройството
- Default - Устройството се захранва и се достъпва на адрес 0, след като отговори му се изпраща адрес
- Address - Устройството е получило адрес от хост контролера по стандартния конфигурационен канал (Zero endpoint), който винаги е достъпен, независимо дали има конфигуриран адрес или не.
- Configured - Хост контролера е получил възможните конфигурации на устройството и е избрал една.
- Suspended - Ако няма трафик на данни за повече от 1 милисекунда. Режим на ниска консумация. Устройството излиза от този режим след наличие на активност по шината за данни.
USB1, USB2, USB3, USB On-The-Go, Wireless USB
Литература
Официална документация: http://www.usb.org http://www.usb.org/developers/docs/usb_20_040908.zip (виж глава 9) http://wiki.osdev.org/Universal_Serial_Bus http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/14usb/FINAL%20VERSION/
Building I/0 Devices Second Edition.
Хост контролер спецификация:
Направи си сам Интерактивен манипулатор (USB HID device)
Linux & USB
- http://libusb.wiki.sourceforge.net/
- http://libhid.alioth.debian.org/
- http://www.cprince.com/PubRes/Hardware/LinuxUSB/
- http://lwn.net/Kernel/LDD3/
- usbmouse.c, hid-‐core.c, Linux device drivers http://www.cprince.com/courses/cs5631/lectures/USB