Difference between revisions of "GX Camera on Firfly Boards/zh"

From wiki_veye
Jump to navigation Jump to search
(临时保存一版)
 
(22 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
'''<big>怎样在Firefly板子上使用GX系列相机</big>'''
 
'''<big>怎样在Firefly板子上使用GX系列相机</big>'''
  
=== 概述 ===
+
===概述===
GX系列相机是为工业领域的AI应用推出的相机。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。它具备丰富的数据格式和触发特性,极低的延时,极高的带宽和可靠的稳定性。
+
GX系列相机是为嵌入式的AI应用推出的相机,具备卓越的ISP性能,多种工作模式,丰富的功能选项,可靠的稳定性设计。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。
  
 
本文以Firefly的ROC-RK3588S-PC、ROC-RK3576-PC和ROC-RK3566-PC主板为例,介绍怎样将GX系列摄像机接入RK3566/3K3568、RK3576和RK3588S/RK3588系统。
 
本文以Firefly的ROC-RK3588S-PC、ROC-RK3576-PC和ROC-RK3566-PC主板为例,介绍怎样将GX系列摄像机接入RK3566/3K3568、RK3576和RK3588S/RK3588系统。
Line 10: Line 10:
 
我们提供了Linux(以Ubuntu为例)操作系统下的驱动。
 
我们提供了Linux(以Ubuntu为例)操作系统下的驱动。
  
==== 支持的模组 ====
+
====支持的模组====
 
{| class="wikitable"
 
{| class="wikitable"
 
!系列
 
!系列
Line 20: Line 20:
 
|完成
 
|完成
 
|}
 
|}
此外,在ubuntu系统下,已经调通V-by-One HS连接模式的驱动。
 
  
=== 硬件准备及安装 ===
+
====支持的主板====
GX系列相机需要使用[[ADP-MV2 Adapter Board Data Sheet/zh|ADP-MV2]]转接板才能连接到ROC-RK35xx-PC主板。
 
 
 
==== 新版本ADP-MV2的连接 ====
 
 
 
===== GX相机与ADP-MV2的连接 =====
 
二者使用0.5mm间距*30P的FFC异面线连接,注意接触面向外。
 
 
{| class="wikitable"
 
{| class="wikitable"
!TOP
+
!厂家
!BOTTOM
+
!型号
 +
!状态
 +
|-
 +
|Firefly
 +
|ROC-RK3588S-PC
 +
|完成
 +
|-
 +
|Firefly
 +
|ROC-RK3576-PC
 +
|TBD
 
|-
 
|-
|[[File:ADP-MV2-V2 to MV-MIPI-X.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]]
+
|Firefly
|[[File:ADP-MV2-V2 to MV-MIPI-X No.2.jpg|alt=|center|thumb|600x600px|ADP-MV2 to MV-MIPI-X]]
+
|ROC-RK3566-PC
|}<br />
+
|TBD
 +
|}
 +
===硬件准备及安装===
 +
Firefly的主板采用了30pin的连接器,而GX系列相机是22pin接口并且需要独立5V供电,因此我们设计了专用了转接排线(FFC cable)和供电线。
  
 +
====连接示意图====
 
<br />
 
<br />
===== ADP-MV2与主板的连接 =====
+
[[File:Gx to firfly.png|alt=GX Camera to Firfly|center|thumb|800x800px|GX Camera to Firfly]]
二者使用0.5mm间距*30P的FFC同面线连接,注意接触面方向,ADP-MV2上向外,RK board上向内。
 
[[File:RK-ADP-MV2-V2-RAW-MIPI 02.jpg|alt=|center|thumb|800x800px|RK to ADP-MV2 and MV cam]]
 
 
<br />
 
<br />
 +
===github库介绍===
  
==== V-by-One-HS-KIT摄像机连接示意图 ====
+
====Rockchip平台通用部分====
[[File:VBYONE connection with rk3588.jpg|center|thumb|800x800px|VBYONE connection with rk3588]]
 
<br />
 
=== github库介绍 ===
 
 
https://github.com/veyeimaging/rk35xx_veye_bsp
 
https://github.com/veyeimaging/rk35xx_veye_bsp
 
https://github.com/veyeimaging/rk35xx_firefly
 
  
 
包括以下主要内容:
 
包括以下主要内容:
  
*driver和dts源码
+
*driver
 
*i2c通信工具集
 
*i2c通信工具集
 
*应用层demo
 
*应用层demo
 
此外,在[https://github.com/veyeimaging/rk356x_firefly/releases releases]中,提供了编译好的linux系统镜像。
 
  
 
国内用户可以访问gitee仓库:
 
国内用户可以访问gitee仓库:
  
 
https://gitee.com/veyeimaging/rk35xx_veye_bsp
 
https://gitee.com/veyeimaging/rk35xx_veye_bsp
 +
 +
====Firefly主板相关部分====
 +
https://github.com/veyeimaging/rk35xx_firefly
 +
 +
包括以下主要内容:
 +
 +
*dts源码和dtb文件
 +
*驱动编译指导文档
 +
 +
国内用户可以访问gitee仓库:
  
 
https://gitee.com/veyeimaging/rk35xx_firefly
 
https://gitee.com/veyeimaging/rk35xx_firefly
 +
 +
====主板烧写镜像====
 +
在[https://github.com/veyeimaging/rk356x_firefly/releases github releases]中,提供了编译好的linux系统镜像。
  
 
国内用户可通过百度云下载:https://pan.baidu.com/s/1LdK0n_uCx1yGej4PB8-bxg?pwd=yft9<nowiki/>。
 
国内用户可通过百度云下载:https://pan.baidu.com/s/1LdK0n_uCx1yGej4PB8-bxg?pwd=yft9<nowiki/>。
  
=== 更新ubuntu系统 ===
+
===更新ubuntu系统===
 
对于ROC-RK3566-PC、ROC-RK3576-PC 和ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。
 
对于ROC-RK3566-PC、ROC-RK3576-PC 和ROC-RK3588S-PC,我们提供了发布系统的烧写镜像。
  
下载[https://github.com/veyeimaging/rk356x_firefly/releases/ https://github.com/veyeimaging/rk35xx_firefly/releases/]中最新的支持GX系列的镜像。
+
在前面所述下载路径中,找到对应主板的,支持GX系列相机产品的对应镜像。
  
 
参考Firefly文档([https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html ROC-RK3588S-PC] [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html ROC-RK3566-PC] [https://wiki.t-firefly.com/en/ROC-RK3576-PC/upgrade_bootmode.html ROC-RK3576-PC]),烧写系统。
 
参考Firefly文档([https://wiki.t-firefly.com/en/ROC-RK3588S-PC/upgrade_bootmode.html ROC-RK3588S-PC] [https://wiki.t-firefly.com/en/ROC-RK3566-PC/03-upgrade_firmware.html ROC-RK3566-PC] [https://wiki.t-firefly.com/en/ROC-RK3576-PC/upgrade_bootmode.html ROC-RK3576-PC]),烧写系统。
=== 系统状态检测 ===
+
===系统状态检测===
  
==== 是否正确识别到了相机 ====
+
====是否正确识别到了相机====
完成系统安装后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。
+
完成系统安装并在硬件上连接好相机之后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。
  
<code>dmesg | grep gxcam</code>
+
<code>$ dmesg | grep gxcam</code>
  
 
应当有类似下面的提示:
 
应当有类似下面的提示:
  
[    6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.01
+
<code>[    6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.02</code>
  
[    6.781681] gxcam 7-003b: camera is: GX-MIPI-IMX662
+
<code>[    6.781681] gxcam 7-003b: camera is: GX-MIPI-IMX662</code>
  
[    6.820210] gxcam 7-003b: Success to get gxcam endpoint data lanes, dts uses 2 lanes,will set to camera
+
<code>[    6.820210] gxcam 7-003b: Success to get gxcam endpoint data lanes, dts uses 2 lanes,will set to camera</code>
  
[    6.834597] gxcam 7-003b: gxcam_enum_controls success
+
<code>[    6.834597] gxcam 7-003b: gxcam_enum_controls success</code>
  
[    6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5
+
<code>[    6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5</code>
  
可以看到识别到当前的摄像机模组的型号,版本号。
+
分析上述提示信息,可以看到当前相机型号是<code>GX-MIPI-IMX662</code>。
  
在ROC-RK3588S-PC上,摄像机挂载在i2c-7, i2c地址是0x3b。
+
从<code>7-003b</code>信息可以看到,当前相机挂载的i2c总线序号是7,i2c地址是0x3b。
  
在ROC-RK3566-PC和ROC-RK3576-PC上,摄像机挂载在i2c-4。
+
在ROC-RK3588S-PC上,摄像机挂载在i2c-7;在ROC-RK3566-PC和ROC-RK3576-PC上,摄像机挂载在i2c-4。
  
 
*执行如下命令检查video0设备节点
 
*执行如下命令检查video0设备节点
Line 107: Line 118:
  
 
正确识别摄像头之后,相机被识别为/dev/video0。
 
正确识别摄像头之后,相机被识别为/dev/video0。
====状态检测并配置环境变量====
 
在[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/gx_tools 这里],我们提供了两个脚本,可以自动检索下相机的一些信息
 
 
首先试用 probe_camera_info-rk.sh脚本,该脚本用于探测已连接并成功注册的摄像头设备,检索设备对应的媒体设备节点、视频设备节点、子设备节点、I²C 总线及设备标识等底层信息。执行后,将在当前目录生成 <code>auto_camera_index.json</code> 文件并在文件中记录检索到的信息。
 
 
./probe_camera_info-rk.sh
 
 
cat auto_camera_index.json
 
  
[
+
至此,相机的硬件安装和驱动安装已经完成,后续应用开发请参考下面的文章。
  
  {
+
===相机应用开发指南===
 +
[[GX Camera Application Development Guide/zh|应用开发指南]]
  
    "media_node": "/dev/media0",
+
===参考资料===
 
 
    "video_node": "/dev/video0",
 
 
 
    "video_subnode": "/dev/v4l-subdev2",
 
 
 
    "media_entity_name": "m00_b_gxcam 7-003b",
 
 
 
    "i2c_bus": "7"
 
 
 
  }
 
 
 
]
 
 
 
通过索引信息,我们可以看到"i2c_bus": "7"对应的i2c_bus信息,以及接入了多少台设备,当前索引显示只接入一台设备,并且i2c_bus号是7,如果接入多个设备,索引信息可能会有"i2c_bus": "10","i2c_bus": "11"等信息
 
 
 
然后使用<code>gx_probe.sh</code>脚本,如果是多路相机,可以根据上一个脚本读出的i2c_bus执行,并将对应的相机型号、宽、高、帧率等信息配置到环境变量中。
 
 
 
使用方法是:
 
 
 
<code>source ./gx_probe.sh 7</code>
 
 
 
一个典型的输出如下:
 
 
 
<code>$ source ./gx_probe.sh 7</code>
 
 
 
<code>The gxcam driver is loaded on i2c-10, but the camera is not detected!</code>
 
 
 
<code>Found veye_gxcam camera on i2c-7.</code>
 
 
 
<code>Setenv CAMERAMODEL = GX-MIPI-IMX662</code>
 
 
 
<code>Setenv FPS = 60</code>
 
 
 
<code>Setenv WIDTH = 1920</code>
 
 
 
<code>Setenv HEIGHT = 1080</code>
 
 
 
可以通过 <code>echo $CAMERAMODEL</code>来验证环境变量的输出结果。注意,此环境变量只对当前会话有效。
 
 
 
====配置命令行全局变量 ====
 
根据主板型号,配置I2C_BUS全局变量。
 
 
 
* ROC-RK3588S-PC
 
 
 
<code>export I2C_BUS=7</code>
 
 
 
* ROC-RK3566-PC and ROC-RK3576-PC
 
 
 
<code>export I2C_BUS=4</code>
 
==== 使用media-ctl查看拓扑结构 ====
 
使用media-ctl指令,可以清晰的展现出当前的拓扑结构。
 
 
 
<code>media-ctl -p -d /dev/media0</code>
 
 
 
===== 链接关系 =====
 
gx camera->rockchip-csi2-dphy0->rockchip-mipi-csi2->stream_cif_mipi_id0 - - ->DDR(/dev/video0)
 
 
 
应用程序可以通过/dev/video0节点获取图像。
 
 
 
===== gx camera entity信息 =====
 
以GX-MIPI-IMX662为例:
 
 
 
- entity 63: m00_b_gxcam 7-003b (1 pad, 1 link)
 
 
 
             type V4L2 subdev subtype Sensor flags 0
 
 
 
             device node name /dev/v4l-subdev2
 
 
 
        pad0: Source
 
 
 
                [fmt:UYVY8_2X8/1920x1080@10000/600000 field:none colorspace:rec709
 
 
 
                 crop:(0,0)/1920x1080]
 
 
 
                -> "rockchip-csi2-dphy0":0 [ENABLED]
 
 
 
可以看到:
 
 
 
* 该Entity完整的名称是: <code>m00_b_gxcam 7-003b</code>。(在ROC-RK3566-PC上该Entity名称是<code>m00_b_gxcam 4-003b</code>)
 
* 它是一个 V4L2 subdev (Sub-Device) Sensor。
 
* 它对应的节点是 <code>/dev/v4l-subdev2</code> ,应用程序(如<code>v4l2-ctl</code>)可以打开它,并进行配置。
 
* 它的输出格式是 [<code>UYVY8_2X8/1920x1080@10000/600000 field:none</code>] ,其中<code>UYVY8_2X8</code>是一种mbus-code的简写,下一小节会列出支持的mbus-code。
 
* 当前分辨率是<code>1920x1080。</code>
 
* 当前帧间隔是<code>10000/600000</code>,即帧率是60。
 
 
 
摄像机输出的数据格式,可以通过media-ctl指令修改。
 
 
 
<br />
 
==== 相机支持的mbus-code ====
 
GX系列相机使用UYVY数据格式能力,具体请参考每个型号的相机的数据手册。
 
{| class="wikitable"
 
|+格式对应关系
 
!Format on datasheet
 
!mbus-code for media-ctl
 
!FourCC pixelformat for v4l2-ctl
 
|-
 
|UYVY
 
|UYVY8_2X8
 
|UYVY
 
|}
 
 
 
<br />
 
=== 应用范例 ===
 
==== 使用v4l2-ctl配置参数 ====
 
<code>$ v4l2-ctl -d /dev/v4l-subdev2 -L</code>
 
 
 
<code>User Controls</code>
 
 
 
<code>                   trigger_mode 0x00981a01 (int)    : min=0 max=4 step=1 default=0 value=0 flags=volatile, execute-on-write</code>
 
 
 
<code>                    trigger_src 0x00981a02 (int)    : min=0 max=1 step=1 default=1 value=1 flags=volatile, execute-on-write</code>
 
 
 
<code>                    soft_trgone 0x00981a03 (button) : value=0 flags=write-only, execute-on-write</code>
 
 
 
<code>                      sync_role 0x00981a04 (int)    : min=0 max=1 step=1 default=0 value=0 flags=volatile, execute-on-write</code>
 
 
 
<code>                     frame_rate 0x00981a05 (int)    : min=0 max=60 step=1 default=60 value=60 flags=volatile, execute-on-write</code>
 
 
 
可以使用下面的方法设置和获取参数。
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl [ctrl_type]=[val]</code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --get-ctrl [ctrl_type]</code>
 
 
 
以上所有功能,均可使用gx_mipi_i2c.sh实现。
 
 
 
需要指出的是,以上参数在取图过程中均不可修改。下面进行逐个说明:
 
 
 
=====配置触发模式=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=[0-2]</small></code>
 
 
 
0:流模式
 
 
 
1:普通触发模式
 
 
 
4:多相机同步模式
 
=====配置触发源=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=[0-1]</small></code>
 
 
 
0: 软触发
 
 
 
1: 硬触发
 
=====软触发一次=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code>
 
=====设置帧率=====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl frame_rate=[1-max]</code>
 
 
 
随分辨率的调整,最大帧率会自动更新。
 
 
 
==== 使用media-ctl配置图像格式 ====
 
可以通过下面的命令,配置摄像机的数据格式,分辨率,帧率。
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
 
 
其中:<code>"m00_b_gxcam 7-003b"</code>指的相机的<code>entity</code>完整名称,<code>UYVY8_2X8</code>为<code>mbus-code</code>,<code>'"$WIDTH"'x'"$HEIGHT"'</code>指明了分辨率,<code>1/'"$FPS"'</code>指明了帧率。
 
 
 
比如,对于GX-MIPI-IMX662,这个命令经过变量替换后的结果是:
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam 7-003b":0[fmt:UYVY8_2X8/1920x1080@1/60 field:none]'</code>
 
 
 
不仅可以在一个命令中同时配置数据格式,分辨率,帧率,也可以单独修改某一项或某几项。
 
 
 
==== 流模式 ====
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:UYVY8_2X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
 
 
===== 帧率统计 =====
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code>
 
 
 
或者
 
 
 
<code>./yavta -c-1 --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0</code>
 
 
 
===== 保存图片到文件 =====
 
 
 
* UYVY格式
 
 
 
v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=UYVY --stream-mmap --stream-count=1 --stream-to=uyvy-${WIDTH}x${HEIGHT}.yuv
 
 
 
图片格式请参考前面章节的描述。
 
 
 
=====yavta应用范例=====
 
 
 
====== yavta安装 ======
 
<code>git clone <nowiki>git://git.ideasonboard.org/yavta.git</nowiki></code>
 
 
 
<code>cd yavta;make</code>
 
 
 
====== 保存图片到文件 ======
 
配置完数据格式,分辨率,帧率之后,执行:
 
 
 
<code>./yavta -c1 -Fy8-${WIDTH}x${HEIGHT}.raw --skip 0 -f Y8 -s ${WIDTH}x${HEIGHT} /dev/video0</code>
 
 
 
===== 将相机数据导入OpenCV的范例 =====
 
<code>sudo apt install python3-opencv</code>
 
 
 
详见github上的[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples]目录。
 
 
 
<code>python3 ./v4l2dev_2_opencv_show_grey.py --width 1456 --height 1088 --fps 60 --i2c 7</code>
 
 
 
注意需要使用合适的参数来执行上述程序。
 
 
 
===== gstreamer应用范例 =====
 
我们提供了几个gstreamer例程,实现了预览功能。详见github上的[https://github.com/veyeimaging/rk35xx_veye_bsp/tree/main/samples samples]目录。
 
==== 触发模式 ====
 
 
 
===== 设置数据格式,分辨率,帧率 =====
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_x=0</code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl roi_y=0</code>
 
 
 
<code>media-ctl -d /dev/media0 --set-v4l2 '"m00_b_gxcam '"$I2C_BUS"'-003b":0[fmt:Y8_1X8/'"$WIDTH"'x'"$HEIGHT"'@1/'"$FPS"']'</code>
 
=====软触发模式=====
 
======设置模式======
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=0</small></code>
 
======开始取图======
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw</code>
 
======进行软触发操作======
 
在其他的shell终端,可以多次执行下面命令进行多次触发。
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>soft_trgone=1</small></code>
 
=====硬触发模式=====
 
======设置模式======
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_mode=1</small></code>
 
 
 
<code>v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl <small>trigger_src=1</small></code>
 
 
 
可以使用[[Gx mipi i2c.sh user guide|gx_mipi_i2c.sh]]脚本进行丰富的触发参数设置。
 
======开始取图======
 
<code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=1 --stream-to=y8-${WIDTH}x${HEIGHT}.raw</code>
 
======进行硬触发操作======
 
将合适的触发信号连接到摄像机的trigger引脚并进行触发。
 
=== i2c脚本使用说明 ===
 
我们提供了shell脚本来配置参数。
 
 
 
[[gx_mipi_i2c.sh user guide]]
 
=== 参考资料 ===
 
  
 
*ROC-RK3588S-PC 手册
 
*ROC-RK3588S-PC 手册
Line 368: Line 133:
  
 
https://wiki.t-firefly.com/zh_CN/ROC-RK3576-PC/
 
https://wiki.t-firefly.com/zh_CN/ROC-RK3576-PC/
=== 本文修改记录 ===
+
===本文修改记录===
 +
 
 +
*2025-12-06
 +
 
 +
调整了文档格式并进行适当润色。
  
 
*2025-11-28
 
*2025-11-28
  
 
第一个版本。
 
第一个版本。

Latest revision as of 11:40, 30 December 2025

English

怎样在Firefly板子上使用GX系列相机

1 概述

GX系列相机是为嵌入式的AI应用推出的相机,具备卓越的ISP性能,多种工作模式,丰富的功能选项,可靠的稳定性设计。其使用MIPI CSI-2接口,尤其适合嵌入式运算平台使用。

本文以Firefly的ROC-RK3588S-PC、ROC-RK3576-PC和ROC-RK3566-PC主板为例,介绍怎样将GX系列摄像机接入RK3566/3K3568、RK3576和RK3588S/RK3588系统。

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

1.1 支持的模组

系列 型号 状态
GX系列 GX-MIPI-IMX662 完成

1.2 支持的主板

厂家 型号 状态
Firefly ROC-RK3588S-PC 完成
Firefly ROC-RK3576-PC TBD
Firefly ROC-RK3566-PC TBD

2 硬件准备及安装

Firefly的主板采用了30pin的连接器,而GX系列相机是22pin接口并且需要独立5V供电,因此我们设计了专用了转接排线(FFC cable)和供电线。

2.1 连接示意图


GX Camera to Firfly
GX Camera to Firfly


3 github库介绍

3.1 Rockchip平台通用部分

https://github.com/veyeimaging/rk35xx_veye_bsp

包括以下主要内容:

  • driver
  • i2c通信工具集
  • 应用层demo

国内用户可以访问gitee仓库:

https://gitee.com/veyeimaging/rk35xx_veye_bsp

3.2 Firefly主板相关部分

https://github.com/veyeimaging/rk35xx_firefly

包括以下主要内容:

  • dts源码和dtb文件
  • 驱动编译指导文档

国内用户可以访问gitee仓库:

https://gitee.com/veyeimaging/rk35xx_firefly

3.3 主板烧写镜像

github releases中,提供了编译好的linux系统镜像。

国内用户可通过百度云下载:https://pan.baidu.com/s/1LdK0n_uCx1yGej4PB8-bxg?pwd=yft9

4 更新ubuntu系统

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

在前面所述下载路径中,找到对应主板的,支持GX系列相机产品的对应镜像。

参考Firefly文档(ROC-RK3588S-PC ROC-RK3566-PC ROC-RK3576-PC),烧写系统。

5 系统状态检测

5.1 是否正确识别到了相机

完成系统安装并在硬件上连接好相机之后,系统上电。在Firefly板端执行以下命令来检测是否正确连接相机。

$ dmesg | grep gxcam

应当有类似下面的提示:

[    6.667547] gxcam 7-003b: veye gx series camera driver version: 01.00.02

[    6.781681] gxcam 7-003b: camera is: GX-MIPI-IMX662

[    6.820210] gxcam 7-003b: Success to get gxcam endpoint data lanes, dts uses 2 lanes,will set to camera

[    6.834597] gxcam 7-003b: gxcam_enum_controls success

[    6.891209] rockchip-csi2-dphy csi2-dphy0: dphy0 matches m00_b_gxcam 7-003b:bus type 5

分析上述提示信息,可以看到当前相机型号是GX-MIPI-IMX662

7-003b信息可以看到,当前相机挂载的i2c总线序号是7,i2c地址是0x3b。

在ROC-RK3588S-PC上,摄像机挂载在i2c-7;在ROC-RK3566-PC和ROC-RK3576-PC上,摄像机挂载在i2c-4。

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

ls /dev/video0

可以看到

video0

正确识别摄像头之后,相机被识别为/dev/video0。

至此,相机的硬件安装和驱动安装已经完成,后续应用开发请参考下面的文章。

6 相机应用开发指南

应用开发指南

7 参考资料

  • ROC-RK3588S-PC 手册

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

  • ROC-RK3576-PC 手册

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

8 本文修改记录

  • 2025-12-06

调整了文档格式并进行适当润色。

  • 2025-11-28

第一个版本。