Difference between revisions of "MV Camera Application Development Guide on Rochchip/zh"
| Line 20: | Line 20: | ||
<br /> | <br /> | ||
| − | === 系统状态检测 === | + | ===系统状态检测=== |
| − | ==== 是否正确识别到了相机 ==== | + | ====是否正确识别到了相机==== |
完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。 | 完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。 | ||
| Line 39: | Line 39: | ||
在ROC-RK3566-PC和ROC-RK3576-PC上,摄像机挂载在i2c-4。 | 在ROC-RK3566-PC和ROC-RK3576-PC上,摄像机挂载在i2c-4。 | ||
| − | * 执行如下命令检查video0设备节点 | + | *执行如下命令检查video0设备节点 |
<code>ls /dev/video0</code> | <code>ls /dev/video0</code> | ||
| Line 49: | Line 49: | ||
正确识别摄像头之后,相机被识别为/dev/video0。 | 正确识别摄像头之后,相机被识别为/dev/video0。 | ||
| − | === 设备检测并配置环境变量 === | + | ===设备检测并配置环境变量=== |
在[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/mv_tools_rockchip 这里],我们提供了两个脚本,可以自动检索相机的一些信息。 | 在[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/mv_tools_rockchip 这里],我们提供了两个脚本,可以自动检索相机的一些信息。 | ||
| − | ==== probe_camera_info-rk.sh ==== | + | ====probe_camera_info-rk.sh==== |
该脚本用于探测已连接并成功注册的摄像头设备,检索设备对应的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备名称等底层信息。 | 该脚本用于探测已连接并成功注册的摄像头设备,检索设备对应的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备名称等底层信息。 | ||
| Line 81: | Line 81: | ||
<code>]</code> | <code>]</code> | ||
| + | {}内是一个摄像头的信息,如果主板支持多个摄像头模组,则会出现多组{}包含的内容。 | ||
| + | 摄像头信息解释如下: | ||
| + | {| class="wikitable" | ||
| + | |+摄像头信息 | ||
| + | !代称 | ||
| + | !名称 | ||
| + | !作用 | ||
| + | !何处使用 | ||
| + | |- | ||
| + | |media_node | ||
| + | |媒体设备节点 (Media device node) | ||
| + | |用于访问 media-controller 框架中的设备 | ||
| + | |由media-ctl命令配置分辨率和格式时使用 | ||
| + | |- | ||
| + | |video_node | ||
| + | |视频设备节点(Video capture device node) | ||
| + | |典型 V4L2 视频设备 | ||
| + | |v4l2-ctl或者客户开发的程序,获取图像时使用 | ||
| + | |- | ||
| + | |video_subnode | ||
| + | |视频子设备节点(V4L2 sub-device node) | ||
| + | |配置摄像头的部分参数时使用 | ||
| + | |v4l2-ctl命令使用 | ||
| + | |- | ||
| + | |media_entity_name | ||
| + | |设备名称(Media entity name) | ||
| + | |描述设备的名称,例如 <code>"m00_b_gxcam 7-003b"</code> | ||
| + | |由media-ctl命令配置分辨率和格式时使用 | ||
| + | |- | ||
| + | |i2c_bus | ||
| + | |I²C 总线号 | ||
| + | |表示设备连接的 I²C 总线编号 | ||
| + | |对摄像头进行参数配置的底层通信信道,gx_mipi_i2c.sh脚本使用 | ||
| + | |} | ||
| + | 后文中使用的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备名称,均可参考此探测脚本得到的json文件中的信息进行替换。 | ||
| + | ==== mv_probe.sh ==== | ||
| + | 使用<code>mv_probe.sh</code>脚本,可以将某一个相机对应的I²C总线编号、相机型号、宽、高、帧率等信息配置到环境变量中。 | ||
| + | 如此,则方便后续使用media-ctl配置格式使用起来更方便。 | ||
| + | 使用方法是: | ||
| + | <code>source ./mv_probe.sh</code>一个典型的输出如下: | ||
| + | <code>$ source ./mv_probe.sh</code> | ||
| + | <code>The mvcam driver is loaded on i2c-10, but the camera is not detected!</code> | ||
| + | |||
| + | <code>Found veye_mvcam camera on i2c-11.</code> | ||
| + | |||
| + | <code>Setenv CAMERAMODEL = RAW-MIPI-SC535M</code> | ||
| + | |||
| + | <code>Setenv FPS = 49</code> | ||
| + | |||
| + | <code>Setenv WIDTH = 2432</code> | ||
| + | |||
| + | <code>Setenv HEIGHT = 2048</code> | ||
| + | |||
| + | 可以通过 <code>echo $CAMERAMODEL</code>来验证环境变量的输出结果。注意,此环境变量只对当前会话有效。注意:此脚本需要mvcam的驱动版本大于等于1.1.06才可以支持。 | ||
| + | |||
| + | 如你使用的驱动版本小于1.1.06,或者你希望使用不同于当前值的宽、高、帧率。请参考相机模组的手册,手动配置如下<code>WIDTH HEIGHT FPS</code>环境变量,否则可能导致后面的程序运行不正常。如: | ||
| + | |||
| + | <code>export WIDTH=2432</code> | ||
| + | |||
| + | <code>export HEIGHT=2048</code> | ||
| + | |||
| + | <code>export FPS=50</code> | ||
| + | |||
| + | ==== 配置命令行全局变量 ==== | ||
| + | 根据主板型号,配置I2C_BUS全局变量。 | ||
| + | |||
| + | * ROC-RK3588S-PC | ||
| + | |||
| + | <code>export I2C_BUS=7</code> | ||
| + | |||
| + | * ROC-RK3566-PC and ROC-RK3576-PC | ||
| + | |||
| + | export I2C_BUS=4 | ||
| + | |||
| + | ==== 使用media-ctl查看拓扑结构 ==== | ||
| + | 使用media-ctl指令,可以清晰的展现出当前的拓扑结构。 | ||
| + | |||
| + | media-ctl -p -d /dev/media0 | ||
| + | |||
| + | ===== 链接关系 ===== | ||
| + | mv camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0) | ||
| + | |||
| + | 应用程序可以通过/dev/video0节点获取图像。 | ||
Revision as of 09:47, 25 December 2025
English
MV系列摄像头模组在Rockchip平台的应用层使用和开发指南
1 概述
本文档适用于驱动已正确安装、硬件连接无误,且相机已经正确识别的场景。
本文主要达成一下目的:
- 查询已接入的 MV 系列摄像头的设备信息;
- 完成摄像头工作模式的设置和准备;
- 介绍几种预览、抓图的方法;
- 介绍参数配置方法;
- 对客户二次开发进行指引。
对于rockchip平台,无论使用哪种方法调用相机,均需完成设备探测和media-ctl配置格式的步骤,才可以进行后续操作。所以下面首先介绍设备探测和media-ctl配置。
注意,veye_viewer客户端已经内置了设备探测和media-ctl配置功能。因此,在完成驱动安装和硬件连接确认之后,可以直接参考后文所述veye_viewer客户端章节预览相机图像。
2 系统状态检测
2.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和ROC-RK3576-PC上,摄像机挂载在i2c-4。
- 执行如下命令检查video0设备节点
ls /dev/video0
可以看到
video0
正确识别摄像头之后,相机被识别为/dev/video0。
3 设备检测并配置环境变量
在这里,我们提供了两个脚本,可以自动检索相机的一些信息。
3.1 probe_camera_info-rk.sh
该脚本用于探测已连接并成功注册的摄像头设备,检索设备对应的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备名称等底层信息。
执行后,将在当前目录生成 auto_camera_index.json 文件并在文件中记录检索到的信息。
下面是一个例子:
$ ./probe_camera_info-rk.sh
cat auto_camera_index.json
[
{
"media_node": "/dev/media0",
"video_node": "/dev/video0",
"video_subnode": "/dev/v4l-subdev2",
"media_entity_name": "m00_b_gxcam 7-003b",
"i2c_bus": "7"
}
]
{}内是一个摄像头的信息,如果主板支持多个摄像头模组,则会出现多组{}包含的内容。
摄像头信息解释如下:
| 代称 | 名称 | 作用 | 何处使用 |
|---|---|---|---|
| media_node | 媒体设备节点 (Media device node) | 用于访问 media-controller 框架中的设备 | 由media-ctl命令配置分辨率和格式时使用 |
| video_node | 视频设备节点(Video capture device node) | 典型 V4L2 视频设备 | v4l2-ctl或者客户开发的程序,获取图像时使用 |
| video_subnode | 视频子设备节点(V4L2 sub-device node) | 配置摄像头的部分参数时使用 | v4l2-ctl命令使用 |
| media_entity_name | 设备名称(Media entity name) | 描述设备的名称,例如 "m00_b_gxcam 7-003b"
|
由media-ctl命令配置分辨率和格式时使用 |
| i2c_bus | I²C 总线号 | 表示设备连接的 I²C 总线编号 | 对摄像头进行参数配置的底层通信信道,gx_mipi_i2c.sh脚本使用 |
后文中使用的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备名称,均可参考此探测脚本得到的json文件中的信息进行替换。
3.2 mv_probe.sh
使用mv_probe.sh脚本,可以将某一个相机对应的I²C总线编号、相机型号、宽、高、帧率等信息配置到环境变量中。
如此,则方便后续使用media-ctl配置格式使用起来更方便。
使用方法是:
source ./mv_probe.sh一个典型的输出如下:
$ source ./mv_probe.sh
The mvcam driver is loaded on i2c-10, but the camera is not detected!
Found veye_mvcam camera on i2c-11.
Setenv CAMERAMODEL = RAW-MIPI-SC535M
Setenv FPS = 49
Setenv WIDTH = 2432
Setenv HEIGHT = 2048
可以通过 echo $CAMERAMODEL来验证环境变量的输出结果。注意,此环境变量只对当前会话有效。注意:此脚本需要mvcam的驱动版本大于等于1.1.06才可以支持。
如你使用的驱动版本小于1.1.06,或者你希望使用不同于当前值的宽、高、帧率。请参考相机模组的手册,手动配置如下WIDTH HEIGHT FPS环境变量,否则可能导致后面的程序运行不正常。如:
export WIDTH=2432
export HEIGHT=2048
export FPS=50
3.3 配置命令行全局变量
根据主板型号,配置I2C_BUS全局变量。
- ROC-RK3588S-PC
export I2C_BUS=7
- ROC-RK3566-PC and ROC-RK3576-PC
export I2C_BUS=4
3.4 使用media-ctl查看拓扑结构
使用media-ctl指令,可以清晰的展现出当前的拓扑结构。
media-ctl -p -d /dev/media0
3.4.1 链接关系
mv camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0)
应用程序可以通过/dev/video0节点获取图像。