\ Ovladače

Ovladače
Úspěšné připojení zařízení na sběrnici je následováno enumerací, která podle Product ID a Vendor ID, popřípadě podle čísla třídy určí, o jaký typ zařízení se jedná. Operační systém, který bude obsluhovat sběrnici ze strany hostitele, se zpravidla snaží o nainstalování ovladačů zařízení. Ovladače mají za úkol vytvořit standardizované rozhraní. Přestože je každé zařízení jiné, ovladač má za úkol prezentovat jej tak, aby k němu šlo přistupovat standardními vstupně-výstupními operacemi.

Standardní vstupně-výstupní operace:
  • otevření zařízení - Open
  • čtení - Read
  • zápis - Write
  • zavření zařízení - Close
  • specifické řízení - DeviceIoControl

Zařízení se mohou dělit na znaková a bloková. Znaková zařízení jsou producentem a konzumentem datového toku, ve kterém se nelze vracet ani jinak nastavovat pozici. Znaková zařízení nemají začátek ani konec dat a nejsou schopna vyčíslit objem dat. Bloková zařízení pracují nad uspořádanými daty - každé datové jednotce je přiřazena adresa. V datech se lze pohybovat pomocí speciální funkce - Seek. Podle maximální možné adresy lze určovat objem dat. Zařízení bloková i znaková lze formálně sjednotit pod pojem soubor(File).

Zařízení, jehož konstrukce je cílem této práce, je znakovým zařízením. Ať se jedná o převodník USB na SPI, A/D převodník nebo sériovou linku, vždy pracujeme s datovým tokem. Přenášeným datům nelze přiřadit adresu, není přesně dopředu znám jejich objem a neexistuje místo, kde by byla data uchovávána.

Dvě možnosti v návrhu zařízení:
  1. obecné zařízení - návrhář implementuje do zařízení pouze požadavky vyžadované USB specifikací, popřípadě implementuje specifické požadavky dle vlastního návrhu. Operační systém nemůže se zařízením komunikovat, protože mu nebyl předán předpis, podle kterého by se standardní vstupně/výstupní operace transformovaly na specifické příkazy pro zařízení. Návrhář tedy musí naprogramovat ovladače zařízení, ve kterých stanoví, jaké operace se musejí provést, pokud chce operační systém nad zařízením provádět standardní I/O.
  2. předdefinovaná třída - návrhář implementuje do zařízení kromě nejnutnějších USB požadavků také další požadavky definované ve specifikaci určité třídy zařízení. Zařízení tedy poskytuje operačnímu systému známé rozhraní a odpadá tak nutnost operačnímu systému předkládat speciální ovladač, který by rozhraní standardizoval. Operační systém buď obsahuje generický ovladač dané třídy, nebo je ovladač volně dostupný u organizace, která třídu zařízení definovala.
    Existuje řada zařízení, které slouží jako převodníky. Jejich funkcí je příjem dat, transformace podle předpisu a následné odeslání. Data nejsou interpretována, převodník není producentem ani konzumentem dat, mnohdy je z hlediska datového toku úplně transparentní. Na základě uvedených vlastností převodníků byla vytvořena třída komunikačních zařízení (CDC - Communication Device Class) a byly standardizovány všechny operace, které mohou komunikační zařízení vykonávat.


CDC - Communication Device Class

Jako příklad komunikačního zařízení můžeme uvést modem připojený k sériovému portu počítače. Modem se chová jako obousměrná roura. která kromě datového přenosu potřebuje i informace o přenosové rychlosti, nastavení řízení toku, formátu dat a jiné informace. která kromě datového přenosu provádí i řízení toku. . Sada řídících signálů, které jsou z počítače zasílány přes sériovou linku Funkce, které jsou v rámci této práce implementovány do USB zařízení, čního systému je jasně dán význam všem standardním vstupně/výstupním operacím a není nutné pro každé takové zařízení vydávat zvláštní ovladač. Operační systém Microsoft Windows XP obsahuje ovladač usbser.sys a v případě, že uživatel poskytne systému INF soubor (soubor s informacemi o zařízení), je ovladač zaveden do paměti a spouštěn. Takovýto přístup ale vyžaduje, aby zařízení implementovalo třídně-specifické požadavky. Výhodou začlenení zařízení do třídy je, že odpadá nutnost programovat ovladač zařízení. a tudíž existuje i ovladač, který a nesnaží se data interpretovat, je na místě otázka, zda by pro naše zařízení nemohly být použity ovladače. funkce, které plní naše znakové zařízení, jsou z velké části podobné s ostatními znakovými zařízeními naopak poskytují data z lineárního prostoru z pozice čtecího/zápisového ukazatele a . Bloková zařízení tedy definují na svém rozhraní též funkci pro nastavení pozice. Schopnosti zařízení, které se přirozeně liší mezi jednotlivými typy zařízení, jsou ovladačem řízeny tak, pro uživatele a prezentovat schopnosti zařízení v takové formě, se kterou umí aplikace pracovat.