Distribuované systémy a počítačové sítě
• Universal Serial Bus - USB • Komunikační principy • Enumerace • Standardní třídy zařízení
Universální sériová sběrnice - USB
Obecné charakteristiky – distribuovaná datová pro připojení počítačových periferií • klávesnice, myš, Flash disk, tiskárna, modem, DAQ modul …
– deterministická technologie (Master/Slave) • až 127 zařízení v rámci jedné USB sítě
– optimalizace pro různé typy přenosů • malé i větší bloky dat • spolehlivá i nespolehlivá komunikace • podpora isochronních přenosů
– přenosové rychlosti fyzické vrstvy od Mbit/s do jednotek Gbit/s • podle varianty (low-/full-/high-/super-speed)
– podpora plug&play a hot swap • detekce připojení/odpojení, automatická konfigurace
– podpora napájení periferií z USB rozhraní • včetně režimů šetření energie
Universální sériová sběrnice - USB
Topologie systému – 3 typy uzlů – hostitel (host) • řízení Master/Slave
– rozbočovače (hub), od verze 2.0 se chovají spíše jako přepínače – zařízení (function)
Universální sériová sběrnice - USB
Topologie systému – max. 5 úrovní • omezení zpoždění
Universální sériová sběrnice - USB
Hostitel (Host) – v systému jediný • ale !!! USB On the Go !!! – výběr role při spojení
– typicky PC nebo nějaký embedded systém • mobilní zařízení, průmyslový kontroler, TV přijímač …
– řídí datové přenosy v celém systémů • má roli Master
– řídí proces enumerace • rozpoznání zařízení a hubů, konfigurace a spuštění
– power management • detekce konfigurace napájení • režimy snížené spotřeby
– obvykle integruje řadič hostitele a tzv. kořenový rozbočovač (root hub) • ten obvykle nabízí 2 USB porty
Universální sériová sběrnice - USB
Rozbočovač (Hub) – tvoří komunikační infrastrukturu USB – detekuje připojení/odpojení dalšího zařízení • na down-stream portech
– distribuuje/koncentruje datové toky • dolů/vzhůru vzhledem k hierarchii v topologii systému
– povoluje/zakazuje přenosy z a na jednotlivé down-stream porty • důležité pro enumeraci
– management napájení na down-stream portech – detekce low/full speed – překlad high low/full speed
– napájen ze sběrnice nebo z vlastního zdroje
Universální sériová sběrnice - USB
Zařízení (Function) – – – –
koncové periferní zařízení s požadovanou funkcionalitou připojuje se vždy do down-stream portu rozbočovače komunikuje low/full/high/super – speed rychlostí může být napájeno ze sběrnice či mít vlastní zdroj • bus X self powered • max. odběr z USB portu 500 mA
– power management – podpora P&P – standardní třídy zařízení • • • •
zařízení s obdobnou funkcionalitou kompletně definovaná komunikace a funkčnost podpora celé třídy jediným ovladačem v OS např. Mass Storage, HID, Printer …
Universální sériová sběrnice - USB
Princip komunikace
Universální sériová sběrnice - USB
Princip komunikace
Universální sériová sběrnice - USB
Princip komunikace
Universální sériová sběrnice - USB
Typy rour (pipes) – stream pipes • přenáší nestrukturovaná data • jednosměrné (IN, OUT) • využívají protokoly pro přenosy typu – Interrupt /přerušovací) – Bulk (blokový) – Isochronous (isochronní)
– message pipes • • • •
typicky strukturovaná data obousměrná komunikace sekvence žádost – data – potvrzení využívá protokol pro přenos typu – Control (řídicí)
Universální sériová sběrnice - USB
Typy přenosů (transfer types) – mají definovány základní vlastnosti • • • • • • • •
formát dat směr přenosu omezení velikosti paketu omezení přístupu ke sběrnici omezení dle rychlostní varianty časové latence předepsaná sekvence paketů a transakcí způsob zpracování chyb
– každé rouře je při jejím vytvoření přiřazen jeden ze čtyř typů přenosu • • • •
řídicí (control) izochronní (isochronous) přerušovací (interrupt) blokový (bulk)
Universální sériová sběrnice - USB
Přenos – Transakce – Paket
– komunikace probíhá cyklicky v (mikro)framech (1 ms / 125μs)
Universální sériová sběrnice - USB
Typy přenosů – řídicí – každé USB zařízení implementuje řídicí přenos na rouře 0 • tzv. default pipe • slouží pro enumeraci zařízení
– jako jediný je obousměrný – maximální velikost paketu závisí na rychlosti sběrnice • 8 bajtů pro LS • 8, 16, 32 nebo 64 bajtů pro FS • 64 bajtů pro HS
– v případě chyby se přenos paketu opakuje – pro řídicí přenosy je rezervováno 10% (LS, FS) nebo 20% (HS) přenosové kapacity – skládá se ze dvou, tří nebo více formálně odlišných transakcí • závěrečná transakce (status) slouží k potvrzení provedení požadované akce
Universální sériová sběrnice - USB
Typy přenosů – izochronní – v USB zařízeních volitelný • slouží pro přenosy streamů (audio, video) v reálném čase
– jednosměrný – maximální velikost paketu závisí na rychlosti sběrnice • • • •
nelze pro LS 1023 bajtů pro FS 1024 bajtů pro HS možnost tzv. high-bandwidth endpointů
– pro izochronní (spolu s přerušovacími) přenosy je rezervováno až 90% (FS) nebo 80% (HS) přenosové kapacity – standardně maximálně jedna transakce za (mikro)frame – garantovaná latence odeslání dat – v případě chyby se transakce neopakuje – skládá se ze sekvence formálně totožných transakcí
Universální sériová sběrnice - USB
Typy přenosů – přerušovací – v USB zařízeních volitelný • slouží především pro emulaci přerušení
– jednosměrný – maximální velikost paketu závisí na rychlosti sběrnice • • • •
8 bajtů pro LS 64 bajtů pro FS 1024 bajtů pro HS možnost tzv. high-bandwidth endpointů
– pro přerušovací (spolu s izochronními) přenosy je rezervováno až 90% (FS) nebo 80% (HS) přenosové kapacity – standardně maximálně jedna transakce za (mikro)frame • pro LS max. 1 transakce za 10 frame
– v případě chyby se transakce opakuje – skládá se ze sekvence formálně totožných transakcí
Universální sériová sběrnice - USB
Typy přenosů – blokový – v USB zařízeních volitelný • slouží především pro spolehlivý přenos bloků dat
– jednosměrný – maximální velikost paketu závisí na rychlosti sběrnice • nelze pro LS • 64 bajtů pro FS • 512 bajtů pro HS
– není rezervována žádná přenosová kapacita • využívá tu zbývající • žádná garance latence odeslání dat
– v případě chyby se transakce opakuje – skládá se ze sekvence formálně totožných transakcí
Universální sériová sběrnice - USB
Transakce – skládá se typicky ze tří paketů • Token (výzva) • Data • Handshake (potvrzení)
– transakci vždy iniciuje hostitel (Master) • posílá Token
– podle směru jde o transakci typu vstupní nebo výstupní • vždy z pohledu hostitele • vstupní transakce přenáší datový paket do hostitele, výstupní od něj • potvrzení generuje příjemce datového paketu
– ze samotné transakce nelze jednoznačně určit, jaký typ přenosu realizuje • to je dáno způsobem provádění transakcí
Universální sériová sběrnice - USB
Pakety – pole PID definuje typ paketu – SOF (Start of Frame) • indikuje počátek (mikro)rámce
– Token (výzva) • výzva od hostitele pro zařízení (či hub) • ADDR – adresa zařízení, až 127 různých (0 je rezervovaná) • ENDP – identifikace roury (koncového bodu), 0 – 15, 0 je vždy řídicí
Universální sériová sběrnice - USB
Pakety – pole PID definuje typ paketu – datový paket • slouží k přenosu dat • odesílá buď hostitel nebo zařízení dle směru přenosu
– Handshake (potvrzení) • odesílá příjemce datového paketu • potvrzuje správný příjem dat
Universální sériová sběrnice - USB
Transakce přerušovacích (Interrupt) přenosů
Universální sériová sběrnice - USB
Transakce blokových (Bulk) přenosů
Token
Data
Handshake
Universální sériová sběrnice - USB
Transakce izochronních (Isochronous) přenosů
Universální sériová sběrnice - USB
Transakce řídicích (Control) přenosů – řídicí přenos se skládá ze 2 a více transakcí – 1. transakce – Setup • co hostitel chce
– 2. transakce – Data • může být vynechána • může být vícenásobná
– 3. transakce – Status • prázdný datový paket • nebo info o chybě
Universální sériová sběrnice - USB
Transakce řídicích (Control) přenosů
– datová fáze se řídí pravidly transakcí blokového přenosu
Universální sériová sběrnice - USB
Přehled PIDů – typů paketů
Universální sériová sběrnice - USB
Přehled PIDů – typů paketů
Universální sériová sběrnice - USB
Fyzická vrstva – standardní kabel
Universální sériová sběrnice - USB
Fyzická vrstva – bit stuffing • po 6 bitech log. 1 je vložen bit log.0 • neprovádí se pro sekvenci logických nul
– kanálové kódování NRZI
Universální sériová sběrnice - USB
Fyzická vrstva – LS/FS signalizace
Universální sériová sběrnice - USB
Fyzická vrstva – detekce připojení/odpojení – současně detekce rychlosti – full speed
Universální sériová sběrnice - USB
Fyzická vrstva – detekce připojení/odpojení – současně detekce rychlosti – low speed
– pro high speed specielní mechanismus během resetu • nabídka (od USB2.0 hubu) a potvrzení (od high speed zařízení)
Universální sériová sběrnice - USB
Fyzická vrstva – napájení – ze sběrnice • hub – max. odběr 500 mA, napájení max. 100 mA na 4 portech • zařízení – max. 500 mA (high power) – max. 100 mA (low power) • max. 500 A v režimu spánku • před konfigurací vždy max. 100 mA
– vlastní zdroj • odběr ze sběrnice omezen na 100 mA
– nominální hodnota napětí 5 V • úbytek na kabelech • interně v zařízeních 3,3 V regulátor
Universální sériová sběrnice - USB
Stavy zařízení – přechody mezi jednotlivými stavy jsou řízeny příkazy hostitele po „default“ rouře končící v endpointu 0 – využívá řídicí přenosy – standardní dotazy a odpovědi
– enumerace zařízení
Universální sériová sběrnice - USB
Proces enumerace – – – – – – –
reset vyčtení deskriptoru zařízení reset vyčtení deskriptoru zařízení přiřazení adresy vyčtení dalších deskriptorů nastavení konfigurace
– zde je dokončena enumerace a práci se zařízením „přebírá“ specifický ovladač
Universální sériová sběrnice - USB
Deskriptor zařízení – Device Descriptor – 14 položek – jediný – obsahuje základní informace o zařízení a použité specifikaci USB, podle které se zařízení chová – identifikuje výrobce a produkt – na základě těchto informací vybírá operační systém vhodný ovladač – definuje velikost bufferu endpointu 0 (default pipe, min 8B a max 64B) – hostitel se musí přizpůsobit – definuje počet různých konfigurací zařízení – definuje případnou standardní třídu zařízení – obsahuje indexy na popisy položek v textovém deskriptoru
Universální sériová sběrnice - USB
Deskriptor konfigurace – Configuration Descriptor – pro každou konfiguraci jeden – definuje počet možných rozhraní v dané konfiguraci – identifikuje vlastnosti zařízení v dané konfiguraci • vlastní či sběrnicové napájení • podpora pro remote-wakeup
– definuje spotřebu zařízení v dané konfiuraci – obsahuje indexy na popisy položek v textovém deskriptoru
Universální sériová sběrnice - USB
Deskriptor rozhraní – Interface Descriptor – jeden pro každé rozhraní – definuje počet endpointů, tvořících rozhraní – definuje třídu zařízení, pokud není definována deskriptorem zařízení – obsahuje indexy na popisy položek v textovém deskriptoru
Universální sériová sběrnice - USB
Deskriptor koncového bodu – Endpoint Descriptor – – – – –
jeden pro každý endpoint definuje směr roury, končící v endpointu definuje podporovaný typ přenosu definuje číslo endpointu (roury) definuje velikost datového bufferu a tedy max. velikost datového paketu – pro přerušovací roury definuje periodu dotazování – pro isochronní roury periodu zasílání dat – obsahuje indexy na popisy položek v textovém deskriptoru