V4L2子系统框架介绍

序言

    本系列文章主要介绍Linux内核驱动中的V4L2子系统框架,基于Linux4.14.35内核中的相关代码来介绍。 

1.V4L2框架图

    V4L2目前主要支持以下几类设备:视频输入设备(重点)、视频输出设备、VBI设备和radio设备,其中作为视频输入设备使用的最广泛,主要是应用在摄像头上。下面主要以视频输入设备(摄像头)来介绍。

  如下图所示,展示了V4L2子系统中应用层程序(调用标准的V4L2 API)和内核空间的V4L2相关驱动以及底层硬件(包括摄像头,SOC端视频捕获模块,以及由SOC端I2C控制的外围芯片(较常见的是一些视频解码器芯片如adv7482和解串芯片如美信max9286等))之间的联系。其实就是调用标准的V4L2 API的应用程序是如何拿到从底层硬件过来的图像数据的过程。

    。

V4L2子系统框架介绍_第1张图片

    其中video_device结构体主要用来控制Soc端的视频捕获模块,SOC端的CSI2硬件接口模块,sensor芯片,以及其他的由SOC通过I2C控制的芯片都是作为v4l2_device下的v4l2_subdev子设备,v4l2_device是v4l2_subdev的父设备,它下面一般会有多个v4l2_subdev子设备。

 

2.V4L2内核空间代码介绍

   video相关的驱动代码在driver/media/

你可能感兴趣的:(Linux内核驱动,V4L2)