share: true
aliases:
- 06 Hardwarová realizace pamětí a jejich organizace
author: Petr
complete: true
- Moduly jádra operačního systému Linux
- Ovladače znakových a USB zařízení
- Jejich registrace v jádře, čísla major a minor.
- Souborové operace v uživatelském prostoru a jejich implementace v ovladači.
- Význam funkce probe v USB ovladačích, realizace USB přenosů.
Moduly jádra operačního systému Linux
- Kernelový modul
- Část kódu jádra, kterou lze zavést za běhu OS
- Typicky ovladače, nejsou třeba pořád, jen když je zařízení připojené
- Psané v C, příp asembly
- Je ve formátu .ko protože je nutné využít již nahrané knihovny a systémové volání v běžícím kernelu
- User Space
- Aplikace běží v User space, pro komunikaci se zařízeními volá ovladačové funkce
- Jedná se o omezený paměťový prostor (privilegia, ochrana paměti)
- Kernel Space
- Jádro běží v méně omezeném režimu
- Běží zde ovladače
- Když je třeba přesunout data od ovladače do aplikace, je nutné správně přesunout data
- Ovladače dle funkce
- Sběrnicové
- Ovládají sběrnice, obsahují bus master a ovládají vše na pozadí (adaptéry, můstky)
- PCI, USB, SCSI ovladače
- Nejnižší úroveň
- Zajišťují konfiguraci připojených zařízení
- Funkční
- Ovládají konkrétní typ zařízení
- USB Mass storage, SCSI disk, PCI, síťovku
- Poskytuje ho výrobce zařízení
- Filtry
- Průchozí ovladače
- Logování nebo bezpečnostní funkce
- Minor a Major čísla
- Major
- Identifikuje ovladač zařízení
- Minor
- Identifikuje konkrétní zařízení, které je ovládané tímto ovladačem
- Typy zařízení
- Blokové
- Přenáší velké objemy dat (Bloky)
- Úložiště
- Znakové
- Přenáší malé objemy dat(po znacích)
- Klávesnice, Myši, Sluchátka
- Používají FileOps
USB zařízení, jejich registrace v jádře
- Definujeme podporované PIDy, VIDy
- Při připojení zařízení se volá Probe (když je ovladač zaveden)
- Pokud najde OS funkční ovladač, ten si zařízení zaregistruje
Souborové operace v uživatelském prostoru a jejich implementace v ovladači
- Jedná se o rozhraní pro komunikaci Aplikace <=> periferie, kterou poskytuje ovladač
- open, release pro přiřazení/ulvolnění zařízení
- read, write pro datový přenos
- Ovladač se musí starat o kopírování mezi kernel a usespace.
- Je taky možné přiřadit odesílat data přímo z userpsace, aby nebylo nutné kopírovat data
- copy_to_user, copy_from_user
Význam funkce probe v USB ovladačích, realizace USB přenosů
- Probe
- Funkce slouží k ověření zařízení (jestli ovladač zvládne ovládat toto zařízení)
- vytváří vnitřní struktury, instanci zařízení a registruje ji v jádru
- 1 = succesful registration
- USB přenosy
- URB (USB Request Block)
- Datová strukrura reprezentující USB datový přenos
- Slouží pro přenos dat mezi OS a Endopointem
- Zajišťuje asynchronní přenosy
- Obsahuje
- EP number
- Length
- Buffer addr
- Stav přenosu
- adresa dokončovací rutiny po ukončení přenosu
- Připrava
- interrupt : usb_fill_int_urb
- bulk : usb_fill_bulk_urb
- control : usb_fill_control_urb
- Odeslání
- usb_submit_urb
- parametr urb je ukazatelem na URB
- parametr mem_flags se nastavuje podle kontextu, ve kterém je funkce použita
- zpracování URB lze zatavit funkcemi
- usb_kill_urb
- usb_unlink_urb
- Přenosy bez URB
- Zjednodušují psaní driveru, pro realizaci stačí jedno volání funkce
- usb_bul_msg pro blokový přenos
- usb_control_msg pro řídící přenos
Vytvořeno: 29. 5. 2026, 16:41
Poslední aktualizace: 16. 6. 2026, 22:14