Difference between revisions of "Mv series camera appnotes 4 rpi/zh"

From wiki_veye
Jump to navigation Jump to search
Line 75: Line 75:
  
 
=== V4L2模式用法 ===
 
=== V4L2模式用法 ===
 +
====下载驱动包====
 +
<code>git clone https://github.com/veyeimaging/raspberrypi_v4l2<nowiki/>.git</code>
 +
====安装驱动====
 +
<code>cd raspberrypi_v4l2/release/</code>
 +
 +
<code>chmod +x *</code>
 +
 +
<code>sudo ./install_driver.sh veye_mvcam</code>
 +
 +
然后重启树莓派。
 +
 +
备注:如果提示无法找到对应版本的驱动,说明我们没有提供对应您的piOS版本编译后的驱动程序。请尝试从源码编译。
 +
====卸载驱动====
 +
如需更换为Legacy模式,或者想要更换成其他摄像头模组型号的驱动,必须要先卸载现在的驱动。
 +
 +
<code>sudo ./uninstall_driver.sh veye_mvcam</code>
 +
===摄像头状态验证===
 +
以VEYE_MIPI_IMX178M为例:
 +
 +
<code>dmesg | grep mvcam</code>
 +
 +
可以看到linux启动阶段probe到的相机型号和版本号:
 +
 +
<code>camera is: VEYE_MIPI_IMX178M</code>
 +
 +
<code>firmware version: 0x1080102</code>
 +
 +
并且/dev/video0 节点存在,证明摄像头状态正常。
 
<br />
 
<br />
 +
===v4l2-ctl 应用范例===
 +
====安装v4l2-utils====
 +
<code>sudo apt-get install v4l-utils</code>
 +
====v4l2-ctl例程====
 +
 +
===== v4l2-ctl配置参数 =====
 +
 +
* 列出相机支持的数据格式:
 +
 +
<code>v4l2-ctl --list-formats-ext</code>
 +
 +
<small><code>ioctl: VIDIOC_ENUM_FMT</code></small>
 +
 +
<small><code>        Type: Video Capture</code></small>
 +
 +
<small><code>        [0]: 'GREY' (8-bit Greyscale)</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
<small><code>        [1]: 'Y10P' (10-bit Greyscale (MIPI Packed))</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
<small><code>        [2]: 'Y10 ' (10-bit Greyscale)</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
<small><code>        [3]: 'Y12P' (12-bit Greyscale (MIPI Packed))</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
<small><code>        [4]: 'Y12 ' (12-bit Greyscale)</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
<small><code>        [5]: 'UYVY' (UYVY 4:2:2)</code></small>
 +
 +
<small><code>                Size: Discrete 3088x2064</code></small>
 +
 +
需要特别说明的是,MV系列相机提供的UYVY模式仅作方便调试使用。
 +
 +
* 列出相机支持的可配置参数:
 +
 +
<code>v4l2-ctl -L</code>
 +
 +
<code><small>User Controls</small></code>
 +
 +
<code><small>                horizontal_flip 0x00980914 (bool)   : default=0 value=0</small></code>
 +
 +
<code><small>                  vertical_flip 0x00980915 (bool)   : default=0 value=0</small></code>
 +
 +
<code><small>                   trigger_mode 0x00981901 (int)    : min=0 max=2 step=1 default=0 value=0 flags=volatile</small></code>
 +
 +
<code><small>                    trigger_src 0x00981902 (int)    : min=0 max=1 step=1 default=1 value=1 flags=volatile</small></code>
 +
 +
<code><small>                    soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write</small></code>
 +
 +
<code><small>                     frame_rate 0x00981904 (int)    : min=0 max=22 step=1 default=22 value=22 flags=volatile</small></code>
 +
 +
*
 +
 +
v4l2-ctl抓拍图片
 +
 +
*抓拍一张UYVY原始数据图片 (1080p mode)
 +
 +
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv</code>
 +
 +
*抓拍10张UYVY原始数据图片 (1080p mode)
 +
 +
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=10 --stream-to=uyvy-1920x1080_stream.yuv</code>
 +
===yavta 应用范例===
 +
====下载并编译yavta====
 +
<code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code>
 +
 +
<code>cd yavta;make</code>
 +
====yavta 例程====
 +
<code>./yavta -c8 -Fuyvy_1920X1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0</code>
 +
 +
PS. UYVY文件可以用这个播放器: [https://yuv-player-deluxe.software.informer.com/2.6/ YUV Displayer Deluxe].
 
=== Legacy模式用法 ===
 
=== Legacy模式用法 ===
  
  
=== 参数配置方法 ===
+
=== i2c参数配置方法 ===
 
<br />
 
<br />
 
+
===从源代码编译驱动方法===
 +
请参考:[[Build drivers from source for rpi/zh|树莓派平台上摄像头驱动源码编译指南]]。
 
=== 参考资料 ===
 
=== 参考资料 ===
  

Revision as of 14:59, 12 April 2022

English

本文依然在撰写中,资料随时可能更改和调整。

1 概述

MV系列MIPI相机是为工业领域的AI应用推出的专用相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。

1.1 支持的模组

系列 型号 状态
MV系列 MV-MIPI-IMX178M 完成

2 硬件准备及安装

MV系列相机需要ADP-MV1配合即可接入树莓派。下面以MV-MIPI-IMX178M为例,介绍硬件的安装方法。

2.1 MV-MIPI-IMX178M与ADP-MV1的连接

二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。

(插入图片,注意FFC排线规格及方向)

2.2 ADP-MV1与树莓派的连接

2.2.1 供电

ADP-MV1需要独立的5V供电,可以使用杜邦线直接从树莓派主板取电。

(插入图片,突出5V供电杜邦线线序)

2.2.2 树莓派Model B和Model B+

二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。

(插入图片,注意接触面方向)

2.2.3 树莓派Zero,Zero W和Computer Module

二者使用15P转22P的FFC同面线连接,注意接触面安装方向。

(插入图片,注意接触面方向)

3 piOS的配置

具体安装树莓派系统方法请参考官方文档,详见:Install raspberrypi guide

接通电源后,树莓派系统启动,初始树莓派系统中Camera 和 I2C都处于未启用状态。开机后我们需要将其手动打开,执行命令

sudo raspi-config

raspi-config bullseye

进入Interface Options,启用I2C,然后重启树莓派。

建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。

4 Legacy模式和V4L2模式介绍

4.1 Legacy模式

传统模式,依赖博通的GPU进行图像处理。传统的raspicam软件集即采用此模式。此模式缺点是封闭,GPU端是闭源的,无法自由接入sensor。树莓派组织已经全面转向libcamera camera stack。

但是此模式依然有存在的价值:

  1. 更多的使用GPU资源,降低CPU负载。这点对于性能比较差的早期版本树莓派很有用。
  2. libcamera现在还缺乏一些功能支持。
  3. 可以简单直接的获取图像数据到应用层,无需驱动层的支持。这点对于不依赖树莓派做isp的相机尤其有用。

有两种方法可以使用Legacy模式:

  1. 使用Legacy版本的piOS。
  2. 对于bullseye版本piOS,raspi-config中打开Legacy Camera选项。

4.2 libcamera以及V4L2模式

现在piOS已全面切换为libcamera-stack模式。这个模式有很多的优点,在树莓派网站上有详细的介绍

libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了V4L2模式,而不是使用libcamera-stack。

与libcamera-stack相同,我们的V4L2模式,也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。

5 V4L2模式用法

5.1 下载驱动包

git clone https://github.com/veyeimaging/raspberrypi_v4l2.git

5.2 安装驱动

cd raspberrypi_v4l2/release/

chmod +x *

sudo ./install_driver.sh veye_mvcam

然后重启树莓派。

备注:如果提示无法找到对应版本的驱动,说明我们没有提供对应您的piOS版本编译后的驱动程序。请尝试从源码编译。

5.3 卸载驱动

如需更换为Legacy模式,或者想要更换成其他摄像头模组型号的驱动,必须要先卸载现在的驱动。

sudo ./uninstall_driver.sh veye_mvcam

6 摄像头状态验证

以VEYE_MIPI_IMX178M为例:

dmesg | grep mvcam

可以看到linux启动阶段probe到的相机型号和版本号:

camera is: VEYE_MIPI_IMX178M

firmware version: 0x1080102

并且/dev/video0 节点存在,证明摄像头状态正常。

7 v4l2-ctl 应用范例

7.1 安装v4l2-utils

sudo apt-get install v4l-utils

7.2 v4l2-ctl例程

7.2.1 v4l2-ctl配置参数
  • 列出相机支持的数据格式:

v4l2-ctl --list-formats-ext

ioctl: VIDIOC_ENUM_FMT

        Type: Video Capture

        [0]: 'GREY' (8-bit Greyscale)

                Size: Discrete 3088x2064

        [1]: 'Y10P' (10-bit Greyscale (MIPI Packed))

                Size: Discrete 3088x2064

        [2]: 'Y10 ' (10-bit Greyscale)

                Size: Discrete 3088x2064

        [3]: 'Y12P' (12-bit Greyscale (MIPI Packed))

                Size: Discrete 3088x2064

        [4]: 'Y12 ' (12-bit Greyscale)

                Size: Discrete 3088x2064

        [5]: 'UYVY' (UYVY 4:2:2)

                Size: Discrete 3088x2064

需要特别说明的是,MV系列相机提供的UYVY模式仅作方便调试使用。

  • 列出相机支持的可配置参数:

v4l2-ctl -L

User Controls

                horizontal_flip 0x00980914 (bool)   : default=0 value=0

                  vertical_flip 0x00980915 (bool)   : default=0 value=0

                   trigger_mode 0x00981901 (int)    : min=0 max=2 step=1 default=0 value=0 flags=volatile

                    trigger_src 0x00981902 (int)    : min=0 max=1 step=1 default=1 value=1 flags=volatile

                    soft_trgone 0x00981903 (button) : flags=write-only, execute-on-write

                     frame_rate 0x00981904 (int)    : min=0 max=22 step=1 default=22 value=22 flags=volatile

v4l2-ctl抓拍图片

  • 抓拍一张UYVY原始数据图片 (1080p mode)

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv

  • 抓拍10张UYVY原始数据图片 (1080p mode)

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=10 --stream-to=uyvy-1920x1080_stream.yuv

8 yavta 应用范例

8.1 下载并编译yavta

git clone git://git.ideasonboard.org/yavta.git

cd yavta;make

8.2 yavta 例程

./yavta -c8 -Fuyvy_1920X1080.yuv --skip 0 -f UYVY -s 1920x1080 /dev/video0

PS. UYVY文件可以用这个播放器: YUV Displayer Deluxe.

9 Legacy模式用法

10 i2c参数配置方法


11 从源代码编译驱动方法

请参考:树莓派平台上摄像头驱动源码编译指南

12 参考资料

13 问题反馈

我们致力于为嵌入式平台的图像应用提供更丰富的可能性。因此,我们在嵌入式平台的软件基于开源的原则而进行。

如对我们现有软件有任何的问题、建议,欢迎提交到论坛:,或者给我们的技术人员发邮件xumm#csoneplus.com。

14 本文修改记录

  • 2022-04-12

第一个版本