Difference between revisions of "VEYE CS Camera on Firfly Boards/zh"
(→概述) |
(→概述) |
||
(25 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | '''<big>怎样在Firefly的RK35XX板子上使用VEYE和CS系列摄像机 | + | '''<big>怎样在Firefly的RK35XX板子上使用VEYE和CS系列摄像机</big>''' |
[[VEYE CS Camera on Firfly Boards|English]] | [[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 24: | Line 26: | ||
|完成 | |完成 | ||
|} | |} | ||
+ | 此外,在ubuntu系统下,已经调通Fpdlink连接模式的驱动。 | ||
+ | |||
=== 硬件准备及安装 === | === 硬件准备及安装 === | ||
− | VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个[[ADP-Tfirefly]]转接板转接到ROC- | + | VEYE系列和CS系列相机提供了兼容树莓派的15Pin端子,需要使用一个[[ADP-Tfirefly]]转接板转接到ROC-RK35xx-PC主板上。 |
==== 摄像机与ADP-Tfirefly的连接 ==== | ==== 摄像机与ADP-Tfirefly的连接 ==== | ||
Line 39: | Line 43: | ||
==== 整体连接图 ==== | ==== 整体连接图 ==== | ||
[[File:VEYE-MIPI-327S-ADP-Tfirefly 04.jpg|center|thumb|800x800px|Firefly Board and VEYE camera overall]] | [[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 /> | <br /> | ||
− | |||
=== github库介绍 === | === github库介绍 === | ||
− | https://github.com/veyeimaging/ | + | https://github.com/veyeimaging/rk35xx_firefly |
包括以下主要内容: | 包括以下主要内容: | ||
Line 50: | Line 56: | ||
* 应用层demo | * 应用层demo | ||
− | 此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases] | + | 此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux内核安装包以及Android系统镜像。 |
− | === | + | === Ubuntu系统 === |
− | ==== | + | ==== 更新Firefly主板的Ubuntu系统(RK356x) ==== |
− | |||
− | + | ===== 概述 ===== | |
+ | 本章节描述怎样更新RK356x系统以支持我们的摄像头模组。 | ||
+ | |||
+ | 对于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板子上,执行: | ||
− | + | 下载[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> | + | <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 77: | 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 98: | Line 124: | ||
<code>video0</code> | <code>video0</code> | ||
− | 正确识别摄像头之后,MIPI- | + | 正确识别摄像头之后,MIPI-CSI2接口的摄像头识别为/dev/video0。对于ROC-RK3566-PC,挂载在i2c-4;对于ROC-RK3588S-PC,挂载在i2c-7。 |
− | === 应用范例 === | + | ==== 应用范例 ==== |
− | ==== v4l2-ctl ==== | + | ===== v4l2-ctl ===== |
− | =====安装v4l2-utils===== | + | ======安装v4l2-utils====== |
<code>sudo apt-get install v4l-utils</code> | <code>sudo apt-get install v4l-utils</code> | ||
− | =====列出相机支持的数据格式===== | + | ======列出相机支持的数据格式====== |
<code>v4l2-ctl --list-formats-ext</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>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-1920x1080.yuv</code> | ||
− | |||
− | |||
播放图片 | 播放图片 | ||
Line 117: | Line 145: | ||
<code>ffplay -f rawvideo -video_size 1920x1080 -pix_fmt nv12 nv12-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= | + | <code>v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=NV12 --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> |
− | ==== yavta示例 ==== | + | ===== yavta示例 ===== |
<code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code> | <code>git clone <nowiki>https://github.com/veyeimaging/yavta.git</nowiki></code> | ||
<code>cd yavta;make</code> | <code>cd yavta;make</code> | ||
− | <code>./yavta -c1 - | + | <code>./yavta -c1 -Fnv12-1920x1080.yuv --skip 0 -f NV12 -s 1920x1080 /dev/video0</code> |
− | ==== gstreamer应用范例 ==== | + | ===== gstreamer应用范例 ===== |
我们提供了几个gstreamer例程,实现了预览,抓拍,录像等功能。详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。 | 我们提供了几个gstreamer例程,实现了预览,抓拍,录像等功能。详见github上的[https://github.com/veyeimaging/rk356x_firefly/tree/main/linux/samples samples]目录。 | ||
− | ==== OpenCV的导入 ==== | + | ===== OpenCV的导入 ===== |
首先安装OpenCV: | 首先安装OpenCV: | ||
Line 138: | Line 166: | ||
此外,Firefly的这个[https://wiki.t-firefly.com/zh_CN/Firefly-Linux-Guide/demo_OpenCV_support.html 页面]也有一定的参考价值。 | 此外,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脚本使用说明 === | === i2c脚本使用说明 === | ||
由于我们的摄像头参数自由度比较高,并没有采用V4L2参数进行控制,而是使用脚本进行参数配置。 | 由于我们的摄像头参数自由度比较高,并没有采用V4L2参数进行控制,而是使用脚本进行参数配置。 | ||
− | https://github.com/veyeimaging/ | + | https://github.com/veyeimaging/rk35xx_firefly/tree/main/i2c_cmd |
注意脚本使用中,采用-b [i2cbus]参数来指明摄像头使用的i2c bus。 | 注意脚本使用中,采用-b [i2cbus]参数来指明摄像头使用的i2c bus。 | ||
Line 149: | Line 186: | ||
[[CS-MIPI-X for Raspberry Pi/zh|CS系列参数控制软件包使用说明]] | [[CS-MIPI-X for Raspberry Pi/zh|CS系列参数控制软件包使用说明]] | ||
− | === | + | |
− | https://github.com/veyeimaging/ | + | === 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格式。 | ||
=== 参考资料 === | === 参考资料 === | ||
Line 157: | 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 164: | 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系列摄像机
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异面线连接,注意接触面向外。
2.2 ADP-Tfirefly与主板的连接
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面向内。
2.3 整体连接图
2.4 Fpdlink-III摄像机连接示意图
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。
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 已知问题
- 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
发布第一个版本。