Introduction
与i.MX5/6系列不同,i.MX7不包含图像处理单元(IPU);因此,执行对捕获帧进行操作或操作的能力要少得多。对于图像捕获,i.MX7有三个单元:-CMOS传感器接口(CSI)-视频多路复用器-MIPI CSI-2接收器。
Entities
imx7-mipi-csi2
这是MIPI CSI-2接收器实体。它有一个接收端口,用于从MIPI CSI-2相机传感器接收像素数据。它有一个源端口,对应虚拟通道0。该模块符合三星D-phy的先前版本,并支持两个D-PHY Rx数据通道。
csi-mux
这是视频多路复用器。它有两个接收端口,可以从具有并行接口的任一相机传感器或MIPI CSI-2虚拟通道0中进行选择。它有一个单一的源端口,路由到CSI。
csi
CSI使芯片能够直接连接到外部CMOS图像传感器。CSI可以直接与并行和MIPI CSI-2总线进行接口。它具有256 x 64的FIFO,用于存储接收的图像像素数据,并嵌入DMA控制器以通过AHB总线从FIFO传输数据。该实体具有一个接收端口,从csi-mux实体接收数据,并具有一个单一的源端口,可将视频帧直接路由到内存缓冲区。此端口被路由到一个捕获设备节点。
Usage Notes
为了帮助配置,并向后兼容V4L2应用程序,这些应用程序仅从视频设备节点访问控制,因此捕获设备接口继承当前管道中活动实体的控件,因此可以直接从子设备或活动捕获设备界面访问控件。例如,传感器控件可以从传感器子设备或活动捕获设备中访问。
Warp7 with OV2680
在这个平台上,一个OV2680 MIPI CSI-2模块连接到内部MIPI CSI-2接收器。下面的示例配置了一个视频捕获管道,输出为800x600,格式为BGGR 10位Bayer格式:
# v4l2-ctl --set-fmt-video=width=800,height=600,pixelformat=BG10 \
--set-ctrl bypass_mode=0 \
--set-selection=target=\"Full sensor\",top=0,left=0,width=800,height=600 \
--stream-mmap --stream-count=1 \
--device=/dev/video0
该命令使用v4l2-ctl工具设置视频格式、选择区域,并启动视频流传输。视频数据将从/dev/video0设备节点读取。
# Setup links
media-ctl -l "'ov2680 1-0036':0 -> 'imx7-mipi-csis.0':0[1]"
media-ctl -l "'imx7-mipi-csis.0':1 -> 'csi-mux':1[1]"
media-ctl -l "'csi-mux':2 -> 'csi':0[1]"
media-ctl -l "'csi':1 -> 'csi capture':0[1]"
# Configure pads for pipeline
media-ctl -V "'ov2680 1-0036':0 [fmt:SBGGR10_1X10/800x600 field:none]"
media-ctl -V "'csi-mux':1 [fmt:SBGGR10_1X10/800x600 field:none]"
media-ctl -V "'csi-mux':2 [fmt:SBGGR10_1X10/800x600 field:none]"
media-ctl -V "'imx7-mipi-csis.0':0 [fmt:SBGGR10_1X10/800x600 field:none]"
media-ctl -V "'csi':0 [fmt:SBGGR10_1X10/800x600 field:none]"
完成这些设置后,可以开始流传输。v4l2-ctl工具可用于选择传感器支持的任何分辨率。
i.MX6ULL-EVK with OV5640
在这个平台上,一个并行的OV5640传感器连接到CSI端口。下面的示例配置了一个视频捕获管道,输出为640x480,格式为UYVY8_2X8:
# v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=UYVY \
--stream-mmap --stream-count=1 \
--device=/dev/video0
该命令使用v4l2-ctl工具设置视频格式,并启动视频流传输。视频数据将从/dev/video0设备节点读取。
# Setup links
media-ctl -l "'ov5640 1-003c':0 -> 'csi':0[1]"
media-ctl -l "'csi':1 -> 'csi capture':0[1]"
# Configure pads for pipeline
media-ctl -v -V "'ov5640 1-003c':0 [fmt:UYVY8_2X8/640x480 field:none]"
完成这些设置后,可以开始流传输:
gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-raw,format=UYVY,width=640,
, →height=480 ! v4l2convert ! fbdevsink