• 全国 [切换]
  • 二维码
    展会网

    手机WAP版

    手机也能找商机,信息同步6大终端平台!

    微信小程序

    微信公众号

    当前位置: 首页 » 行业新闻 » 热点新闻 » 正文

    摄像头camera驱动开发基础-MIPI和V4L2

    放大字体  缩小字体 发布日期:2025-01-07 03:24:44   浏览次数:2  发布人:f183****  IP:124.223.189***  评论:0
    导读

    如果从事摄像头类驱动软件,需要准备哪些基础,一篇文章总结完。 本文主要总结了摄像头camera常见的MIPI硬件接口,以及软件驱动框架V4L2,从硬件接口框架参数到软件框架,掌握这些你就基本具备了开展对应的摄像头驱动开发的基础。 从独立件来看,包括传感器模组和核心板两部分; 所以驱动软件的核心就是保证两者之间的连接,硬件接口常见两种MIPI和USB,MIPI接口调试中重点关注PHY层;软件驱动框架

    如果从事摄像头类驱动软件,需要准备哪些基础,一篇文章总结完。

    本文主要总结了摄像头camera常见的MIPI硬件接口,以及软件驱动框架V4L2,从硬件接口框架参数到软件框架,掌握这些你就基本具备了开展对应的摄像头驱动开发的基础。

    从独立件来看,包括传感器模组和核心板两部分;

    所以驱动软件的核心就是保证两者之间的连接,硬件接口常见两种MIPI和USB,MIPI接口调试中重点关注PHY层;软件驱动框架常见的V4L2和UVC。

    摄像头传感器(sensor)模组作为影像输入,提供数据来源;

    核心板接收并处理模组的输入进行处理以及显示;

    硬件接口提供物理连接方式,摄像头驱动软件就是驱动这两者的软连接,一般借助于一些成熟的软件驱动框架实现。

    常见概念:

    视频输入技术,是指通过光电技术将拍摄到的真实图像,通过摄像机转存到存储介质上的技术。

    摄像头模组,作为视频输入设备,物理上捕捉图像的设备,广泛应用于实时监控、车载、录像拍照等多个领域。

    本地摄像头,指本文使用的本地集成的camera。

    网络摄像头,可以直连网络;通过使用视频编解码器连接到便携网络设备上,然后通过网络将图像回传到人机交互终端上。

    MIPI,(移动产业处理器接口)定义了一系列移动设备内部的接口标准,MIPI接口同时定义4对差分信号用于传输图像数据,又定义了一对差分时钟信号,最初是为了减少LCD与主控芯片之间连线的数量(代替并行接口)而制定,最终支持了高清显示器以及摄像头。

    以RK3399芯片平台为例,内部集成了三个MIPI接口:DPHY0(TX0)、DPHY1(TX1RX1)、DPHY2(RX0),其中TX只能发送数据,RX只能接收数据到ISP0。有两个 PHY,每个PHY同时支持1lane、2lane或者4lane,最大可支持13M pixel raw sensor。

    摄像头MIPI接口

    摄像头传感器驱动接口有两方面构成:(1)通过IIC接口实现控制命令和配置参数的发送与接收,实现初始化传感器、配置其参数(如分辨率、帧率、曝光等);(2)通过MIPI接口实现图像数据的正确传输和解析。

    IIC总线:两根信号线(SCL时钟线和SDA数据线),摄像头传感器通常作为从设备,由主设备(如处理器)通过IIC接口完成针对从设备的配置和控制。

    IIC功能:通过IIC接口,主设备可以向摄像头传感器发送控制命令和配置参数,如设置图像分辨率、曝光时间、白平衡等。

    MIPI接口:用差分信号传输技术,可以有效减少信号干扰和功耗,是一种高性能、低功耗的串行通信接口。

    MIPI功能:支持多种数据编码格式(如YUV、RGB、RAW等)和不同的数据位宽(如8位、10位、12位等)的摄像头传感器的图像数据传输。另外一些高级功能比如相位对焦、HDR也需要通过MIPI接口实现。

    其他供电以及时钟类接口,按照硬件连接即可。

    MIPI接口参数

    以下是一些常用MIPI参数的示例规格(仅供参考,不同的硬件平台和标准会有所不同):

    参数名称 示例规格 说明
    数据速率 1.5 Gbps / 3 Gbps / 6 Gbps 支持的数据传输速率范围,具体取决于硬件平台和标准
    通道数 2 Lane / 4 Lane 支持的MIPI通道数量,增加通道数可提高数据传输速率
    时钟频率 100 MHz / 200 MHz 驱动MIPI接口的时钟信号频率,影响数据传输速率和稳定性
    上升时间/下降时间 < 100 ps MIPI信号的上升和下降时间,影响信号完整性
    眼图张开度 > 80% @ 1 Gbps 评估信号完整性的关键指标,影响数据传输的可靠性和稳定性

    参数说明:

    (1)数据速率(Data Rate)指通过MIPI接口传输数据的速度,以Gbps(吉比特每秒)为单位。

    不同的MIPI标准和硬件平台支持的数据速率范围不同。提高MIPI速率可以加快数据传输速度,使得相同时间内可以传输更多的图像数据,从而增加码流。而低功耗或低成本的解决方案则可能支持较低的数据速率。

    在调试过程中,需要根据系统要求和摄像头性能选择合适的数据速率,并通过驱动配置进行设置。利用调试工具(如示波器、逻辑分析仪)监测MIPI信号的波形和时序,确保调整后的速率在硬件支持的范围内,并且信号质量良好。

    (2)通道数(Lane Count)指用于数据传输的MIPI通道数量。每个通道都可以独立传输数据,因此增加通道数可以提高总的数据传输速率。

    常见的通道数有1、2、4等。不同的摄像头和处理器支持的最大通道数可能不同。

    在调试过程中,需要根据系统的数据带宽需求和硬件支持情况选择合适的通道数。

    (3)时钟频率(Clock Frequency)指用于驱动MIPI接口的时钟信号的频率。时钟频率直接影响数据传输的速率和稳定性。

    时钟频率的规格取决于所使用的MIPI标准和硬件设计。工程师需要根据系统要求和硬件规格来设置合适的时钟频率。

    在调试过程中,需要确保时钟信号的稳定性和准确性,以避免数据传输错误或延迟。

    (4)信号完整性参数,包括信号的上升时间、下降时间、眼图张开度等,这些参数直接影响MIPI信号的传输质量和稳定性。

    信号完整性参数的规格通常根据所使用的传输线质量、信号驱动器和接收器的性能以及系统的电气特性来确定。

    在调试过程中,需要使用示波器、逻辑分析仪等工具来监测和分析MIPI信号的波形和时序,以确保信号完整性满足要求。

    (5)总结

    当MIPI参数修改后,需要根据响应修改,重新向sensor厂商申请一份相应规格的sensor setting,以确保摄像头能够正常工作并输出符合要求的图像数据。

    比如调整MIPI速率实际上是在调整数据传输的时钟频率。因此,需要调整sensor内部的时钟分频器,从而确保sensor的时钟配置与新的速率相匹配。

    修改通道数后,因为在多通道传输中,需要确保各个通道之间的数据同步。因此需要使用共同的时钟信号、同步信号,这可能需要调整sensor的同步机制。

    MIPI-CSI硬件接口

    摄像头模组是以V13850模组为例,硬件使用的是MIPI CSI接口,软件在Android平台把OV13850模组的驱动和配置都在硬件抽象层完成。

    摄像头控制的使用的是MIPI-CSI模式,除了MIPI接口还包括三电源供电、i2c、mclk和GPIO等引脚。

    使用的三个电源包括VDDIO(IO电源与MIPI信号线的电压保持一致)、AVDD(模拟电源2.8V或3.3V)和DVDD(数字电源1.5V或者更高)。

    GPIO主要包括有电源使能管脚、PowerDown引脚、复位引脚等。原理图如下:





    MIPI camera.jpg

    MIPI phy物理层

    01MIPI 协议架构

    MIPI接口的整体架构包括物理层、协议层和应用层。

    应用层向协议层提供数据,并指定数据的传输需求和规则;

    协议层则根据这些需求和规则,将数据封装成适合传输的格式,为物理层提供数据传输的框架和规则;

    物理层PHY(Physical Layer)则负责将协议层封装好的数据通过物理介质发送出去,PHY层直接与物理介质相连,负责物理信号与数字信号的转换,是确保数据能够正确、高效地通过物理介质的关键。

    02MIPI PHY

    MIPI接口调试中重点关注PHY的原因:

    (1)PHY层是数据传输的基础,直接涉及物理连接,从而直接影响传输质量。

    (2)PHY层具备复杂性,MIPI标准定义了多种PHY层规范适用各种场景,PHY层涉及的技术细节非常丰富,包括差分信号传输、时钟恢复、数据编解码等。

    (3)PHY层具有调试的便捷性和快速定位问题的优势,PHY层可以使用示波器、逻辑分析仪等工具直接观察和测量信号的波形、时序和电平等信息。

    03MIPI PHY的类型

    类型 通道 工作模式和特点 主要应用
    C-PHY 每条lane包含彼此差分的三条数据线 有极高的传输速率 图像采集设备
    D-PHY 每条lane通常是一对差分线对 支持高速(High-Speed)和低功耗(Low-Power)两种 显示设备
    Combo-PHY 结合了C-PHY和D-PHY的特点 Combo-PHY可以在C-PHY和D-PHY模式之间进行切换,从而实现灵活的数据传输。

    驱动软件框架V4L2

    V4L2(Video4Linux2)是Linux内核中用于视频设备的通用API,它支持视频捕捉、流媒体播放、视频输出等。

    V4L2可支持三类设备:视频输入输出设备、VBI设备和radio设备,其中V4L2最广泛使用的视频输入设备就是摄像头输入设备。

    V4L2核心源码目录是/kernel/drivers/media/v4l2-core/。

    V4L2的驱动核心v4l2_dev.c,包含主要结构体 video_device 的注册,在/dev目录下创建设备节点video等。

    V4L2中的关键结构体v4l2_devicev4l2_subdevvideo_device等。

    V4L2中ioctl常用命令VIDIOC_QUERYCAPVIDIOC_S_FMT等。

    驱动代码核心流程:

    (1)初始化V4L2设备,注册设备节点(如/dev/video0)。

    (2)注册camera子设备,如ISP sensor设备。

    (3)通过VIDIOC_QUERYCAP查询设备支持的功能;

    (4)使用VIDIOC_S_FMT设置图像的分辨率、像素格式等;

    (5)通过VIDIOC_REQBUFS请求缓冲区,并使用mmap将缓冲区映射到用户空间;

    (6)使用VIDIOC_STREAMONVIDIOC_STREAMOFF控制视频流的开始和停止。

    V4L2架构的框架图如下





    V4L2框架图.jpg

    1. V4L2核心驱动框架:V4L2框架的核心部分主要负责构建内核中标准的视频设备驱动框架,并提供统一的接口函数。它包括了视频设备的注册、注销、查询等功能,以及与子设备的交互接口。

    2. V4L2下层接口驱动框架:负责将具体的视频设备(如摄像头sensor)挂接到V4L2框架上。它包括了与硬件相关的接口实现,如I2C、SPI等通信协议的实现,以及与sensor等子设备的交互逻辑。

    3. 子设备具体驱动:子设备驱动(如sensor驱动、ISP驱动等)通过V4L2提供的接口与主设备交互。它们实现了具体的硬件控制逻辑,如sensor的初始化、图像数据的采集等。

    4. 字符设备接口:在Linux中,所有的外设都被当做文件来处理。V4L2框架通过字符设备接口(如/dev/videoX)向用户空间提供视频设备的访问能力。用户空间的应用程序可以通过标准的文件操作接口(如open、read、write、ioctl等)来访问视频设备。

    5. 视频缓冲区管理:V4L2框架提供了视频缓冲区的管理机制,用于在内核空间和用户空间之间高效地传输视频数据。这通常通过videobuf2等模块来实现。

    总结整理总是水磨功夫,全篇成文跨度太久,求一个点赞关注,打打气!

     
    (文/匿名(若涉版权问题请联系我们核实发布者) / 非法信息举报 / 删稿)
    打赏
    免责声明
    • 
    本文为昵称为 f183**** 发布的作品,本文仅代表发布者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,发布者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们154208694@qq.com删除,我们积极做(权利人与发布者之间的调停者)中立处理。郑重说明:不 违规举报 视为放弃权利,本站不承担任何责任!
    有个别老鼠屎以营利为目的遇到侵权情况但不联系本站或自己发布违规信息然后直接向本站索取高额赔偿等情况,本站一概以诈骗报警处理,曾经有1例诈骗分子已经绳之以法,本站本着公平公正的原则,若遇 违规举报 我们100%在3个工作日内处理!
    0相关评论
     

    (c)2008-现在 All Rights Reserved.