Vypracovali: Bedřich Lacina,
Ondřej Kašpar, Petr Šitych, Jaroslav Nušl
Datum: 20. 4.
2004
Cvičení: Středa 11:00
D. Universal Serial Bus
Cílem této úlohy je prostudovat mechanismus práce USB a napsat program, který bude přijímat data z této sběrnice.
Práce bude probíhat pod OS GNU Linux
a) zprovoznit SW pro přístup na sběrnici
b) přečíst údaje o jednotlivých zařízeních
c) identifikovat obsah přijímaných datových paketů
Pro realizaci úlohy je potřeba
operační systém Linux KNOPIX, knihovnu usblib která je ke stažení zde: libusb-0.1.8.tar.gz
a testovací program pro vypsání připojených zařízení na USB testlibusb.c
Při bootování je potřeba
odpojit zařízení, se kterým budeme komunikovat jinak by si linux převzal
ovladače zařízení a nešlo
by s ním pracovat.
ÚKOLY
– zprovoznit knihovnu libusb a přiložený příklad (v distribuci KnoppiX
je již obsažena)
– sepsat jaká zařízení od jakých výrobců jsou v systému (vendor,
product)
– sepsat seznam zařízení, počet jejich možných sestavení, rozhraní a
koncových bodů
– jaké jsou maximální proudové odběry zařízení a v jakém jsou přenosovém
režimu
– jaké třídy rozhraní / zařízení jsou v systému
– napsat program, který přijme data z vybraného zařízení a zobrazí je
na obrazovku
– určit jaký význam mají jednotlivé byte v doručeném datovém balíčku
(tzn. který byte např.u myši signalizuje stisknutá tlačítka, který pohyb
vertikálně a horizontálně atd.)
– zkuste si představit, jak asi by se asi dal napsat ovladač daného zařízení
Nalezená zařízení připojená v systému: (3x Hub)
0458 KYE Systems Corp. (Mouse
Systems)
0001 Mouse
0471 Philips
0311 PCVC740K ToUcam Pro [pwc]
04f2 Chicony Electronics Co., Ltd
0110 KU-2971 Keyboard
Program pro vypsání všech USB zařízení
je testlibusb.c a jeho výstup je out.txt
Výstup linuxovského příkazu pro výstup všech sběrnic: outb.txt
Seznam USB ID: usb.ids
Program přijímající data ze zařízení testlibusb.c
Data jsme četli ze zařízení č. 0485/001 (KEY Mouse)
Přečtená data: 00000001 FFFFFFFF
Prvních 8 bitů obsahuje stavy tlačítek, směr X (kladný nebo záporný), směr Y, přetečení X, přetečení Y (myš se posunula více než 255 pulzů v 1/40 sekundy). Další dva bajty obsahují relativní hodnoty pohybu X a Y - změnu počtu pulzů které byly detekovány od doby kdy byl poslán poslední paket.
Při práci v laboratoři jsme splnili všechny body zadání. Při práci s USB jsme s pomocí podkladů dostupných k úloze neměli žádné vetší problémy. U posledního bodu zadání byl nejvíce nápomocen Bedřich Lacina, který se dobře orientoval v programovacím prostředí C++.
Zpět na obsah