Android Camera MIPI接口知识总结

1 CIS
1.1 CIS知识点
ADC数量:假如一行是720P,就需要720个ADC,每个像素ADC只采样RGB中的一种颜色,然后通过demosaic算法产生其它两种颜色,生成新的10bit or 12bit or 14bit数据,一行处理完了,720个ADC再采样下一行数据,逐行扫描,直到一帧数据采集完毕,通过MIPI传给SoC。
bayer格式:柯达公司的Bryce Bayer发明 。RGGB为传统的raw格式;RYYB为现代的raw格式(RYYB的缺陷:有偏色,红色变成暗黑色),夜景比较好
Chroma:表示U和V分量
光圈F值 = 镜头的焦距 / 镜头光圈的直径 = f / D

1.2 镜头模组对焦原理
手机调整物距(定焦镜头),单反调整焦距(变焦镜头),现在相机的镜头都有5 ~ 7个凸透镜和凹透镜。当物距在无穷远和两倍焦距之间时,像距在焦距和两倍焦距之间,成倒立缩小的实像。
物距:被拍摄物体到凸透镜的距离
像距:成像平面到凸透镜的距离
焦点:通过凸透镜的、平行主光轴的光线,在主光轴上的会聚点
焦距:凸透镜中心到焦点的距离

一片凸透镜的焦距是固定的,如果在它后面再放一片凹透镜并移动,就会改变屈光度,焦距就随之改变。
外变焦镜头:在外形体积上会随着焦距的变化而伸长或缩短,单反相机。
内变焦镜头:不论焦距如何变化,都不会改变外形的尺寸,俗称“潜望镜”式镜头,由于光学变焦是在手机内部完成,所以可以很容易地安装滤镜,无需额外安装镜头筒。
Figure 1-1 手机潜望式内变焦镜头
Android Camera MIPI接口知识总结_第1张图片
1.3 MIPI接口2通道的数据分配
Figure 1-2 2通道的数据分配
Android Camera MIPI接口知识总结_第2张图片
1.4 ON Semi OIS控制器LC898128
工作原理是:利用手机摄像头模组内的Gyro芯片来侦测手部微小的抖动,将抖动信号传给OIS Control微处理器LC898128,计算出需要的补偿位移量,然后LC898128控制VCM,根据计算数据来实时调整lens的移动方向及位移量,调整光学透镜的移动来补偿这种“光轴偏移”。
OIS是移动光学透镜,而AF是移动整个镜头,二者不是一回事。

2 MIPI D-PHY
2.1 MIPI PHY前缀字母的意思
C:拉丁数字100。
D:拉丁数字500,表示最初版本的设计目标是500Mbps;数据传输采用DDR方式,即在时钟的上下边沿都有数据传输。
M:拉丁数字1000。

2.2 MIPI通道状态机
Figure 2-1 Lane的各个状态转换关系
Android Camera MIPI接口知识总结_第3张图片
2.3 combo PHY
一个CSI2 port口可以包含多套PHY。

2.4 如何估算MIPI Sensor需要几个lanes
看一下MIPI的generation X的X是什么值,每代的有具体的per-lane的速度,目前的手机的一般是1Gbps = 128MB(估算可以取这个值),这下就可以算了,13M*30fps = 390M/s = 390M * raw-bytes(假如是1) = 390MB,大概是3点几个lanes,所以4lanes够用了。

3 CSI Controller
3.1 版本历史
目前来说,广泛使用的是其第二个版本CSI-2,最新的版本则是CSI-3。

CSI-2协议既可以使用与DSI一致的D-PHY物理层协议,也可以使用C-PHY作为物理层协议。而CSI-3则只能使用M-PHY作为物理层协议,也就是说CSI-2和CSI-3之间是不兼容的。

3.2 包格式
Refer to TI DS90UB960-Q1 datasheet 7.4.13 CSI-2 Protocol Layer for CSI-2 packet format. The DS90UB960-Q1 is a HUB Deserializer.

3.3 虚拟通道设置
IPUv3 SMFC: iMX6 Sensor Multi FIFO Controller, CSI->SMFC->IDMAC, SMFC has 4 DMA channels for 4 virtual channels, refer to iMX6-IPU.pdf.
MIPI D-PHY does not care about virtual channel. Virtual channel is part of MIPI CSI-2 specification.

CSI-2传输的数据包包头部分的起始1byte为数据标志符(Data Identifier,DI),由VC[7:6](Virtual Channel)和DT[5:0](Data Type)组成。通过不同的VC和DT值来标志不同的数据流,占2个bit位的虚拟通道VC允许最多4个数据流交叉传输,其取值范围为0~3。DT可以表示帧开始FS、帧结束FE(类似于DVP的VSYNC)和数据帧等。

1)光学防抖的数据是sensor模组传过来的。VC=0传RAW10数据到ISP;VC=1传陀螺仪的数据到ISP。VC=1的gyro数据来了,ISP会产生motion的中断,或者DMA的中断(如果配置了DMA),可以读取FIFO或者通过DMA搬运;其它的snapshot和preview,ISP也会产生对应的中断。光学防抖只能处理1到2度的抖动。EIS可以处理4到5度的抖动。
Figure 3-1 Gyro Data Insertion Function
Android Camera MIPI接口知识总结_第4张图片
2)Sony DOL HDR,VC=0传长曝光RAW10数据到ISP;VC=1传短曝光RAW10数据到ISP。
带有DOL HDR模式输出的CIS在图像输出时会将长、短曝光的二帧图像按行进行列交替输出(即:长0...短0...长1...短1...这种顺序输出)。Huawei IPCamera也是这种配置。
​Figure 3-2 DOL HDR with MIPI Virtual Channel
Android Camera MIPI接口知识总结_第5张图片
4 ISP
4.1 ZSL的实现机制
传统的ISP连接一个sensor后,只能输出一路,要么是预览,要么是拍照,也就是多选一。
现代的ISP连接一个sensor后,可以同时输出几路的数据,譬如preview、snapshot(ZSL)、AI、录像输入到h264编码模块。

单反拍一张曝光一张,无反没有反光镜,通过感光元件提供的连续视频流取景,拍照片约等于视频截图,原理就是Android中的ZSL。

4.2 3A算法
3A算法包括:自动对焦AF、自动曝光AE和自动白平衡AWB。

3A算法大概原理:
ISP出统计数据,然后后端软件(或者DSP)根据统计数据计算一些参数,计算结果中有的值还需要填到ISP寄存器中,并且控制马达运动和曝光时间,算法软件和ISP组成一个闭环系统,不断迭代,最后得到一帧比较满意的图片。

AE:主要控制CIS曝光(ISO),并且是线性的,出来后图像平均亮度50左右(比较暗);ISP中的gamma(非线性)矫正后大概相当于50 x 2.2,基本上整张图像亮度在120附近,几乎就是人眼适应的亮度了。
PDAF:ISP硬件抽点,也就是PD点,送给AF算法,计算出相位差,再去控制对焦马达。低亮下PD点就看不出来了,需要用CAF(contrast AF),所以手机里的对焦总称为Hybrid AF,混合对焦。

QCOM ISP相关的软件算法代码位于:vendor/qcom/proprietary/mm-camera/mm-camera2
打开高通平台3A算法的日志:setprop persist.camera.stats.debug.mask 7

4.3 iMX53 IPUv3 SISG控制闪光灯
工作原理为SISG COUNTER(Still Image Synchronization Generator)对被VSYNC使能的SISG_CLK时钟计数,当该计数器值大于SISG_SET寄存器设定值时将sisg_out对应引脚执行SET操作,当该计数器继续计数到大于SISG_CLR寄存器值时对sisg_out对应引脚执行CLR操作,这样就可以产生与VSYNC相关的触发脉冲了,并且脉冲的起始边沿offset与脉宽都可以用户配置。

4.4 ISP vendor
AMD: silicon image, dream chip. Lattice acquired silicon image
ARM: apical
huawei: apical, altek
qcom: csr acquired zoran, later qcom acquired csr
rockchip: dream chip, ceva

4.5 x86 A39X0 IPU4
1) Automotive A39X0 CSI2 PORT_CONFIG (split mode) is set by ABL Converged Security Engine.
2) Automotive A39X0 IPU4 (4th generation Image Processing Unit), part number is CSS2600, contains both 3 scalar (RISC) processors running control firmware and 4 VLIW SIMD vector processors running algorithmic firmware. The DMA is controlled by the scalar processors.
3) media-ctl is used to map virtual channel to /dev/videoN.

5 Camera SerDes
5.1 车规级CIS模组
ISP:FH8310
FPGA:Lattice
Serializer:TI UB953,Camera SerDes的本质是把摄像头模组中的DVP数据转换成SoC端的MIPI数据,SerDes的lock是指Deserializer CDR时钟的锁定;一般使用50Ω同轴电缆或100Ω屏蔽双绞线(STP)电缆。

5.2 TI SerDes
TI FPD-Link RnD跟Maxim的GMSL RnD都在加州San Jose,两者相距10分钟车程。
TI De-Serializer中有一个寄存器SER_ID(0x5B)存储远端即Serializer的8bit I2C地址,另外一个寄存器SLAVE_ID0(0x5D)存储CMOS sensor的8bit I2C地址。TI芯片部件号是偶数的一般做De-Serializer,奇数的做Serializer。
Maximum MAX9288 De-Serializer中有一个寄存器I2CMSTBT(0x1C)存储远端即Serializer的8bit I2C地址。

5.3 ADAS Box
[6th-Mar-2022]
DS90UB960-Q1: Deserializer
DS90UB935-Q1: Serializer
Jacinto: TDA2x

5.4 SerDes port mirror (CSI-2 Replicate Mode)
以DS90UB960-Q1为例,它有两个CSI TX Port,都支持4 lane输出,可以把CSI TX 0的输出复制到CSI TX 1,两路输出都可以用4 lane。Port Mirror主要用途,双芯片双系统,共享一套SerDes输入。
The DS90UB960-Q1 is a HUB Deserializer.

5.5 ADAS Camera Trigger
SerDes摄像头出图分两种:一种是给它上电,配置好了后,按设定的帧率自己出,这种称为master模式;另一种是给一次触发信号出一帧,这个trigger信号来至于激光雷达,这种称为slave模式。
SerDes摄像头数据和激光雷达要同步,时间对时通过Linux ptp4l,这时的摄像头出图采用slave模式,也就是需要激光雷达trigger。

6 其它视频输入接口
CVBS:中间的一根是信号线,外面包着的一层是地线
DVP:传统的并行camera sensor接口,全称Digital Video Port
LVDS:PIN脚与MIPI兼容

7 Program
7.1 v4l-utils
media-ctl
v4l2-ctl

7.2 libyuv
YUV422:水平width方向上的UV分量减半,而垂直height方向不变
YUV420:水平width和垂直height方向上的UV分量都会减半

external/libyuv
system分区的模块:
LOCAL_C_INCLUDES += external/libyuv/files/include/
LOCAL_SHARED_LIBRARIES += libyuv

vendor分区的模块:
LOCAL_C_INCLUDES += external/libyuv/files/include/
LOCAL_SHARED_LIBRARIES += libyuv.vendor

8 Abbreviations
光学防抖传感器L2G2IS:Linear 2-axis gyroscope for optical image stabilization,微型双轴OIS、MEMS陀螺仪
ADAS/360 4PIN HSD: one lane LVDS + power, HSD means High Speed Data
AHD: Analog High Definition
AIS:QCOM Automotive Image Sensor Service
A-PHY:MIPI Automotive PHY,技术来源于Valens,代替私有的GMSL
ADAS:Advanced Driver Assistance System,先进驾驶辅助系统,Bosch提供整个方案模块
AR023ZWDR:A表示Aptina,R表示RGB,02表示2M,3表示1/3 inch,WDR表示Wide Dynamic Range
BG0805:brigates
CSID:QCOM CSI Decoder
DBL:Camera SerDes double-input mode,大多数摄像头输出的是RawData格式的数据,位数比较低。因此,可以把两个像素的数据放到一个帧里进行传输。即24位或32位的数据里包含两个像素的数据。这种每帧传输两个像素的方式称为双输入模式
demosaic算法:“猜色”算法,也叫反拜耳算法
DIN:Deutsches Institut für Normung,航空插头
DMS:Driver Monitoring System,疲劳驾驶监控,使用GHS INTEGRITY RTOS系统,通过车载以太网通信(PHY工作在Master模式,连接时,会主动和Slave PHY进行链路训练),法国Valeo提供方案
DOL HDR:Digital Overlap
DVP:Digital Video Port
DVR:Digital Video Recorder
EVS:Exterior View System,Android车载系统Camera架构HAL层(不同于手机Camera架构)
FFmpeg: Fast Forward MPEG
Leica:Leitz Camera
MDP:MTK Camera Media Data Path
NVR:Network Video Recorder
PVC:Pixel Visual Core
RDI:QCOM Raw Dump Interface
ROI:Region of Interest
SLAM:Simultaneous Localization and Mapping,即时定位与地图构建
SLVS-EC:Scalable Low Voltage Signaling Embedded Clock,Sony开发,一般与MIPI CSI引脚复用
Titan M:Titan Mobile
VIC:Tegra K1 Video Image Compositor,用到了Falcon MCU
ZSL:Zero Shutter Lag

你可能感兴趣的:(Camera,ADAS,CSID,D-PHY,DVP,ZSL,1024程序员节)