05_MIPI摄像头驱动程序分析
参考资料:
- 内核源码:
drivers/media/usb/uvc/uvc_driver.c - 全志 芯片 Linux MIPI CSI摄像头接口开发指南:https://blog.csdn.net/thisway_diy/article/details/128459836
- 瑞芯微rk3568平台摄像头控制器MIPI-CSI驱动架构梳理:https://zhuanlan.zhihu.com/p/621470492
- MIPI、CSI基础:https://zhuanlan.zhihu.com/p/599531271
- 全志T7 CSIC模块:https://blog.csdn.net/suwen8100/article/details/116226366
- 全志在线文档:https://v853.docs.aw-ol.com/soft/soft_camera/
- 参考源码: https://gitee.com/juping_zheng1/v85x-mediactrl
1. 术语
| 术语 | 解释 |
|---|---|
| AE(Auto Exposure) | 自动曝光 |
| AF(Auto Focus) | 自动对焦 |
| AWB(Auto White Balance) | 自动白平衡 |
| 3A | 指自动曝光(AE)、自动对焦(AF)和自动白平衡(AWB)算法 |
| Async Sub Device | 在Media Controller结构下注册的V4L2异步子设备,例 |
| Bayer Raw(或Raw Bayer) | Bayer是相机内部的原始图片,一般后缀为.raw |
| CIF | Rockchip芯片中的VIP模块,接收Sensor数据并保存到内存中,仅转存数据,无ISP功能 |
| DVP(Digital Video Port) | 一种并行数据传输接口 |
| Entity | Media Controller架构下的各节点 |
| Frame | 帧 |
| HSYNC | 行同步信号,HSYNC有效时,接收到的信号属于同一行 |
| IOMMU(Input Output Memory Management Unit) | Rockchip芯片中的IOMMU模块,用于将物理上分散的内存页映射成CIF、ISP可见的连续内存 |
| IQ(Image Quality) | 指为Bayer Raw Camera调试的IQ xml,用于3A tunning |
| ISP(Image Signal Processing) | 图像信号处理 |
| Media Controller | Linux内核中的一种媒体框架,用于拓扑结构的管理 |
| MIPI-DPHY | Rockchip芯片中符合MIPI-DPHY协议的控制器 |
| MP(Main Path) | Rockchip芯片ISP驱动的一个输出节点,一般用来拍照和抓取Raw图 |
| PCLK(Pixel Clock) | 指Sensor输出的Pixel Clock |
| Pipeline | Media Controller架构的各Entity之间相互连接形成的链路 |
| SP(Self Patch) | Rockchip芯片ISP驱动的一个输出节点 |
| V4L2(Video4Linux2) | 指Linux内核的视频处理模块 |
| VICAP(Video Capture) | 视频捕获 |
| VIP(Video Input Processor) | 在Rockchip芯片中,曾作为CIF的别名 |
| VSYNC | 场同步信号,VSYNC有效时,接收到的信号属于同一帧 |
2. 硬件框架
2.1 接口
本文参考:https://zhuanlan.zhihu.com/p/599531271,作者"一口Linux"。
MIPI包含有很多协议,比如显示设备接口、摄像头设备接口、存储设备接口等等。
经常用到的有显示设备接口、摄像头设备接口。
显示设备接口又可以分为:并行接口、串行接口。并行接口又可以分为DBI、DPI。串行接口简称DSI。
摄像头设备接口常用串行接口CSI,它可分为CSI-2、CSI-3,目前常用的是CSI-2。对于CSI-2,它的物理接口分为D-PHY、C-PHY,目前常用的是D-PHY。(DSI使用的物理接口也是D-PHY)。

D-PHY接口引脚示例如下:

2.2 硬件结构
D-PHY接口典型图例如下:

对于摄像头,D-PHY接口仅仅是用来传递数据:
- 摄像头发送数据,它被称为:CSI Transmitter
- 主控接收数据,它被称为:CSI Receiver
- 主控通过I2C接口发送控制命令,它被称为:CCI Master(CCI名为Camera Control Interface)
- 摄像头接收控制命令,它被称为:CCI Slave

摄像头通过CSI接口,仅仅是传递数据给主控,主控还需要更多处理,如下图:

有哪些处理?
根据全志V853芯片资料,可以看到下图:

它的处理过程分为:
- 输入Parser:格式解析
- ISP:Image Signal Processor,即图像信号处理器,用于处理图像信号传感器输出的图像信号
- VIPP: Video Input Post Processor(视频输入后处理器),能对图片进行缩小和打水印处理。VIPP支持bayer raw data经过ISP处理后再缩小,也支持对一般的YUV格式的sensor图像直接缩小。
摄像头数据处理的完整硬件框图如下(以全志为例):https://v853.docs.aw-ol.com/soft/soft_camera/


可以跟瑞芯微的对比一下:https://zhuanlan.zhihu.com/p/599531271