GMSL视频
隐溪科技研发的H4xGMSL2功能板实现GMSL2摄像头的接入。
功能说明
完整的GMSL2视觉感知系统由三个核心组件构成:
GMSL2摄像头:sensor芯片,串行器
H4xGMSL2转接板:解串器
NVIDIA Orin计算平台:CSI视频流输入处理
关键特性
参数 |
规格 |
说明 |
|---|---|---|
解串芯片 |
MAX96724R |
兼容MAX96724(6Gbps)型号 |
支持通道数 |
4路独立输入 |
可同时连接4个GMSL2摄像头 |
最高分辨率 |
4K@30fps |
(每路)支持更高帧率的低分辨率模式 |
GMSL接口 |
GMSL2 3Gbps |
输入标准GMSL2信号,速率3Gbps |
CSI接口 |
MIPI CSI-2 |
输出标准CSI-2信号,兼容主流处理器 |
电源 |
12V DC, 2A |
可为连接的摄像头提供电源(PoC) |
反向通道 |
I2C通信、GPIO控制 |
支持摄像头配置和控制 |
帧同步 |
支持帧同步In和Out |
支持接收外部帧同步信号和对外输出 |
尺寸 |
30*52mm |
基于minipcie自定义信号线 |
使用说明
GMSL2摄像头连接
在使用GMSL2功能前,请确保GMSL2功能板和GMSL2线束已经完成连接
GMSL2接头位号和链路对应表
注意
系统在启动过程中从1开始检测GMSL2摄像头是否在线,第一个在位的GMSL2摄像头创建设备为
dev/video0不支持热拔插摄像头,每次GMSL2摄像头的接线调整,需在系统断电的情况下操作
对应的GMSL Link为:
接线位号 |
GMSL链路 |
|---|---|
1 |
Link A |
2 |
Link B |
3 |
Link C |
4 |
Link D |
GMSL2线束规格
TE Mate-AX四腔母头转Fakra Z直母,同轴线FDC402,默认1米
系统启动后进行jetson-io配置
sudo /opt/nvidia/jetson-io/jetson-io.py
选择H4xGMSL2-BC-3G,如下图所示:






按照系统提示保留配置后系统重启
检查摄像头设备创建
小技巧
IO-H4xGMSL2支持4路摄像头,套件中的minifakra的四合一线束,支持4路GMSL2摄像头的同时接入
如果只接入了一路摄像头,该摄像头为
/dev/video0如果接入了两路摄像头,这摄像头设备依次为
/dev/video0 /dev/video1,依次类推。
root@tegra-ubuntu:~# ls /dev/video*
/dev/video0 /dev/video1 /dev/video2 /dev/video3
显示4路摄像头设备已经创建.
检查V4L2层工作状态
root@tegra-ubuntu:~# v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
/dev/media0
vi-output, nv_cam 15-001a (platform:tegra-capture-vi:2):
/dev/video0
/dev/video1
/dev/video2
/dev/video3
确定摄像头设备的解串器和串行器
小技巧
IO-H4xGMSL2支持4路摄像头,套件中的minifakra的四合一线束,如果连接了多个摄像头,需要通过如下命令确定当前解串/串行器通道和摄像头的对应关系
root@tegra-ubuntu:/home/nvidia# media-ctl -p | grep des
<- "des_1_ch_0":0 [ENABLED]
<- "des_1_ch_1":0 [ENABLED]
<- "des_1_ch_2":0 [ENABLED]
<- "des_1_ch_3":0 [ENABLED]
- entity 25: des_1_ch_3 (2 pads, 2 links)
- entity 28: des_1_ch_2 (2 pads, 2 links)
- entity 31: des_1_ch_1 (2 pads, 2 links)
- entity 34: des_1_ch_0 (2 pads, 2 links)
-> "des_1_ch_0":1 [ENABLED]
-> "des_1_ch_1":1 [ENABLED]
-> "des_1_ch_2":1 [ENABLED]
-> "des_1_ch_3":1 [ENABLED]
root@tegra-ubuntu:/home/nvidia# media-ctl -p | grep ser_
<- "ser_7_ch_0":0 [ENABLED]
<- "ser_6_ch_0":0 [ENABLED]
<- "ser_5_ch_0":0 [ENABLED]
<- "ser_4_ch_0":0 [ENABLED]
- entity 37: ser_4_ch_0 (2 pads, 2 links)
- entity 40: ser_5_ch_0 (2 pads, 2 links)
- entity 43: ser_6_ch_0 (2 pads, 2 links)
- entity 46: ser_7_ch_0 (2 pads, 2 links)
-> "ser_4_ch_0":1 [ENABLED]
-> "ser_5_ch_0":1 [ENABLED]
-> "ser_6_ch_0":1 [ENABLED]
-> "ser_7_ch_0":1 [ENABLED]
设置摄像头采集格式(C口/J21/CAM1)
media-ctl -d /dev/media0 --set-v4l2 '"des_1_ch_0":0[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"des_1_ch_1":0[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"des_1_ch_2":0[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"des_1_ch_3":0[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"ser_4_ch_0":1[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"ser_5_ch_0":1[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"ser_6_ch_0":1[fmt:YUYV8_1X16/1920x1536]'
media-ctl -d /dev/media0 --set-v4l2 '"ser_7_ch_0":1[fmt:YUYV8_1X16/1920x1536]'
打开摄像头进行视频采集
gst-launch-1.0 v4l2src device=/dev/video0 ! \
'video/x-raw,width=1920,height=1536,framerate=30/1,format=UYVY' ! \
videoconvert ! xvimagesink -ev
gst-launch-1.0 v4l2src device=/dev/video1 ! \
'video/x-raw,width=1920,height=1536,framerate=30/1,format=UYVY' ! \
videoconvert ! xvimagesink -ev
gst-launch-1.0 v4l2src device=/dev/video2 ! \
'video/x-raw,width=1920,height=1536,framerate=30/1,format=UYVY' ! \
videoconvert ! xvimagesink -ev
gst-launch-1.0 v4l2src device=/dev/video3 ! \
'video/x-raw,width=1920,height=1536,framerate=30/1,format=UYVY' ! \
videoconvert ! xvimagesink -ev
常见问题
Q1 H4xGMSL2转接板的安装槽位J21
H4xGMSL2转接板需安装在J21对应的槽位,该槽位的CSI信号线来自Orin Nano开发套件的J21接口,为CSI2 x4 Lane
Q2 v4l2常见命令的使用
### 安装v4l2命令
sudo apt update
sudo apt install v4l-utils
### 查看所有V4l设备
v4l2-ctl --list-devices
### 查看指定V4l设备
v4l2-ctl -d /dev/video0 --all
### 查看设备的v4l规范支持情况
v4l2-compliance -d /dev/video0
#### 查看所有支持的格式详情
v4l2-ctl -d /dev/video0 --list-formats
v4l2-ctl -d /dev/video0 --list-formats-ext
### 查看设备当前video的格式
v4l2-ctl -d /dev/video0 --get-fmt-video
### 测试视频流
v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat=RG12
v4l2-ctl --stream-mmap --stream-count=1 --stream-to=test_frame.raw