GNU/Linux >> Znalost Linux >  >> Linux

Pochopení ovladačů zařízení pro webovou kameru pro Linux

Je úžasné, kolik dokumentace můžete najít pro Video4Linux2 – a nic z toho vlastně nevysvětluje, co Video4Linux je .

Za prvé, Video4Linux2 je rámec ovladače pro Linux . Ovladače frameworku ve skutečnosti neovládají zařízení přímo. Místo toho poskytují abstraktní model nějaké třídy zařízení, v tomto případě video zařízení pro aplikace k použití. Rámce ovladačů poskytují tři hlavní výhody:

  1. Poskytujte jednotné rozhraní API pro aplikace pro použití s ​​velmi širokou škálou fyzických zařízení, ať už jsou připojena pomocí USB, PCIe, MIPI, Ethernetu nebo jiného typu sběrnice pro přenos dat
  2. V jádře obsahují frameworky typ kódu, který je potřeba v téměř všech ovladačích zařízení konkrétní třídy, čímž se výrazně snižuje objem nesourodého kódu
  3. V jádře poskytují frameworky plán pro psaní nových ovladačů nižší úrovně, které skutečně řídí hardware, a tím zjednodušují vývoj ovladačů.

Takže ovladač V4L2 je ovladač na vysoké úrovni, který řídí ovladač UVC, který řídí ovladač USB, který by mohl řídit ovladač hardwaru ještě nižší úrovně.

Tento model Matryoshka je velmi běžný ve stromu ovladačů linuxového jádra. V4L2 je jedním ze složitějších příkladů, protože některá kamerová zařízení vyžadují přístup k velkým skupinám podzařízení v několika vrstvách, které řídí kameru a směrují výstup kamery mezi různé komponenty, jako jsou obrazové procesory.

Stále můžete přistupovat k ovladači UVC přímo z uživatelského prostoru pomocí souboru zařízení a systémových volání "ioctl", aniž byste museli procházet ovladačem V4L2, a stále můžete přistupovat k základnímu ovladači USB přímo z uživatelského prostoru pomocí souboru zařízení a "ioctl".

Vzhledem k tomu, že jde o obecný rámec, který poskytuje funkce společné pro širokou škálu zařízení, V4L2 vám neposkytuje vše funkcí, které ovladač UVC mohl poskytovat (za předpokladu, že vaše zařízení skutečně poskytuje více funkcí UVC, než je nutné pro podporu V4L2).

Pokud byste tedy měli mít UVC zařízení, které poskytuje všechny funkce specifikované ve specifikaci UVC, pak pro skutečné použití některých z těchto funkcí budete potřebovat přístup k UVC ovladači přímo přes soubor zařízení a systém „ioctl“. volání, za předpokladu, že ovladač UVC jádra Linuxu ve skutečnosti podporuje všechny specifikace UVC.

Nicméně význam

Implementace ovladače uvcvideo se řídí pouze V4L2 API

je, že v aktuálním jádře Linuxu ovladač UVC ve skutečnosti neposkytuje žádnou větší podporu funkcí UVC, než je potřeba pro V4L2.

Podpora V4L2 v jádře sama o sobě neposkytuje podporu UVC nebo USB ani hardwarovou podporu USB nižší úrovně.


Třída videa USB (UVC) je specifikace kterým se mají USB webové kamery atd. přizpůsobit. Tímto způsobem mohou být použity na jakémkoli systému, který implementuje podporu pro UVC kompatibilní zařízení.

V4L2 je video subsystém linuxového jádra, na kterém závisí implementace linuxového UVC. Jinými slovy, v jádře Podpora UVC vyžaduje V4L2, ale ne naopak.

V4L2 API odkazuje na uživatelský prostor programovací rozhraní, zdokumentováno zde.


Linux
  1. Linux:Jak najít ovladač zařízení používaný pro zařízení?

  2. Jaký je rozdíl mezi ovladačem platformy Linux a normálním ovladačem zařízení?

  3. Ovladač zařízení IOCTL Linux

  1. Pochopení systemd při startu na Linuxu

  2. Jak nainstalovat ovladač zařízení v systému Linux

  3. Linux – Jak najít ovladač (modul) spojený se zařízením v Linuxu?

  1. Rozumíte Linux Desktopu?

  2. Jak napsat ovladač zařízení linux block v uživatelském prostoru?

  3. Ovladač zařízení linuxového jádra na DMA ze zařízení do paměti uživatelského prostoru