Referát z předmětu
36PZ
Úloha D: USB
Skupina D: Duben
Zadání
Úkolem této laboratorní úlohy je
seznámit se se sběrnicí USB, pochopit její strukturu z pohledu programátora a
napsat velmi jednoduchý program, který bude přijímat data ze zařízení
připojeného na sběrnici.
Konkrétně se bude používat operační systém Linux a
knihovna libusb. Nejprve je třeba zkompilovat a spustit ukázkový program
testlibusb.c a s jeho pomocí zjistit informace o všech USB zařízeních
přítomných v systému. Hlavní část úlohy je nalézt zařízení poskytující data
v režimu interrupt a napsat program, jež umožní tato data přijmout a
analyzovat.
Výpis zařízení
Zařízení připojitelných na USB
sběrnici existuje mnoho různých tříd. Aby mohl operační systém rozpoznat, o jaké
zařízení se jedná, umožňuje komunikační protokol na USB zjistit informace o
připojených zařízeních.
Pomocí programu testlibusb jsme obdrželi výpis
zařízení připojených do systému:
| Vendor ID | Product ID | Výrobce | Produkt | Počet rozhraní | Počet sestavení | Počet EP | Max. odběr | Přenosový režim | Třída rozhraní/zařízení |
| 0458h | 0001h | KYE Systems Corp. (Genius) | Mouse | 1 | 1 | 1 | 50mA | interrupt | 3 (HID) |
| 0471h | 0311h | Philips | PCVC740K ToUcam Pro [pwc] | 3 | 11/1/5 | (11x2) / 0 / (0,1,1,1,1) | 250mA | interrupt | 255 (Vendor specific) /1 (Audio)/1 (Audio) |
| 04F2h | 0110h | Chicony Electronics Co., Ltd | KU-2971 Keyboard | 1 | 1 | 1 | 50mA | interrupt | 3 (HID) |
Získávání dat ze zařízení
Vzorový program byl modifikován pro čtení údajů z připojené USB myši a následně i z
klávesnice. Výpis programu je zde, jeho výstup zde. Myš posílá 3 byty v případě že od
poslední události proběhla změna, jinak neposílá nic.
První byte z každého paketu nese informaci o stisknutí tlačítka - 1 znamená levé tlačítko, 2 pravé tlačítko a 4 prostřední tlačítko. Současný stisk více tlačítek se zřejmě projeví jako součet těchto hodnot (neověřená hypotéza). Druhý a třetí byte informují o pohybech myši ve směrech dvou souřadných os (v doplňkovém kódu).
U klávesnice je 5 bytů, 3-5 byt určuje 1 až tři stisknuté klávesy a pořadí jejich stisku. První dva bity se nepovedlo určit, hodnoty bitů jsou nejspíše scan kódy kláves.
Závěr
V této laboratorní úloze jsme měli možnost
zjistit, jak pracuje sběrnice USB. Naučili jsme se pracovat s knihovnou libusb pod Linuxem a zjistili jsme, jakým způsobem se zjišťují
informace o jednotlivých připojených zařízeních. Podařilo se nám také napsat a úspěšně spustit vlastní program, jež je schopen nalézt
konkrétní zařízení podle jeho identifikačního čísla a z tohoto zařízení číst data. Celkově není práce s USB sběrnicí
složitá, je pouze náročné zorientovat se ve velkém množství údajů, jež jednotlivá zařízení poskytují.