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í.