基于Linux V4L2子系统的ISP及Camera驱动接口标准化方法及应用
2021-08-16陈二微
陈二微

随着行业互联网的持续发展,各行业对Camera数据的采集、应用提出了不同的需求。以Linux操作系统为基础的V4L2子系统是一种较为通用的驱动架构。本文描述基于电子的硬件ISP在V4L2接口下的实现方法、Camera连接的拓扑结构、提出了一种3A独立进程的图像调试方式,及其灵活的、可拓展的应用形式。
Linux V412及ISP硬件
Video For Linux 2(V412),是Linux Kernel中专用于处理视频、图像的子系统框架,向Linux操作系统应用层提供了ISP及Camera硬件的标准接口,被广泛应用于各芯片厂商的设备驱动。通过对数据流的详细定义,使得应用程序的开发有统一的接口,LinuxTV组织即是这个子系统的维护者。
ISP在本文中指集成于SoC中的图像处理核心,它能够将Camera感光元件获取的Raw Bayer原始数据进行去马赛克(Demosaicing)处理,从而转成一张YUV或RGB图像;同时对图像进行3A (Auto Focus,Auto Exposure,Auto White Balance)信息统计并调试校正出一张曝光及白平衡准确的图像。ISP的硬件接口灵活,能够接收不同分辨率、不同格式、MIPI或DVP协议传输的原始图像数据,也可接收已经调试好的YUV或RGB图像输入;能够对原图进行裁剪、缩放,并可同时输出两路不同格式(YUV或RGB)、不同大小的图像。
驱动的实现方法
一个完整的ISP传输Camera数据链路如图1所示,它分为了Camera感光Sensor(可以包含一个或多个),MIPI DPHY 数据传输通路,ISP转发数据,统计图像信息,调试参数配置,双路图像输出6个大模块。各个模块分别表示为一个Entity 节点,使用Link将两个Entity连接起来,从而形成一条或2条的链路。
其中Camera摄像头Entity可以支持1个或多个,在建立Link链接时,可以指定当前有效的摄像头。2个的图像输出接口从上一级Entity处得到图像后,可以分别自由地裁剪、缩放并输出。……
