USB

From Ilianko

USB

Литература

Официална документация: http://www.usb.org

http://www.usb.org/developers/docs/usb_20_040908.zip (виж глава 9)


Hyde,

 J.	
 (2001).	
 USB	
 Design	
 by	
 Example:	
 A	
 Prac6cal	
 Guide	
 to	
 

Building

 I/O	
 Devices.	
 Second	
 Edi6on.	
 

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

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

HID device)	
 

• Microchip

 (h8p://www.microchip.com)	
 

– pic18f4550

 microcontroller,	
 pickit2	
 programmer,	
 C	
 compiler	
 and	
 

MPLAB

 IDE	
 

– PICDEM

 development	
 board	
 (no	
 hardware	
 programmer	
 needed;	
 

bootloader

 enables	
 flashing	
 microcontroller	
 firmware	
 through	
 USB)	
 

Linux & USB

• Host

 sobware	
 on	
 Linux	
 

– h8p://libusb.wiki.sourceforge.net/

– h8p://libhid.alioth.debian.org/

• My

 notes	
 

– h8p://www.cprince.com/PubRes/Hardware/LinuxUSB/

• Linux

 Device	
 Driver	
 book	
 

– h8p://lwn.net/Kernel/LDD3/

 (freely	
 available)	
 

– Chapter

 13	
 is	
 on	
 USB	
 	
 

• Linux

 device	
 driver	
 kit	
 

– h8p://kernel.org/pub/linux/kernel/people/gregkh/ddk/

• usbmouse.c

 &	
 hid-­‐core.c	
 Linux	
 device	
 drivers	
 

– h8p://www.cprince.com/courses/cs5631/lectures/USB

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

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

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

USB <= 2

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

File:UsbConnectors.jpg

USB <= 3

USB оранизация: класове устройства

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

Основни класове

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

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

Основи на USB протокол

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

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

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

Конфигурация и крайни адреси (endpoints)

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

  • само една конфигурация може да е активна в даден моментВ

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

  • Всеки интерфейс има съвкупност от крайни адреси за вход и изход
  • Интерфейси работят паралелно

– Each

 interface	
 has	
 a	
 collec6on	
 of	
 IN	
 &	
 OUT	
 endpoints	
 

– Interfaces

 run	
 concurrently	
 	
 

• Each

 configura6on	
 of	
 a	
 device	
 has	
 a	
 collec6on	
 of	
 

endpoints

– IN

 endpoints:	
 Gadget	
 to	
 host	
 data	
 transfer	
 

– OUT

 endpoints:	
 Host	
 to	
 gadget	
 data	
 transfer	
 

13

Endpoint

 types	
 (LDD3,	
 p.	
 329-­‐330)	
 

• Control,

 Interrupt,	
 Bulk,	
 Isochronous	
 

• Control

– Used

 to	
 allow	
 access	
 to	
 different	
 parts	
 of	
 the	
 USB	
 device	
 

– Used

 for	
 configuring	
 device,	
 retrieving	
 info	
 about	
 device,	
 

sending

 commands	
 to	
 device,	
 retrieving	
 status	
 reports	
 

– Every

 USB	
 device	
 has	
 a	
 control	
 endpoint	
 “endpoint	
 0”,	
 used	
 to	
 

configure

 device	
 at	
 inser6on	
 6me	
 

– “transfers

 guaranteed	
 by	
 the	
 USB	
 protocol	
 to	
 always	
 have	
 

enough

 reserved	
 bandwidth	
 to	
 make	
 it	
 through	
 to	
 the	
 

device”

 (p.	
 329)	
 

• Interrupt

– These

 endpoints	
 transfer	
 small	
 amounts	
 of	
 data	
 at	
 a	
 fixed	
 rate	
 

every

 6me	
 the	
 USB	
 host	
 asks	
 the	
 device	
 for	
 data;	
 primary	
 

transport

 method	
 for	
 USB	
 keyboards	
 and	
 mice	
 

– Also,

 guaranteed	
 to	
 make	
 it	
 through	
 

14

Endpoint

 types	
 -­‐	
 2	
 

• Bulk

– Transfer

 large	
 amounts	
 of	
 data	
 

– Used

 for	
 devices	
 that	
 need	
 to	
 transfer	
 data	
 with	
 no	
 data	
 

loss

– Transfers

 not	
 guaranteed	
 to	
 make	
 it	
 through	
 the	
 bus	
 in	
 a	
 

specific

 amount	
 of	
 6me	
 

• Isochronous

– Also

 transfer	
 large	
 amounts	
 of	
 data,	
 but	
 data	
 not	
 

guaranteed

 to	
 make	
 it	
 through	
 

– Used

 with	
 devices	
 that	
 can	
 handle	
 data	
 loss	
 

– E.g.,

 audio	
 and	
 video	
 devices	
 

15

Endpoint

 Transfer	
 Types	
 

• Devices

 can	
 request	
 a	
 fixed	
 bandwidth	
 for	
 data	
 transfers	
 (p.	
 

327,

 LDD3)	
 

– Transfer

 types	
 are	
 specified	
 for	
 each	
 endpoint	
 

• Interrupt

 transfer	
 type	
 does	
 not	
 mean	
 hardware	
 interrupts	
 

• Interrupt

 and	
 control	
 transfers:	
 Always	
 guaranteed	
 to	
 make	
 it	
 

through

 on	
 6me	
 


http://wiki.osdev.org/Universal_Serial_Bus http://www.faculty.iu-bremen.de/birk/lectures/PC101-2003/14usb/FINAL%20VERSION/