Difference between revisions of "MV Camera on Firfly Boards/zh"
(→支持的模组) |
|||
(40 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
=== 概述 === | === 概述 === | ||
+ | MV系列和RAW系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。 | ||
+ | |||
+ | 本文以Firefly的ROC-RK3588S-PC和ROC-RK3566-PC主板为例,介绍怎样将MV和RAW系列摄像机接入RK3566/3K3568和RK3588S/RK3588系统。 | ||
+ | |||
+ | 我们提供了Linux(以Ubuntu为例)操作系统下的驱动。 | ||
+ | |||
+ | ==== 支持的模组 ==== | ||
+ | {| class="wikitable" | ||
+ | !系列 | ||
+ | !型号 | ||
+ | !状态 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX178M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-SC130M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX287M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX296M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX265M | ||
+ | |完成 | ||
+ | |- | ||
+ | |MV系列 | ||
+ | |MV-MIPI-IMX264M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-SC132M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-IMX462M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-AR0234M | ||
+ | |完成 | ||
+ | |- | ||
+ | |RAW系列 | ||
+ | |RAW-MIPI-SC535M | ||
+ | |完成 | ||
+ | |} | ||
+ | 此外,在ubuntu系统下,已经调通V-by-One HS连接模式的驱动。 | ||
+ | |||
+ | === 硬件准备及安装 === | ||
+ | MV系列和RAW系列相机需要使用[[ADP-MV2 Adapter Board Data Sheet/zh|ADP-MV2]]转接板才能连接到ROC-RK35xx-PC主板。 | ||
+ | |||
+ | ==== 新版本ADP-MV2的连接 ==== | ||
+ | |||
+ | ===== MV相机与ADP-MV2的连接 ===== | ||
+ | 二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 | ||
+ | {| class="wikitable" | ||
+ | !TOP | ||
+ | !BOTTOM | ||
+ | |- | ||
+ | |[[File:ADP-MV2-V2 to MV-MIPI-X.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]] | ||
+ | |[[File:ADP-MV2-V2 to MV-MIPI-X No.2.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]] | ||
+ | |}<br /> | ||
+ | |||
+ | ===== RAW-MIPI-SC132M与ADP-MV2的连接 ===== | ||
+ | 二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。 | ||
+ | {| class="wikitable" | ||
+ | !TOP | ||
+ | !BOTTOM | ||
+ | |- | ||
+ | |[[File:ADP-MV2 to RAW-MIPI-SC132M.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M ]] | ||
+ | |[[File:ADP-MV2 to RAW-MIPI-SC132M No.2.jpg|alt=ADP-MV2 to RAW-MIPI-SC132M|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M]] | ||
+ | |} | ||
+ | ===== 其他RAW系列摄像头与ADP-MV2的连接 ===== | ||
+ | 二者使用0.5mm间距*22P的FFC异面线连接,注意接触面向外。 | ||
+ | {| class="wikitable" | ||
+ | !TOP | ||
+ | !BOTTOM | ||
+ | |- | ||
+ | |[[File:ADP-MV2 to RAW series camera.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW series camera]] | ||
+ | |[[File:ADP-MV2 to RAW series camera No.2.jpg|alt=ADP-MV2 to RAW series camera No.2|center|thumb|600x600px|ADP-MV2 to RAW series camera]] | ||
+ | |} | ||
+ | <br /> | ||
+ | ===== ADP-MV2与主板的连接 ===== | ||
+ | 二者使用0.5mm间距*30P的FFC同面线连接,注意接触面方向,ADP-MV2上向外,RK board上向内。 | ||
+ | [[File:RK-ADP-MV2-V2-RAW-MIPI 02.jpg|alt=|center|thumb|800x800px|RK to ADP-MV2 and MV cam]] | ||
+ | <br /> | ||
+ | |||
+ | ==== 老版本ADP-MV2的连接 ==== | ||
+ | |||
+ | ===== MV相机与ADP-MV2的连接 ===== | ||
+ | 二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。 | ||
+ | {| class="wikitable" | ||
+ | !TOP | ||
+ | !BOTTOM | ||
+ | |- | ||
+ | |[[File:ADP-MV2-MV-MIPI 01.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]] | ||
+ | |[[File:ADP-MV2-MV-MIPI 02.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]] | ||
+ | |}<br /> | ||
+ | |||
+ | ===== RAW-MIPI-SC132M与ADP-MV2的连接 ===== | ||
+ | 二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。 | ||
+ | {| class="wikitable" | ||
+ | !TOP | ||
+ | !BOTTOM | ||
+ | |- | ||
+ | |[[File:ADP-MV2-RAW-MIPI 02.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M]] | ||
+ | |[[File:ADP-MV2-RAW-MIPI 01.jpg|alt=|center|thumb|600x600px|ADP-MV2 to RAW-MIPI-SC132M]] | ||
+ | |} | ||
+ | ===== 其他RAW系列摄像头与ADP-MV2的连接 ===== | ||
+ | 二者使用15转22P的FFC同面线连接,注意接触面向外。 | ||
+ | [[File:RAW-MIPI-AR0234-ADP-MV2.jpg|center|thumb|800x800px|ADP-MV2 to RAW series camera]] | ||
+ | <br /> | ||
+ | ===== ADP-MV2与主板的连接 ===== | ||
+ | 二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。 | ||
+ | [[File:RK-ADP-MV2-MV-MIPI 01.jpg|center|thumb|800x800px|RK to ADP-MV2 and MV cam]] | ||
+ | <br /> | ||
+ | |||
+ | ==== V-by-One-HS-KIT摄像机连接示意图 ==== | ||
+ | [[File:VBYONE connection with rk3588.jpg|center|thumb|800x800px|VBYONE connection with rk3588]] | ||
+ | <br /> | ||
+ | === github库介绍 === | ||
+ | https://github.com/veyeimaging/rk35xx_firefly | ||
+ | |||
+ | 包括以下主要内容: | ||
+ | |||
+ | *driver和dts源码 | ||
+ | *i2c通信工具集 | ||
+ | *应用层demo | ||
+ | |||
+ | 此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux系统镜像。 | ||
+ | === 更新ubuntu系统 === | ||
+ | 对于ROC-RK3566-PC和ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。 | ||
+ | |||
+ | 下载[https://github.com/veyeimaging/rk356x_firefly/releases/ https://github.com/veyeimaging/rk35xx_firefly/releases/]中最新的支持MV和RAW系列的镜像。 | ||
+ | |||
+ | 参考Firefly文档([https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html ROC-RK3588S-PC] [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html ROC-RK3566-PC]),烧写系统。 | ||
+ | === 系统状态检测 === | ||
+ | |||
+ | ==== 是否正确识别到了相机 ==== | ||
+ | 完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。 | ||
+ | |||
+ | <code>dmesg | grep mvcam</code> | ||
+ | |||
+ | 应当有类似下面的提示: | ||
+ | |||
+ | <code>mvcam 7-003b: camera is:MV-MIPI-IMX296M</code> | ||
+ | |||
+ | <code>mvcam 7-003b: firmware version: 0x1290133</code> | ||
+ | |||
+ | 可以看到识别到当前的摄像机模组的型号,版本号。 | ||
+ | |||
+ | 在ROC-RK3588S-PC上,摄像机挂载在i2c-7, i2c地址是0x3b。 | ||
+ | |||
+ | 在ROC-RK3566-PC上,摄像机挂载在i2c-4。 | ||
+ | |||
+ | *执行如下命令检查video0设备节点 | ||
+ | |||
+ | <code>ls /dev/video0</code> | ||
+ | |||
+ | 可以看到 | ||
+ | |||
+ | <code>video0</code> | ||
+ | |||
+ | 正确识别摄像头之后,相机被识别为/dev/video0。 | ||
+ | |||
+ | ==== 使用media-ctl查看拓扑结构 ==== | ||
+ | 使用media-ctl指令,可以清晰的展现出当前的拓扑结构。 | ||
+ | |||
+ | <code>media-ctl -p -d /dev/media0</code> | ||
+ | |||
+ | ===== 链接关系 ===== | ||
+ | mv camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0) | ||
+ | |||
+ | 应用程序可以通过/dev/video0节点获取图像。 | ||
+ | |||
+ | ===== mv camera entity信息 ===== | ||
+ | 以MV-MIPI-IMX296M为例: | ||
+ | |||
+ | <code>- entity 63: m00_b_mvcam 7-003b (1 pad, 1 link)</code> | ||
+ | |||
+ | <code> type V4L2 subdev subtype Sensor flags 0</code> | ||
+ | |||
+ | <code> device node name /dev/v4l-subdev2</code> | ||
+ | |||
+ | <code> pad0: Source</code> | ||
+ | |||
+ | <code> [fmt:Y8_1X8/1456x1088@100/6000 field:none]</code> | ||
+ | |||
+ | <code> -> "rockchip-csi2-dphy0":0 [ENABLED]</code> | ||
+ | |||
+ | 可以看到: | ||
+ | |||
+ | * 该Entity完整的名称是: <code>m00_b_mvcam 7-003b</code>。(在ROC-RK3566-PC上该Entity名称是<code>m00_b_mvcam 4-003b</code>) | ||
+ | * 它是一个 V4L2 subdev (Sub-Device) Sensor。 | ||
+ | * 它对应的节点是 <code>/dev/v4l-subdev2</code> ,应用程序(如<code>v4l2-ctl</code>)可以打开它,并进行配置。 | ||
+ | * 它的输出格式是 [<code>fmt:Y8_1X8/1456x1088@100/6000 field:none</code>] ,其中<code>Y8_1X8</code>是一种mbus-code的简写,下一小节会列出支持的mbus-code。 | ||
+ | * 当前分辨率是<code>1456x1088。</code> | ||
+ | * 当前帧间隔是<code>100/6000</code>,即帧率是60。 | ||
+ | |||
+ | 摄像机输出的数据格式,可以通过media-ctl指令修改。 | ||
+ | |||
+ | ==== 相机支持的mbus-code ==== | ||
+ | MV系列和RAW系列相机具备不同的数据格式能力,具体请参考每个型号的相机的数据手册。 | ||
+ | {| class="wikitable" | ||
+ | |+格式对应关系 | ||
+ | !Format on datasheet | ||
+ | !mbus-code for media-ctl | ||
+ | !FourCC pixelformat for v4l2-ctl | ||
+ | |- | ||
+ | |RAW8 | ||
+ | |Y8_1X8 | ||
+ | |GREY | ||
+ | |- | ||
+ | |RAW10 | ||
+ | |Y10_1X10 | ||
+ | |'Y10 ' | ||
+ | |- | ||
+ | |RAW12 | ||
+ | |Y12_1X12 | ||
+ | |'Y12 ' | ||
+ | |- | ||
+ | |UYVY | ||
+ | |UYVY8_2X8 | ||
+ | |UYVY | ||
+ | |} | ||
+ | |||
+ | === raw图片格式说明 === | ||
+ | RK3588的VICAP模块支持两种数据保存格式,Compact和Noncompact RAW。可以通过RKCIF的RKCIF_CMD_SET_CSI_MEMORY_MODE ioctl指令修改模式。默认情况下,输出的是Compact RAW格式。 | ||
+ | [[File:Compact raw and noncompact raw of rk3588 vicap.png|center|thumb|800x800px|Compact raw and noncompact raw of rk3588 VICAP]] | ||
+ | <br /> | ||
+ | ====具有填充位的图片格式(Noncompact RAW)==== | ||
+ | 对于10bit深度、12bit深度的像素数据,总是使用两个字节来存储一个像素。这种存储方式方便软件处理,缺点是空间占用较大。根据数据有效数据保存在高位还是低位,又分为high align和low align两种。 | ||
+ | |||
+ | ===== Noncompact RAW(high align) ===== | ||
+ | 数据保存到高位,用不到的低位以0填充。RK VICAP支持的一种数据格式。 | ||
+ | |||
+ | ===== Noncompact RAW(low align) ===== | ||
+ | 数据保存到低位,用不到的高位以0填充。V4L2标准的'Y10 ' (10-bit Greyscale),'Y12 ' (12-bit Greyscale)格式都是以这种方式存储的。 | ||
+ | |||
+ | 后文提到的pixel_layer_convert转换工具,也是将Compact RAW转换为此种存储方式。方便使用图片播放器打开显示。 | ||
+ | ====紧密排列的图片格式(Compact RAW)==== | ||
+ | 如上图所示,像素和像素之间不会进行空bit位填充。 | ||
+ | |||
+ | ==== 行对齐(line stride) ==== | ||
+ | 为了方便对图像进行快速操作,系统通常为每行数据提供行对齐的buffer大小。RK3588使用256字节对齐。 | ||
+ | |||
+ | line_stride = ALIGN_UP(image_width*bits_per_pixel/8,256) | ||
+ | |||
+ | 比如当图像宽度是1456时: | ||
+ | |||
+ | 8bit depth,line_stride=1536。 | ||
+ | |||
+ | 10bit depth,preferred_stride=2048。 | ||
+ | |||
+ | 12bit depth,preferred_stride=2304。 | ||
+ | |||
+ | ==== 转换工具 ==== | ||
+ | 我们编写了一个小工具:[https://github.com/veyeimaging/pixel_layer_convert pixel_layer_convert],可以很方便的将紧密排列的图片(Compact RAW)转为具有填充位的图片(Noncompact RAW(low align))。 | ||
+ | |||
+ | 比如下面的命令,可以将一个1456宽度的compact raw10 图片转为noncompact raw10。 | ||
+ | |||
+ | <code>./pixel_layer_convert -I R10C -i y10-1456x1088_0001.raw -o y10-1456x1088_0001_new.raw -w 1456</code> | ||
+ | ====raw图片播放器==== | ||
+ | 推荐使用[https://www.offminor.de/ vooya]作为播放器,支持GREY, 和具有填充位的图片格式。 | ||
+ | |||
+ | Y8文件可以用这个播放器: [https://yuv-player-deluxe.software.informer.com/2.6/ YUV Displayer Deluxe]。 | ||
+ | === 应用范例 === | ||
+ | ====配置命令行全局变量 ==== | ||
+ | 根据主板型号,配置I2C_BUS全局变量。 | ||
+ | |||
+ | * ROC-RK3588S-PC | ||
+ | |||
+ | <code>export I2C_BUS=7</code> | ||
+ | |||
+ | * ROC-RK3566-PC | ||
+ | |||
+ | <code>export I2C_BUS=4</code> | ||
+ | |||
+ | 为了后面描述方便,此处根据sensor尺寸,配置全局变量。 | ||
+ | |||
+ | *MV-MIPI-IMX178M | ||
+ | |||
+ | <code>export WIDTH=3088</code> | ||
+ | |||
+ | <code>export HEIGHT=2064</code> | ||
+ | |||
+ | <code>export FPS=22</code> | ||
+ | |||
+ | *MV-MIPI-SC130M | ||
+ | |||
+ | <code>export WIDTH=1280</code> | ||
+ | |||
+ | <code>export HEIGHT=1024</code> | ||
+ | |||
+ | <code>export FPS=108</code> | ||
+ | |||
+ | *MV-MIPI-IMX296M | ||
+ | |||
+ | <code>export WIDTH=1456</code> | ||
+ | |||
+ | <code>export HEIGHT=1088</code> | ||
+ | |||
+ | <code>export FPS=60</code> | ||
+ | |||
+ | *MV-MIPI-IMX287M | ||
+ | |||
+ | <code>export WIDTH=704</code> | ||
+ | |||
+ | <code>export HEIGHT=544</code> | ||
+ | |||
+ | <code>export FPS=319</code> | ||
+ | |||
+ | *MV-MIPI-IMX265M | ||
+ | |||
+ | <code>export WIDTH=2048</code> | ||
+ | |||
+ | <code>export HEIGHT=1544</code> | ||
+ | |||
+ | <code>export FPS=45</code> | ||
+ | |||
+ | *MV-MIPI-IMX264M | ||
+ | |||
+ | <code>export WIDTH=2432</code> | ||
+ | |||
+ | <code>export HEIGHT=2056</code> | ||
+ | |||
+ | <code>export FPS=28</code> | ||
+ | |||
+ | *RAW-MIPI-SC132M | ||
+ | |||
+ | <code>export WIDTH=1024</code> | ||
+ | |||
+ | <code>export HEIGHT=1280</code> | ||
+ | |||
+ | <code>export FPS=120</code> | ||
+ | |||
+ | *RAW-MIPI-IMX462M | ||
+ | |||
+ | <code>export WIDTH=1920</code> | ||
+ | |||
+ | <code>export HEIGHT=1088</code> | ||
+ | |||
+ | <code>export FPS=60</code> | ||
+ | |||
+ | *RAW-MIPI-AR0234M | ||
+ | |||
+ | <code>export WIDTH=1920</code> | ||
+ | |||
+ | <code>export HEIGHT=1200</code> | ||
+ | |||
+ | <code>export FPS=60</code> | ||
+ | |||
+ | *RAW-MIPI-SC535M | ||
+ | |||
+ | <code>export WIDTH=2432</code> | ||
+ | |||
+ | <code>export HEIGHT=2048</code> | ||
+ | |||
+ | <code>export FPS=50</code> | ||
+ | ==== 使用v4l2-ctl配置参数 ==== | ||
+ | <code>$ v4l2-ctl -d /dev/v4l-subdev2 -L</code> | ||
+ | |||
+ | <code>User Controls</code> | ||
+ | |||
+ | <code> trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write</code> | ||
+ | |||
+ | <code> trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write</code> | ||
+ | |||
+ | <code> soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write</code> | ||
+ | |||
+ | <code> frame_rate 0x00981904 (int) : min=1 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write</code> | ||
+ | |||
+ | <code> roi_x 0x00981905 (int) : min=0 max=1376 step=8 default=0 value=0</code> | ||
+ | |||
+ | <code> roi_y 0x00981906 (int) : min=0 max=1024 step=4 default=0 value=0</code> | ||
+ | |||
+ | 可以使用下面的方法设置和获取参数。 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl [ctrl_type]=[val]</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --get-ctrl [ctrl_type]</code> | ||
+ | |||
+ | 以上所有功能,均可使用mv_mipi_i2c.sh实现。 | ||
+ | |||
+ | 需要指出的是,以上参数在取图过程中均不可修改。下面进行逐个说明: | ||
+ | |||
+ | =====配置触发模式===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=[0-2]</small></code> | ||
+ | |||
+ | 0:流模式 | ||
+ | |||
+ | 1:普通触发模式 | ||
+ | |||
+ | 2:快速连续触发模式 | ||
+ | =====配置触发源===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=[0-1]</small></code> | ||
+ | |||
+ | 0: 软触发 | ||
+ | |||
+ | 1: 硬触发 | ||
+ | =====软触发一次===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code> | ||
+ | =====设置帧率===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl frame_rate=[1-max]</code> | ||
+ | |||
+ | 随分辨率的调整,最大帧率会自动更新。 | ||
+ | |||
+ | ===== 设置ROI起始位置 ===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> | ||
+ | |||
+ | ROI其实位置设置之后,需要通过<code>media-ctl</code>命令完成完整的ROI配置。 | ||
+ | |||
+ | 设置roi后,最大帧率会自动调整。请注意,摄像机roi参数需要符合摄像机手册中的要求。 | ||
+ | |||
+ | ==== 使用media-ctl配置图像格式 ==== | ||
+ | 可以通过下面的命令,配置摄像机的数据格式,分辨率,帧率。 | ||
+ | |||
+ | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> | ||
+ | |||
+ | 其中:<code>"m00_b_mvcam 7-003b"</code>指的相机的<code>entity</code>完整名称,<code>Y8_1X8</code>为<code>mbus-code</code>,<code>'"$WIDTH"'x'"$HEIGHT"'</code>指明了分辨率,<code>1/'"$FPS"'</code>指明了帧率。 | ||
+ | |||
+ | 此处的width和height配合v4l2-ctl命令的<code>roi_x</code>和<code>roi_y</code>共同组成了ROI参数。 | ||
+ | |||
+ | 比如,对于MV-MIPI-IMX296M,这个命令经过变量替换后的结果是: | ||
+ | |||
+ | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/1456x1088@1/60 field:none]'</code> | ||
+ | |||
+ | 不仅可以在一个命令中同时配置数据格式,分辨率,帧率,也可以单独修改某一项或某几项。 | ||
+ | |||
+ | ==== 流模式 ==== | ||
+ | |||
+ | ===== 设置数据格式,分辨率,帧率 ===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> | ||
+ | |||
+ | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> | ||
+ | |||
+ | ===== 帧率统计 ===== | ||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> | ||
+ | |||
+ | 或者 | ||
+ | |||
+ | <code>./yavta -c-1 --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0</code> | ||
+ | |||
+ | ===== 保存图片到文件 ===== | ||
+ | |||
+ | * raw8格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw</code> | ||
+ | |||
+ | * raw10格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-${WIDTH}x${HEIGHT}.raw</code> | ||
+ | |||
+ | * raw12格式 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=$WIDTH,height=$HEIGHT,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-${WIDTH}x${HEIGHT}.raw</code> | ||
+ | |||
+ | 图片格式请参考前面章节的描述。 | ||
+ | =====yavta应用范例===== | ||
+ | |||
+ | ====== yavta安装 ====== | ||
+ | <code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code> | ||
+ | |||
+ | <code>cd yavta;make</code> | ||
+ | |||
+ | ====== 保存图片到文件 ====== | ||
+ | 配置完数据格式,分辨率,帧率之后,执行: | ||
+ | |||
+ | <code>./yavta -c1 -Fy8-${WIDTH}x${HEIGHT}.raw --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0</code> | ||
+ | |||
+ | ===== 将相机数据导入OpenCV的范例 ===== | ||
+ | <code>sudo apt install python3-opencv</code> | ||
+ | |||
+ | 详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。 | ||
+ | |||
+ | <code>python3 ./v4l2dev_2_opencv_show_grey.py --width 1456 --height 1088 --fps 60 --i2c 7</code> | ||
+ | |||
+ | 注意需要使用合适的参数来执行上述程序。 | ||
+ | |||
+ | ===== gstreamer应用范例 ===== | ||
+ | 我们提供了几个gstreamer例程,实现了预览功能。详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。 | ||
+ | ==== 触发模式 ==== | ||
+ | |||
+ | ===== 设置数据格式,分辨率,帧率 ===== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code> | ||
+ | |||
+ | <code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code> | ||
+ | =====软触发模式===== | ||
+ | ======设置模式====== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=0</small></code> | ||
+ | ======开始取图====== | ||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw</code> | ||
+ | ======进行软触发操作====== | ||
+ | 在其他的shell终端,可以多次执行下面命令进行多次触发。 | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code> | ||
+ | =====硬触发模式===== | ||
+ | ======设置模式====== | ||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code> | ||
+ | |||
+ | <code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=1</small></code> | ||
+ | |||
+ | 可以使用[[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]脚本进行丰富的触发参数设置。 | ||
+ | ======开始取图====== | ||
+ | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw</code> | ||
+ | ======进行硬触发操作====== | ||
+ | 将合适的触发信号连接到摄像机的trigger引脚并进行触发。 | ||
+ | === i2c脚本使用说明 === | ||
+ | 我们提供了shell脚本来配置参数。 | ||
+ | |||
+ | [[mv_mipi_i2c.sh user guide]] | ||
+ | === 问题反馈 === | ||
+ | 我们致力于为嵌入式平台的图像应用提供更丰富的可能性。因此,我们在嵌入式平台的软件基于开源的原则而进行。 | ||
+ | |||
+ | 如对我们现有软件有任何的问题、建议,欢迎提交到[http://forum.veye.cc/ 论坛:],或者给我们的技术人员发邮件xumm#csoneplus.com。 | ||
+ | === 参考资料 === | ||
+ | |||
+ | *ROC-RK3588S-PC 手册 | ||
+ | |||
+ | https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/ | ||
+ | === 本文修改记录 === | ||
+ | |||
+ | * 2024-07-09 | ||
+ | |||
+ | 支持RAW-MIPI-SC535M。 | ||
+ | |||
+ | * 2024-04-17 | ||
+ | |||
+ | 支持 RK3566。 | ||
+ | |||
+ | * 2024-03-10 | ||
+ | |||
+ | 增加新版本ADP-MV2的硬件连接的图片和说明。 | ||
+ | |||
+ | *2023-08-30 | ||
+ | |||
+ | 增加对RAW-MIPI-IMX462M和RAW-MIPI-AR0234M的支持。 | ||
+ | |||
+ | * 2023-07-31 | ||
+ | |||
+ | 在ubuntu系统下,已经调通V-by-One连接的驱动。 | ||
+ | |||
+ | * 2023-04-12 | ||
+ | |||
+ | 第一个版本。 |
Latest revision as of 09:44, 9 July 2024
怎样在Firefly板子上使用MV系列和RAW系列相机
1 概述
MV系列和RAW系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
本文以Firefly的ROC-RK3588S-PC和ROC-RK3566-PC主板为例,介绍怎样将MV和RAW系列摄像机接入RK3566/3K3568和RK3588S/RK3588系统。
我们提供了Linux(以Ubuntu为例)操作系统下的驱动。
1.1 支持的模组
系列 | 型号 | 状态 |
---|---|---|
MV系列 | MV-MIPI-IMX178M | 完成 |
MV系列 | MV-MIPI-SC130M | 完成 |
MV系列 | MV-MIPI-IMX287M | 完成 |
MV系列 | MV-MIPI-IMX296M | 完成 |
MV系列 | MV-MIPI-IMX265M | 完成 |
MV系列 | MV-MIPI-IMX264M | 完成 |
RAW系列 | RAW-MIPI-SC132M | 完成 |
RAW系列 | RAW-MIPI-IMX462M | 完成 |
RAW系列 | RAW-MIPI-AR0234M | 完成 |
RAW系列 | RAW-MIPI-SC535M | 完成 |
此外,在ubuntu系统下,已经调通V-by-One HS连接模式的驱动。
2 硬件准备及安装
MV系列和RAW系列相机需要使用ADP-MV2转接板才能连接到ROC-RK35xx-PC主板。
2.1 新版本ADP-MV2的连接
2.1.1 MV相机与ADP-MV2的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.1.2 RAW-MIPI-SC132M与ADP-MV2的连接
二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.1.3 其他RAW系列摄像头与ADP-MV2的连接
二者使用0.5mm间距*22P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.1.4 ADP-MV2与主板的连接
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面方向,ADP-MV2上向外,RK board上向内。
2.2 老版本ADP-MV2的连接
2.2.1 MV相机与ADP-MV2的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.2.2 RAW-MIPI-SC132M与ADP-MV2的连接
二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。
TOP | BOTTOM |
---|---|
2.2.3 其他RAW系列摄像头与ADP-MV2的连接
二者使用15转22P的FFC同面线连接,注意接触面向外。
2.2.4 ADP-MV2与主板的连接
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。
2.3 V-by-One-HS-KIT摄像机连接示意图
3 github库介绍
https://github.com/veyeimaging/rk35xx_firefly
包括以下主要内容:
- driver和dts源码
- i2c通信工具集
- 应用层demo
此外,在releases中,提供了编译好的linux系统镜像。
4 更新ubuntu系统
对于ROC-RK3566-PC和ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。
下载https://github.com/veyeimaging/rk35xx_firefly/releases/中最新的支持MV和RAW系列的镜像。
参考Firefly文档(ROC-RK3588S-PC ROC-RK3566-PC),烧写系统。
5 系统状态检测
5.1 是否正确识别到了相机
完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。
dmesg | grep mvcam
应当有类似下面的提示:
mvcam 7-003b: camera is:MV-MIPI-IMX296M
mvcam 7-003b: firmware version: 0x1290133
可以看到识别到当前的摄像机模组的型号,版本号。
在ROC-RK3588S-PC上,摄像机挂载在i2c-7, i2c地址是0x3b。
在ROC-RK3566-PC上,摄像机挂载在i2c-4。
- 执行如下命令检查video0设备节点
ls /dev/video0
可以看到
video0
正确识别摄像头之后,相机被识别为/dev/video0。
5.2 使用media-ctl查看拓扑结构
使用media-ctl指令,可以清晰的展现出当前的拓扑结构。
media-ctl -p -d /dev/media0
5.2.1 链接关系
mv camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0)
应用程序可以通过/dev/video0节点获取图像。
5.2.2 mv camera entity信息
以MV-MIPI-IMX296M为例:
- entity 63: m00_b_mvcam 7-003b (1 pad, 1 link)
type V4L2 subdev subtype Sensor flags 0
device node name /dev/v4l-subdev2
pad0: Source
[fmt:Y8_1X8/1456x1088@100/6000 field:none]
-> "rockchip-csi2-dphy0":0 [ENABLED]
可以看到:
- 该Entity完整的名称是:
m00_b_mvcam 7-003b
。(在ROC-RK3566-PC上该Entity名称是m00_b_mvcam 4-003b
) - 它是一个 V4L2 subdev (Sub-Device) Sensor。
- 它对应的节点是
/dev/v4l-subdev2
,应用程序(如v4l2-ctl
)可以打开它,并进行配置。 - 它的输出格式是 [
fmt:Y8_1X8/1456x1088@100/6000 field:none
] ,其中Y8_1X8
是一种mbus-code的简写,下一小节会列出支持的mbus-code。 - 当前分辨率是
1456x1088。
- 当前帧间隔是
100/6000
,即帧率是60。
摄像机输出的数据格式,可以通过media-ctl指令修改。
5.3 相机支持的mbus-code
MV系列和RAW系列相机具备不同的数据格式能力,具体请参考每个型号的相机的数据手册。
Format on datasheet | mbus-code for media-ctl | FourCC pixelformat for v4l2-ctl |
---|---|---|
RAW8 | Y8_1X8 | GREY |
RAW10 | Y10_1X10 | 'Y10 ' |
RAW12 | Y12_1X12 | 'Y12 ' |
UYVY | UYVY8_2X8 | UYVY |
6 raw图片格式说明
RK3588的VICAP模块支持两种数据保存格式,Compact和Noncompact RAW。可以通过RKCIF的RKCIF_CMD_SET_CSI_MEMORY_MODE ioctl指令修改模式。默认情况下,输出的是Compact RAW格式。
6.1 具有填充位的图片格式(Noncompact RAW)
对于10bit深度、12bit深度的像素数据,总是使用两个字节来存储一个像素。这种存储方式方便软件处理,缺点是空间占用较大。根据数据有效数据保存在高位还是低位,又分为high align和low align两种。
6.1.1 Noncompact RAW(high align)
数据保存到高位,用不到的低位以0填充。RK VICAP支持的一种数据格式。
6.1.2 Noncompact RAW(low align)
数据保存到低位,用不到的高位以0填充。V4L2标准的'Y10 ' (10-bit Greyscale),'Y12 ' (12-bit Greyscale)格式都是以这种方式存储的。
后文提到的pixel_layer_convert转换工具,也是将Compact RAW转换为此种存储方式。方便使用图片播放器打开显示。
6.2 紧密排列的图片格式(Compact RAW)
如上图所示,像素和像素之间不会进行空bit位填充。
6.3 行对齐(line stride)
为了方便对图像进行快速操作,系统通常为每行数据提供行对齐的buffer大小。RK3588使用256字节对齐。
line_stride = ALIGN_UP(image_width*bits_per_pixel/8,256)
比如当图像宽度是1456时:
8bit depth,line_stride=1536。
10bit depth,preferred_stride=2048。
12bit depth,preferred_stride=2304。
6.4 转换工具
我们编写了一个小工具:pixel_layer_convert,可以很方便的将紧密排列的图片(Compact RAW)转为具有填充位的图片(Noncompact RAW(low align))。
比如下面的命令,可以将一个1456宽度的compact raw10 图片转为noncompact raw10。
./pixel_layer_convert -I R10C -i y10-1456x1088_0001.raw -o y10-1456x1088_0001_new.raw -w 1456
6.5 raw图片播放器
推荐使用vooya作为播放器,支持GREY, 和具有填充位的图片格式。
Y8文件可以用这个播放器: YUV Displayer Deluxe。
7 应用范例
7.1 配置命令行全局变量
根据主板型号,配置I2C_BUS全局变量。
- ROC-RK3588S-PC
export I2C_BUS=7
- ROC-RK3566-PC
export I2C_BUS=4
为了后面描述方便,此处根据sensor尺寸,配置全局变量。
- MV-MIPI-IMX178M
export WIDTH=3088
export HEIGHT=2064
export FPS=22
- MV-MIPI-SC130M
export WIDTH=1280
export HEIGHT=1024
export FPS=108
- MV-MIPI-IMX296M
export WIDTH=1456
export HEIGHT=1088
export FPS=60
- MV-MIPI-IMX287M
export WIDTH=704
export HEIGHT=544
export FPS=319
- MV-MIPI-IMX265M
export WIDTH=2048
export HEIGHT=1544
export FPS=45
- MV-MIPI-IMX264M
export WIDTH=2432
export HEIGHT=2056
export FPS=28
- RAW-MIPI-SC132M
export WIDTH=1024
export HEIGHT=1280
export FPS=120
- RAW-MIPI-IMX462M
export WIDTH=1920
export HEIGHT=1088
export FPS=60
- RAW-MIPI-AR0234M
export WIDTH=1920
export HEIGHT=1200
export FPS=60
- RAW-MIPI-SC535M
export WIDTH=2432
export HEIGHT=2048
export FPS=50
7.2 使用v4l2-ctl配置参数
$ v4l2-ctl -d /dev/v4l-subdev2 -L
User Controls
trigger_mode 0x00981901 (int) : min=0 max=2 step=1 default=0 value=0 flags=volatile, execute-on-write
trigger_src 0x00981902 (int) : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write
soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write
frame_rate 0x00981904 (int) : min=1 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write
roi_x 0x00981905 (int) : min=0 max=1376 step=8 default=0 value=0
roi_y 0x00981906 (int) : min=0 max=1024 step=4 default=0 value=0
可以使用下面的方法设置和获取参数。
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl [ctrl_type]=[val]
v4l2-ctl -d /dev/v4l-subdev2 --get-ctrl [ctrl_type]
以上所有功能,均可使用mv_mipi_i2c.sh实现。
需要指出的是,以上参数在取图过程中均不可修改。下面进行逐个说明:
7.2.1 配置触发模式
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=[0-2]
0:流模式
1:普通触发模式
2:快速连续触发模式
7.2.2 配置触发源
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=[0-1]
0: 软触发
1: 硬触发
7.2.3 软触发一次
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl soft_trgone=1
7.2.4 设置帧率
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl frame_rate=[1-max]
随分辨率的调整,最大帧率会自动更新。
7.2.5 设置ROI起始位置
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0
ROI其实位置设置之后,需要通过media-ctl
命令完成完整的ROI配置。
设置roi后,最大帧率会自动调整。请注意,摄像机roi参数需要符合摄像机手册中的要求。
7.3 使用media-ctl配置图像格式
可以通过下面的命令,配置摄像机的数据格式,分辨率,帧率。
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
其中:"m00_b_mvcam 7-003b"
指的相机的entity
完整名称,Y8_1X8
为mbus-code
,'"$WIDTH"'x'"$HEIGHT"'
指明了分辨率,1/'"$FPS"'
指明了帧率。
此处的width和height配合v4l2-ctl命令的roi_x
和roi_y
共同组成了ROI参数。
比如,对于MV-MIPI-IMX296M,这个命令经过变量替换后的结果是:
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam 7-003b":0[fmt:Y8_1X8/1456x1088@1/60 field:none]'
不仅可以在一个命令中同时配置数据格式,分辨率,帧率,也可以单独修改某一项或某几项。
7.4 流模式
7.4.1 设置数据格式,分辨率,帧率
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
7.4.2 帧率统计
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null
或者
./yavta -c-1 --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0
7.4.3 保存图片到文件
- raw8格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw
- raw10格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat='Y10 ' --stream-mmap --stream-count=1 --stream-to=y10-${WIDTH}x${HEIGHT}.raw
- raw12格式
v4l2-ctl -d /dev/video0 --set-fmt-video=$WIDTH,height=$HEIGHT,pixelformat='Y12 ' --stream-mmap --stream-count=1 --stream-to=y12-${WIDTH}x${HEIGHT}.raw
图片格式请参考前面章节的描述。
7.4.4 yavta应用范例
7.4.4.1 yavta安装
git clone git://git.ideasonboard.org/yavta.git
cd yavta;make
7.4.4.2 保存图片到文件
配置完数据格式,分辨率,帧率之后,执行:
./yavta -c1 -Fy8-${WIDTH}x${HEIGHT}.raw --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0
7.4.5 将相机数据导入OpenCV的范例
sudo apt install python3-opencv
详见github上的samples目录。
python3 ./v4l2dev_2_opencv_show_grey.py --width 1456 --height 1088 --fps 60 --i2c 7
注意需要使用合适的参数来执行上述程序。
7.4.6 gstreamer应用范例
我们提供了几个gstreamer例程,实现了预览功能。详见github上的samples目录。
7.5 触发模式
7.5.1 设置数据格式,分辨率,帧率
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0
media-ctl -d /dev/media0 --set-v4l2 '"m00_b_mvcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'
7.5.2 软触发模式
7.5.2.1 设置模式
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=1
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=0
7.5.2.2 开始取图
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw
7.5.2.3 进行软触发操作
在其他的shell终端,可以多次执行下面命令进行多次触发。
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl soft_trgone=1
7.5.3 硬触发模式
7.5.3.1 设置模式
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_mode=1
v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl trigger_src=1
可以使用mv_mipi_i2c.sh脚本进行丰富的触发参数设置。
7.5.3.2 开始取图
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw
7.5.3.3 进行硬触发操作
将合适的触发信号连接到摄像机的trigger引脚并进行触发。
8 i2c脚本使用说明
我们提供了shell脚本来配置参数。
9 问题反馈
我们致力于为嵌入式平台的图像应用提供更丰富的可能性。因此,我们在嵌入式平台的软件基于开源的原则而进行。
如对我们现有软件有任何的问题、建议,欢迎提交到论坛:,或者给我们的技术人员发邮件xumm#csoneplus.com。
10 参考资料
- ROC-RK3588S-PC 手册
https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/
11 本文修改记录
- 2024-07-09
支持RAW-MIPI-SC535M。
- 2024-04-17
支持 RK3566。
- 2024-03-10
增加新版本ADP-MV2的硬件连接的图片和说明。
- 2023-08-30
增加对RAW-MIPI-IMX462M和RAW-MIPI-AR0234M的支持。
- 2023-07-31
在ubuntu系统下,已经调通V-by-One连接的驱动。
- 2023-04-12
第一个版本。