Difference between revisions of "VEYE CS Camera on Firfly Boards/zh"

From wiki_veye
Jump to navigation Jump to search
 
(31 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''<big>怎样在Firefly的RK35XX板子上使用VEYE和CS系列摄像机(Ubuntu系统)</big>'''
+
'''<big>怎样在Firefly的RK35XX板子上使用VEYE和CS系列摄像机</big>'''
 +
 
 +
[[VEYE CS Camera on Firfly Boards|English]]
  
 
=== 概述 ===
 
=== 概述 ===
VEYE系列和CS系列相机是我们推出的视频流模式MIPI摄像机。本文以Firefly的ROC-RK3566-PC主板为例,介绍怎样将VEYE和CS系列摄像机接入RK3566/RK3568/RK3588系统。
+
VEYE系列和CS系列相机是我们推出的视频流模式MIPI摄像机。本文以Firefly的ROC-RK3566-PC和ROC-RK3588S-PC主板为例,介绍怎样将VEYE和CS系列摄像机接入RK3566/RK3568/RK3588系统。
 +
 
 +
我们提供了Linux(以Ubuntu为例)和Android两种操作系统下的驱动。
  
 
==== 支持的摄像机模组 ====
 
==== 支持的摄像机模组 ====
Line 22: Line 26:
 
|完成
 
|完成
 
|}
 
|}
 +
此外,在ubuntu系统下,已经调通Fpdlink连接模式的驱动。
 +
 
=== 硬件准备及安装 ===
 
=== 硬件准备及安装 ===
VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个[[ADP-Tfirefly]]转接板转接到ROC-RK3566-PC主板上。
+
VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个[[ADP-Tfirefly]]转接板转接到ROC-RK35xx-PC主板上。
  
 
==== 摄像机与ADP-Tfirefly的连接 ====
 
==== 摄像机与ADP-Tfirefly的连接 ====
 
二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。
 
二者使用1.0mm间距*15P的FFC异面线连接,注意接触面向外。
 
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 06.jpg|center|thumb|800x800px|VEYE camera connect to ADP-Tfirefly]]
TODO
+
<br />
  
 
==== ADP-Tfirefly与主板的连接 ====
 
==== ADP-Tfirefly与主板的连接 ====
 
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。
 
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。
 
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 05.jpg|center|thumb|800x800px|ADP-Tfirefly connect to Firefly board]]
TODO
+
<br />
  
 
==== 整体连接图 ====
 
==== 整体连接图 ====
TODO
+
[[File:VEYE-MIPI-327S-ADP-Tfirefly 04.jpg|center|thumb|800x800px|Firefly Board and VEYE camera overall]]
  
 +
==== Fpdlink-III摄像机连接示意图 ====
 +
[[File:FPDLINK Camera to RK3588S.png|center|thumb|800x800px|FPDLINK Camera to RK3588S]]
 +
<br />
 
=== github库介绍 ===
 
=== github库介绍 ===
https://github.com/veyeimaging/rk356x_firefly
+
https://github.com/veyeimaging/rk35xx_firefly
  
 
包括以下主要内容:
 
包括以下主要内容:
Line 47: Line 56:
 
* 应用层demo
 
* 应用层demo
  
此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux内核安装包。
+
此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux内核安装包以及Android系统镜像。
 +
 
 +
=== Ubuntu系统 ===
  
=== 更新Firefly主板的Ubuntu系统 ===
+
==== 更新Firefly主板的Ubuntu系统(RK356x) ====
  
==== 概述 ====
+
===== 概述 =====
本章节描述怎样更新RK35xx系统以支持我们的摄像头模组。
+
本章节描述怎样更新RK356x系统以支持我们的摄像头模组。
  
对于一部分的版本,我们提供了deb安装包,可以直接安装。未提供安装包的版本,需要参考后面的章节,从驱动源码进行编译。
+
对于kernel4.19的版本,我们提供了deb安装包,可以直接安装。对于kernel5.10的版本,我们提供了烧写镜像。
 +
 
 +
未提供安装包的版本,需要参考后面的章节,从驱动源码进行编译。
  
 
尽管我们现在以Ubuntu系统为例进行介绍,其他linux发行版也可以参考本文。
 
尽管我们现在以Ubuntu系统为例进行介绍,其他linux发行版也可以参考本文。
  
==== 烧写Firefly官方标准系统 ====
+
===== 对于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 文档],烧写标准系统。
 
参考Firefly[https://wiki.t-firefly.com/zh_CN/ROC-RK3566-PC/01-bootmode.html 文档],烧写标准系统。
  
==== 使用编译好的debain安装包 ====
+
====== 使用编译好的debain安装包 ======
 
在RK35xx板子上,执行:
 
在RK35xx板子上,执行:
  
<code>wget <nowiki>https://github.com/veyeimaging/rk356x_firefly/releases/latest/download/rk356x_firefly.tar.gz</nowiki></code>
+
下载[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>tar -xavf rk356x_firefly.tar.gz</code>
  
<code>cd cd rk356x_firefly/released_images/ROC-RK3566-PC/ubuntu/</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>
 
<code>sudo dpkg -i linux-image-4.19.232_4.19.232-21_arm64.deb</code>
Line 74: Line 96:
 
如果版本不匹配,需要从源代码进行编译。
 
如果版本不匹配,需要从源代码进行编译。
  
=== 系统状态检测 ===
+
==== 更新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板端执行以下命令来检测是否正确连接摄像头。
 
完成系统安装后,在Firefly板端执行以下命令来检测是否正确连接摄像头。
  
Line 83: Line 112:
 
应当有类似如下提示:
 
应当有类似如下提示:
  
<code>camera id is veyecam2m</code>
+
<code>veyecam2m 4-003b:  camera id is veyecam2m</code>
  
<code>sensor is IMX327/IMX462/IMX385</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设备节点
 
* 执行如下命令检查video0设备节点
Line 97: Line 224:
 
正确识别摄像头之后,MIPI-CSI2接口的摄像头挂载到i2c-4,识别为/dev/video0。
 
正确识别摄像头之后,MIPI-CSI2接口的摄像头挂载到i2c-4,识别为/dev/video0。
  
=== 应用范例 ===
+
==== 应用范例 ====
 +
使用系统自带的相机程序即可打开摄像头。
  
==== v4l2-ctl ====
+
==== 从源码编译系统 ====
  
==== yavta示例 ====
+
* RK356x
  
==== gstreamer应用范例 ====
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk356x/drivers
  
==== OpenCV的导入 ====
+
* RK358x
  
=== i2c脚本使用说明 ===
+
https://github.com/veyeimaging/rk35xx_firefly/tree/main/android/rk358x/drivers
 +
 
 +
=== 已知问题 ===
  
=== 从源码编译驱动和dtb ===
+
# RK3588的VICAP模块不支持输出UYVY格式,因此请使用NV12格式。
  
 
=== 参考资料 ===
 
=== 参考资料 ===
Line 116: Line 246:
  
 
https://wiki.t-firefly.com/zh_CN/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 开发指南
 
* Firefly Linux 开发指南
Line 123: Line 257:
 
=== 本文修改记录 ===
 
=== 本文修改记录 ===
  
* 2022-10-22
+
* 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
  
 
发布第一个版本。
 
发布第一个版本。

Latest revision as of 10:43, 17 April 2024

怎样在Firefly的RK35XX板子上使用VEYE和CS系列摄像机

English

1 概述

VEYE系列和CS系列相机是我们推出的视频流模式MIPI摄像机。本文以Firefly的ROC-RK3566-PC和ROC-RK3588S-PC主板为例,介绍怎样将VEYE和CS系列摄像机接入RK3566/RK3568/RK3588系统。

我们提供了Linux(以Ubuntu为例)和Android两种操作系统下的驱动。

1.1 支持的摄像机模组

系列 型号 状态
VEYE系列 VEYE-MIPI-IMX327S 完成
VEYE系列 VEYE-MIPI-IMX462 完成
VEYE系列 VEYE-MIPI-IMX385 完成

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

2 硬件准备及安装

VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个ADP-Tfirefly转接板转接到ROC-RK35xx-PC主板上。

2.1 摄像机与ADP-Tfirefly的连接

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

VEYE camera connect to ADP-Tfirefly


2.2 ADP-Tfirefly与主板的连接

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

ADP-Tfirefly connect to Firefly board


2.3 整体连接图

Firefly Board and VEYE camera overall

2.4 Fpdlink-III摄像机连接示意图

FPDLINK Camera to RK3588S


3 github库介绍

https://github.com/veyeimaging/rk35xx_firefly

包括以下主要内容:

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

此外,在releases中,提供了编译好的linux内核安装包以及Android系统镜像。

4 Ubuntu系统

4.1 更新Firefly主板的Ubuntu系统(RK356x)

4.1.1 概述

本章节描述怎样更新RK356x系统以支持我们的摄像头模组。

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

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

尽管我们现在以Ubuntu系统为例进行介绍,其他linux发行版也可以参考本文。

4.1.2 对于kernel5.10的版本

对于ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。

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

参考Firefly文档,烧写系统。

4.1.3 对于kernel4.19的版本
4.1.3.1 烧写Firefly官方标准系统

参考Firefly文档,烧写标准系统。

4.1.3.2 使用编译好的debain安装包

在RK35xx板子上,执行:

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

tar -xavf rk356x_firefly.tar.gz

cd rk356x_firefly/released_images/ROC-RK3566-PC/ubuntu/

sudo dpkg -i linux-image-4.19.232_4.19.232-21_arm64.deb

如果版本不匹配,需要从源代码进行编译。

4.2 更新Firefly主板的Ubuntu系统(RK358x)

对于ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。

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

参考Firefly文档,烧写系统。

4.3 系统状态检测

完成系统安装后,在Firefly板端执行以下命令来检测是否正确连接摄像头。

  • VEYE-MIPI-XXX

dmesg | grep veye

应当有类似如下提示:

veyecam2m 4-003b:  camera id is veyecam2m

veyecam2m 4-003b: sensor is IMX327

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

ls /dev/video0

可以看到

video0

正确识别摄像头之后,MIPI-CSI2接口的摄像头识别为/dev/video0。对于ROC-RK3566-PC,挂载在i2c-4;对于ROC-RK3588S-PC,挂载在i2c-7。

4.4 应用范例

4.4.1 v4l2-ctl
4.4.1.1 安装v4l2-utils

sudo apt-get install v4l-utils

4.4.1.2 列出相机支持的数据格式

v4l2-ctl --list-formats-ext

4.4.1.3 抓取图片

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap --stream-count=100 --stream-to=nv12-1920x1080.yuv

对于RK3566,还可以:

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

播放图片

ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-1920x1080.yuv

4.4.1.4 查看帧率

v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap --stream-count=-1 --stream-to=/dev/null

4.4.2 yavta示例

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

cd yavta;make

./yavta -c1 -Fnv12-1920x1080.yuv --skip 0 -f NV12 -s 1920x1080 /dev/video0

4.4.3 gstreamer应用范例

我们提供了几个gstreamer例程,实现了预览,抓拍,录像等功能。详见github上的samples目录。

4.4.4 OpenCV的导入

首先安装OpenCV:

sudo apt install python3-opencv

我们提供了几个将摄像头数据导入opencv的例程。详见github上的samples目录。

此外,Firefly的这个页面也有一定的参考价值。

4.5 从源码编译驱动和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

5 i2c脚本使用说明

由于我们的摄像头参数自由度比较高,并没有采用V4L2参数进行控制,而是使用脚本进行参数配置。

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

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

VEYE系列参数控制软件包使用说明

CS系列参数控制软件包使用说明

6 Android系统

6.1 更新Android系统

  • ROC-RK3566-PC

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

  • ROC-RK3588S-PC

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

参考firefly的文档烧写系统。

6.2 系统状态检测

完成系统安装后,通过adb登录在Firefly板端,执行以下命令来检测是否正确连接摄像头。

  • VEYE-MIPI-XXX

dmesg | grep veye

应当有类似如下提示:

veyecam2m 4-003b:  camera id is veyecam2m

veyecam2m 4-003b: sensor is IMX327

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

ls /dev/video0

可以看到

video0

正确识别摄像头之后,MIPI-CSI2接口的摄像头挂载到i2c-4,识别为/dev/video0。

6.3 应用范例

使用系统自带的相机程序即可打开摄像头。

6.4 从源码编译系统

  • RK356x

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

  • RK358x

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

7 已知问题

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

8 参考资料

  • 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

9 本文修改记录

  • 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

发布第一个版本。