GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre les pilotes de périphérique Linux de la webcam

C'est incroyable la quantité de documentation que vous pouvez trouver pour Video4Linux2 - et rien n'explique réellement quoi Video4Linux est .

Premièrement, Video4Linux2 est un framework de pilote Linux . Les pilotes de framework ne contrôlent pas directement les périphériques. Au lieu de cela, ils fournissent un modèle abstrait d'une certaine classe d'appareils, dans ce cas des appareils vidéo à utiliser par les applications. Les frameworks de pilotes offrent trois avantages principaux :

  1. Fournir une API unifiée pour les applications à utiliser avec une très large gamme d'appareils physiques, qu'ils soient connectés par USB, PCIe, MIPI, Ethernet ou tout autre type de bus de transport de données
  2. Dans le noyau, les frameworks contiennent le type de code nécessaire dans presque tous les pilotes de périphérique d'une classe particulière, réduisant ainsi considérablement le volume de code disparate
  3. Dans le noyau, les frameworks fournissent un plan pour l'écriture de nouveaux pilotes de niveau inférieur qui contrôlent réellement le matériel, simplifiant ainsi le développement de pilotes.

Ainsi, le pilote V4L2 est un pilote de haut niveau qui pilote le pilote UVC, qui pilote le pilote USB qui pourrait piloter un pilote matériel de niveau encore inférieur.

Ce modèle Matryoshka est très courant dans l'arborescence des pilotes du noyau Linux. V4L2 est l'un des exemples les plus complexes car certains appareils photo nécessitent l'accès à de grands groupes de sous-appareils en plusieurs couches qui contrôlent la caméra et acheminent la sortie de la caméra entre divers composants tels que les processeurs d'images.

Vous pouvez toujours accéder au pilote UVC directement depuis l'espace utilisateur en utilisant un fichier de périphérique et des appels système "ioctl", sans passer par le pilote V4L2, et vous pouvez toujours accéder au pilote USB sous-jacent directement depuis l'espace utilisateur en utilisant son fichier de périphérique et ses "ioctl".

Étant un cadre général qui fournit des fonctionnalités communes à une large gamme d'appareils, V4L2 ne vous fournit pas tous de la fonctionnalité que le pilote UVC pourrait fournir (en supposant que votre appareil offre réellement plus de fonctionnalités UVC que nécessaire pour prendre en charge V4L2).

Donc, si vous deviez avoir un appareil UVC qui fournit toutes les fonctions spécifiées dans la spécification UVC, alors pour utiliser réellement certaines de ces fonctions, vous devrez accéder au pilote UVC directement via un fichier d'appareil et le système "ioctl" appels, en supposant que le pilote UVC du noyau Linux prend en fait en charge toutes les spécifications UVC.

Cependant, la signification de

L'implémentation du pilote uvcvideo est uniquement conforme à l'API V4L2

est que dans le noyau Linux actuel, le pilote UVC ne fournit en fait pas plus de support de fonction UVC que nécessaire pour V4L2.

La prise en charge de V4L2 dans le noyau ne fournit pas en elle-même la prise en charge UVC ou USB ou la prise en charge matérielle USB de niveau inférieur.


La classe vidéo USB (UVC) est une spécification auxquelles les webcams USB, etc., sont censées se conformer. De cette façon, ils peuvent être utilisés sur n'importe quel système prenant en charge les appareils compatibles UVC.

V4L2 est le sous-système vidéo du noyau Linux dont dépend l'implémentation Linux UVC. En d'autres termes, dans le noyau La prise en charge d'UVC nécessite V4L2, mais pas l'inverse.

L'API V4L2 fait référence à un espace utilisateur interface de programmation, documentée ici.


Linux
  1. Comprendre systemd au démarrage sous Linux

  2. Comment installer un pilote de périphérique sous Linux

  3. Comment écrire un pilote de périphérique de bloc linux en espace utilisateur?

  4. Pilote de périphérique du noyau Linux vers DMA à partir d'un périphérique dans la mémoire de l'espace utilisateur

  5. Comment trouver le driver (module) associé à un périphérique sous Linux ?

Comment installer les pilotes NVIDIA sur CentOS 7 Linux

Comprendre les autorisations de fichiers Linux

Comment installer les pilotes Nvidia sur Linux Mint [Guide du débutant]

Comprendre les processus sous Linux

Comment installer les derniers pilotes Nvidia sur Linux Mint 16 Petra

Comment écrire sur une webcam virtuelle sous Linux ?