BI-PI.21-9
  • 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
        • Pracují s daty
      • 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