Difference between revisions of "MV Camera on Firfly Boards/zh"
Line 77: | Line 77: | ||
此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux系统镜像。 | 此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux系统镜像。 | ||
=== 更新ubuntu系统 === | === 更新ubuntu系统 === | ||
+ | 对于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/zh_CN/ROC-RK3588S-PC/upgrade_bootmode.html 文档],烧写系统。 | ||
=== 系统状态检测 === | === 系统状态检测 === | ||
+ | |||
+ | ==== 是否正确识别到了相机 ==== | ||
+ | 完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。 | ||
+ | |||
+ | <code>dmesg | grep mvcam</code> | ||
+ | |||
+ | 应当有类似下面的提示: | ||
+ | |||
+ | <code>mvcam 7-003b: camera is:MV-MIPI-IMX296M</code> | ||
+ | |||
+ | <code>mvcam 7-003b: firmware version: 0x1290133</code> | ||
+ | |||
+ | 可以看到识别到当前的摄像机模组的型号,版本号。摄像机挂载在i2c-7, i2c地址是0x3b。 | ||
+ | |||
+ | *执行如下命令检查video0设备节点 | ||
+ | |||
+ | <code>ls /dev/video0</code> | ||
+ | |||
+ | 可以看到 | ||
+ | |||
+ | <code>video0</code> | ||
+ | |||
+ | 正确识别摄像头之后,MIPI-CSI2接口的摄像头识别为/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>。 | ||
+ | * 它是一个 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 | ||
+ | |} | ||
=== 应用范例 === | === 应用范例 === |
Revision as of 10:58, 12 April 2023
怎样在Firefly板子上使用MV系列和RAW系列相机
1 概述
MV系列和RAW系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
本文以Firefly的ROC-RK3588S-PC主板为例,介绍怎样将MV和RAW系列摄像机接入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 | 完成 |
2 硬件准备及安装
MV系列和RAW系列相机需要使用ADP-MV2转接板才能连接到ROC-RK35xx-PC主板。
2.1 MV相机与ADP-MV2的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
【TODO:加图】
2.2 RAW相机与ADP-MV2的连接
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
【TODO:加图】
2.3 ADP-MV2与主板的连接
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。
【TODO:加图】
2.4 整体连接图
【TODO:加图】
3 github库介绍
https://github.com/veyeimaging/rk35xx_firefly
包括以下主要内容:
- driver和dts源码
- i2c通信工具集
- 应用层demo
此外,在releases中,提供了编译好的linux系统镜像。
4 更新ubuntu系统
对于ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。
下载https://github.com/veyeimaging/rk35xx_firefly/releases/中最新的支持MV和RAW系列的镜像。
参考Firefly文档,烧写系统。
5 系统状态检测
5.1 是否正确识别到了相机
完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。
dmesg | grep mvcam
应当有类似下面的提示:
mvcam 7-003b: camera is:MV-MIPI-IMX296M
mvcam 7-003b: firmware version: 0x1290133
可以看到识别到当前的摄像机模组的型号,版本号。摄像机挂载在i2c-7, i2c地址是0x3b。
- 执行如下命令检查video0设备节点
ls /dev/video0
可以看到
video0
正确识别摄像头之后,MIPI-CSI2接口的摄像头识别为/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
。 - 它是一个 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 |