Changes

Jump to navigation Jump to search
Created page with "'''<big>怎样在Radxa的RK35XX板子上使用VEYE和CS系列摄像机</big>''' English ===概述=== VEYE系列相机是我们推出的视..."
'''<big>怎样在Radxa的RK35XX板子上使用VEYE和CS系列摄像机</big>'''

[[VEYE CS Camera on Radxa Boards|English]]
===概述===
VEYE系列相机是我们推出的视频流模式MIPI摄像机。本文以Radxa的ZERO 3W主板为例,介绍怎样将VEYE系列摄像机接入RK3566/RK3568/RK3588系统。

我们提供了Linux操作系统下的驱动。
====支持的摄像机模组====
{| class="wikitable"
!系列
!型号
!状态
|-
|VEYE系列
|VEYE-MIPI-IMX327S
|完成
|-
|VEYE系列
|VEYE-MIPI-IMX462
|完成
|-
|VEYE系列
|VEYE-MIPI-IMX385
|完成
|}此外,在ubuntu系统下,已经调通Fpdlink连接模式的驱动。
===硬件准备及安装===
VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个[[ADP-Tfirefly]]转接板转接到ROC-RK35xx-PC主板上。
====摄像机与ADP-Tfirefly的连接====
二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。[[File:VEYE-MIPI-327S-ADP-Tfirefly 06.jpg|center|thumb|800x800px|VEYE camera connect to ADP-Tfirefly|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly_06.jpg]]<br />
====ADP-Tfirefly与主板的连接====
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。[[File:VEYE-MIPI-327S-ADP-Tfirefly 05.jpg|center|thumb|800x800px|ADP-Tfirefly connect to Firefly board|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly_05.jpg]]<br />
====整体连接图====
[[File:VEYE-MIPI-327S-ADP-Tfirefly 04.jpg|center|thumb|800x800px|Firefly Board and VEYE camera overall|link=http://wiki.veye.cc/index.php/File:VEYE-MIPI-327S-ADP-Tfirefly_04.jpg]]
====Fpdlink-III摄像机连接示意图====
[[File:FPDLINK Camera to RK3588S.png|center|thumb|800x800px|FPDLINK Camera to RK3588S|link=http://wiki.veye.cc/index.php/File:FPDLINK_Camera_to_RK3588S.png]]<br />
===github库介绍===
https://github.com/veyeimaging/rk35xx_firefly

包括以下主要内容:

*driver和dts源码
*i2c通信工具集
*应用层demo

此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux内核安装包以及Android系统镜像。
===Ubuntu系统===
====更新Firefly主板的Ubuntu系统(RK356x)====
=====概述=====
本章节描述怎样更新RK356x系统以支持我们的摄像头模组。

对于kernel4.19的版本,我们提供了deb安装包,可以直接安装。对于kernel5.10的版本,我们提供了烧写镜像。

未提供安装包的版本,需要参考后面的章节,从驱动源码进行编译。

尽管我们现在以Ubuntu系统为例进行介绍,其他linux发行版也可以参考本文。
=====对于kernel5.10的版本=====
对于ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。

下载[https://github.com/veyeimaging/rk356x_firefly/releases/ https://github.com/veyeimaging/rk35xx_firefly/releases/]中对应你使用的摄像机型号的最新镜像。

参考Firefly[https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/upgrade_bootmode.html 文档],烧写系统。
=====对于kernel4.19的版本=====
======烧写Firefly官方标准系统======
参考Firefly[https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/01-bootmode.html 文档],烧写标准系统。
======使用编译好的debain安装包======
在RK35xx板子上,执行:

下载[https://github.com/veyeimaging/rk356x_firefly/releases/ https://github.com/veyeimaging/rk35xx_firefly/releases/]中最新的rk356x_firefly_ubuntu.tar.gz。

<code>tar -xavf rk356x_firefly.tar.gz</code>

<code>cd rk356x_firefly/released_images/ROC-RK3566-PC/ubuntu/</code>

<code>sudo dpkg -i linux-image-4.19.232_4.19.232-21_arm64.deb</code>

如果版本不匹配,需要从源代码进行编译。
====更新Firefly主板的Ubuntu系统(RK358x)====
对于ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。

下载[https://github.com/veyeimaging/rk356x_firefly/releases/ https://github.com/veyeimaging/rk35xx_firefly/releases/]中对应你使用的摄像机型号的最新镜像。

参考Firefly[https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/upgrade_bootmode.html 文档],烧写系统。
====系统状态检测====
完成系统安装后,在Firefly板端执行以下命令来检测是否正确连接摄像头。

*VEYE-MIPI-XXX

<code>dmesg | grep veye</code>

应当有类似如下提示:

<code>veyecam2m 4-003b:  camera id is veyecam2m</code>

<code>veyecam2m 4-003b: sensor is IMX327</code>

*执行如下命令检查video0设备节点

<code>ls /dev/video0</code>

可以看到

<code>video0</code>

正确识别摄像头之后,MIPI-CSI2接口的摄像头识别为/dev/video0。对于ROC-RK3566-PC,挂载在i2c-4;对于ROC-RK3588S-PC,挂载在i2c-7。
====应用范例====
=====v4l2-ctl=====
======安装v4l2-utils======
<code>sudo apt-get install v4l-utils</code>
======列出相机支持的数据格式======
<code>v4l2-ctl --list-formats-ext</code>
======抓取图片======
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap --stream-count=100 --stream-to=nv12-1920x1080.yuv</code>

对于RK3566,还可以:

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

播放图片

<code>ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv</code>
======查看帧率======
<code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap --stream-count=-1 --stream-to=/dev/null</code>
=====yavta示例=====
<code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code>

<code>cd yavta;make</code>

<code>./yavta -c1 -Fnv12-1920x1080.yuv --skip 0 -f NV12 -s 1920x1080 /dev/video0</code>
=====gstreamer应用范例=====
我们提供了几个gstreamer例程,实现了预览,抓拍,录像等功能。详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。
=====OpenCV的导入=====
首先安装OpenCV:

<code>sudo apt install python3-opencv</code>

我们提供了几个将摄像头数据导入opencv的例程。详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。

此外,Firefly的这个[https://wiki.t-firefly.com/zh_CN/Firefly-Linux-Guide/demo_OpenCV_support.html 页面]也有一定的参考价值。
====从源码编译驱动和dtb====

*RK356x

https://github.com/veyeimaging/rk35xx_firefly/tree/main/linux/drivers/rk356x

*RK358x

https://github.com/veyeimaging/rk35xx_firefly/tree/main/linux/drivers/rk358x
===i2c脚本使用说明===
由于我们的摄像头参数自由度比较高,并没有采用V4L2参数进行控制,而是使用脚本进行参数配置。

https://github.com/veyeimaging/rk35xx_firefly/tree/main/i2c_cmd

注意脚本使用中,采用-b [i2cbus]参数来指明摄像头使用的i2c bus。

[[VEYE MIPI 290/327 for Raspberry Pi/zh|VEYE系列参数控制软件包使用说明]]

[[CS-MIPI-X for Raspberry Pi/zh|CS系列参数控制软件包使用说明]]
===Android系统===
====更新Android系统====

*ROC-RK3566-PC

下载<nowiki/>https://github.com/veyeimaging/rk35xx_firefly/releases/<nowiki/>中最新的rk356x_firefly_android.tar.gz。

*ROC-RK3588S-PC

下载<nowiki/>https://github.com/veyeimaging/rk35xx_firefly/releases/<nowiki/>中最新的rk358x_firefly_android.tar.gz。

参考firefly的文档烧写系统。
====系统状态检测====
完成系统安装后,通过adb登录在Firefly板端,执行以下命令来检测是否正确连接摄像头。

*VEYE-MIPI-XXX

<code>dmesg | grep veye</code>

应当有类似如下提示:

<code>veyecam2m 4-003b:  camera id is veyecam2m</code>

<code>veyecam2m 4-003b: sensor is IMX327</code>

*执行如下命令检查video0设备节点

<code>ls /dev/video0</code>

可以看到

<code>video0</code>

正确识别摄像头之后,MIPI-CSI2接口的摄像头挂载到i2c-4,识别为/dev/video0。
====应用范例====
使用系统自带的相机程序即可打开摄像头。
====从源码编译系统====

*RK356x

https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk356x/drivers

*RK358x

https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk358x/drivers
===已知问题===

#RK3588的VICAP模块不支持输出UYVY格式,因此请使用NV12格式。

===参考资料===

*ROC-RK3566-PC 手册

https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/

*ROC-RK3588S-PC 手册

https://wiki.t-firefly.com/zh_CN/ROC-RK3588S-PC/

*Firefly Linux 开发指南

https://wiki.t-firefly.com/zh_CN/Firefly-Linux-Guide/index.html
===本文修改记录===

*2024-04-17

Support kernel v5.10 on RK3566.

*2023-05-22

在ubuntu系统下,已经调通Fpdlink连接模式的驱动。

*2022-12-28

增加对RK3588的支持。

*2022-12-06

支持Android系统。

*2022-10-22


发布第一个版本。

Navigation menu