当前位置: 首页 > news >正文

解锁多路GMSL摄像头输入,基于瑞芯微RK3576的触觉智能硬件方案

本文介绍多路GMSL车规级高速摄像头输入,并详细剖析GMSL解串原理,附Demo适配教程与测试数据,基于触觉智能RK3576核心板方案,使用配套开发板Purple Pi OH2演示。

GMSL千兆多媒体串行链路

GMSL千兆多媒体串行链路,全称为Gigabit Multimedia Serial Link,由 Maxim(现并入 ADI)研发的车规级高速 SerDes技术。其核心优势在于,仅需单根同轴电缆或屏蔽双绞线,即可同步完成无压缩高清视频、双向控制信号与PoC同轴供电的长距离一体化传输,并能满足严苛的车规与工业级宽温、抗干扰和高可靠性要求。触觉智能针对此已适配相关方案Demo,可点我们B站视频了解:https://www.bilibili.com/video/BV1XQzTBME5L/?spm_id_from=333.1387

  • 应用场景

GMSL千兆多媒体串行链路,广泛应用于车载环视(CMS/AVM)、工业机器视觉及高端安防监控等领域。

  • GMSL摄像头 & AHD摄像头对比优势

GMSL原理说明

  • RK3576+GMSL方案架构

在第一章节已展示了基于RK3576平台实现4路GMSL摄像头同时采集并在显示器上预览相关实测,相关框图如下:

  • GMSL解串器介绍

GMSL解串器是 GMSL SerDes(串行器 / 解串器)对中的接收端核心器件,负责将单根同轴电缆或屏蔽双绞线(STP)传输的高速串行数据流,还原为 SoC可直接处理的视频 / 数据信号。本次案例使用的GMSL 解串器为MAX96724这款芯片,可将四路 GMSL2/1 输入转换为 1 路、2 路或 4 路 MIPI D-PHY 或 C-PHY 输出,即对应系统框图中的MIPI转GMSL转接板的功能。

GMSL 系统基本架构:

发送端(串行器 Serializer):将摄像头的视频信号、控制数据、音频等复合为高速串行流(GMSL2/GMSL1),通过单根同轴或 STP 电缆传输到GSML解串器。

接收端(解串器 Deserializer):接收串行信号通过时钟恢复、解码、解复用等操作,输出标准接口信号(MIPI CSI-2)至 SoC 处理器(RK3576),同时通过反向控制通道实现对远端设备的配置与管理。

  • GMSL解串基本原理与步骤

步骤1:GMSL 信号接收与均衡(AEQ)

SIOA/SIOB/SIOC/SIOD 是4路独立的GMSL高速差分输入通道,对应4路摄像头的GMSL串行输出。每路信号先经过AEQ(自适应均衡器),完成补偿长距离传输后的信号衰减、码间串扰,恢复高速串行信号的完整性,为后续处理提供可靠的输入。

步骤2:串转并(Serial to Parallel)

经过 AEQ(自适应均衡器)后,需通过SERIAL TO PARALLEL模块将串行比特流转换为并行总线格式,降低后续模块的处理速率压力,提升效率。

步骤3: 解码与解扰(Decode & Descramble)

GMSL 传输时为了抗干扰、优化频谱效率,会对原始视频数据进行解码、解扰:

解码(Decode):还原 8b/10b 等编码的原始数据(将传输的 10 位码转回 8 位有效数据)。

解扰(Descramble):消除传输时添加的伪随机扰码,恢复原始视频数据的比特序列。

步骤4: 视频拆分与转发控制(SPLIT VIDEO AND FORWARD CONTROL DATA)

四路 GMSL 输入的视频数据进入该模块,需完成数据流解析、同步对齐和拆分。识别不同通道的视频时序(如行同步、场同步),确保多路输入的时间一致性。分离视频数据与控制数据,将视频流分配到对应的 LINE BUFFER(行缓冲器)。

步骤5:行缓存(LINE BUFFER)LINE BUFFER 是 FIFO 缓冲器, 缓存一行视频数据,解决多路输入的时序差异(如不同摄像头的行频偏移) , 实现速率匹配,让后续聚合模块(VIDEO AGGREGATOR)能稳定接收数据 。

步骤6:视频聚合(VIDEO AGGREGATOR)

多路 LINE BUFFER 的输出进入VIDEO AGGREGATOR,将4路GMSL输入的视频流(或部分通道)聚合成 1~2 路符合 MIPI CSI-2 带宽的数据流(MAX96724 支持 2 路 MIPI 输出端口:PORTA、PORTB)并处理多摄像头的画面拼接、时序同步,生成统一的视频帧格式输出到隧道与像素控制器模块(TUNNEL & PIXEL CONTROLLER)。

步骤7:隧道与像素控制器(TUNNEL & PIXEL CONTROLLER)

像素控制器(PIXEL CONTROLLER):将步骤6聚合的数据进行处理像素格式转换(如 RGB/RAW 格式适配)、分辨率调整、时序校准,确保输出符合 MIPI CSI-2 的像素传输规范。隧道控制器(TUNNEL CONTROLLER)将像素控制器转换后的像素数据封装为 MIPI CSI-2 数据包,包括短包(同步包、控制包)和长包(像素数据包),添加包头、有效负载、校验位等协议字段最终输出到MIPI CSI-2 控制器模块(MIPI CONTROLLER + PORTA/PORTB)。

步骤8:MIPI CSI-2 控制器与输出(MIPI CONTROLLER + PORTA/PORTB)

MIPI CSI-2 控制器负责将隧道控制器输出的数据包通过MIPI D-PHY物理层发送,其中PORTA/PORTB:是 MIPI CSI-2 的物理输出接口,支持 1/2/4 lane 配置(如 PORTA 的 DA0-DA3 是数据 lane,CKA 是时钟 lane),输出符合 MIPI CSI-2 时序的高速差分信号,供主机SoC接收。

GMSL摄像头驱动&设备树适配

  • 驱动适配

(1)以MAX96724摄像头驱动为例,将max96724_isx031.c驱动拷贝至RK3576板子的kernel-6.1/drivers/media/i2c/目录下。

(2)修改Makefile文件

修改kernel/drivers/media/i2c/Makefile添加驱动编译支持:

obj-y += max96724_isx031.o

(3)替换头文件

替换内核默认kernel-6.1/include/media/v4l2-mediabus.h的头文件。

  • 设备树适配

代码参考如下,相关驱动、内核、设备树等资料,请关注深圳触觉智能CSDN获取。

功能测试说明

  • 硬件连接

负责监测和控制蓝牙开关状态,确保BLE功能正常启用。

使用扩展GPIO的11pin,13pin,15pin作为J25接口摄像头的power12v-gpios、power1v8-gpios、power1v2-gpios引脚,引脚对应的GPIO如下:

  • 查看支持格式

执行如下命令查看摄像头支持的像素格式:

  • gstreamer工具预览环视图像

使用gstreamer工具预览图像(RK3576 Debian12系统gstreamer不支持预览heigh 1300分辨率,取最接近且整除8的数值1296),命令如下:

# 预览J25接口 gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1296" ! videoconvert ! autovideosink gst-launch-1.0 v4l2src device=/dev/video1 ! "video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1296" ! videoconvert ! autovideosink gst-launch-1.0 v4l2src device=/dev/video2 ! "video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1296" ! videoconvert ! autovideosink gst-launch-1.0 v4l2src device=/dev/video3 ! "video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1296" ! videoconvert ! autovideosink

四路图像同时预览(基于Debian12系统测试):

#!/bin/bash gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1296, framerate=30/1 ! videoconvert ! xvimagesink render-rectangle="<0,0,950,720>" sync=false & sleep 2 gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw, format=NV12, width=1920, height=1296, framerate=30/1 ! videoconvert ! xvimagesink render-rectangle="<960,0,950,720>" sync=false & sleep 2 gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw, format=NV12, width=1920, height=1296, framerate=30/1 ! videoconvert ! xvimagesink render-rectangle="<0,550,950,490>" sync=false & sleep 2 gst-launch-1.0 v4l2src device=/dev/video3 ! video/x-raw, format=NV12, width=1920, height=1296, framerate=30/1 ! videoconvert ! xvimagesink render-rectangle="<960,550,950,500>" sync=false &

执行如下命令关闭预览:

killall gst-launch-1.0
  • 测试延迟数据

http://www.jsqmd.com/news/327201/

相关文章:

  • Flink数据倾斜解决方案:大数据处理的常见难题
  • Claude Code 完整学习计划
  • FA_融合和滤波(FF,fusion_and_filter)-PT滤波器
  • 第 1 章:认识 Claude Code
  • 完整教程:边缘计算:K3s 轻量级 K8s 部署实践
  • /go/src/github.com/samber/lo 切片转MAP
  • 图的遍历/存储
  • wchar_t与_T()
  • WideCharToMultiByte与T2A
  • springboot基于微信小程序的扶贫助农系统及其小程序的实现_3pi4tt74_zl003
  • 基于微信小程序的精致护肤购物系统的设计与实现_r9xwp2r9
  • 基于图像识别的智能垃圾分类系统设计与实现_jew30c27_xk054
  • 豆包“炒股”翻车,程序员该为AI的“幻觉”背锅吗?
  • 高并发图书下载服务架构实践:小哈图书下载中心
  • AI 时代,我们是在进化还是在“脑力外包”?
  • 基于微信小程序的咖啡店点餐系统_56v41c6q
  • 2026成都GEO优化公司排名专业测评,专注本地化AI优化
  • 高效进阶不踩坑!静流书站(windowsfront.com)承包程序员全阶段学习资源
  • CCF-GESP 等级考试 2025年3月认证C++一级真题解析 - 指南
  • 基于SSM的种子商店网站的设计与开发_ci5gjw6e_zl067
  • 基于SSM的生产设备信息管理系统的设计与实现_l1fn0xee_jz056
  • 寒假7
  • Steam土豆兄弟游戏开发学习案例记录——Unity
  • Flutter for HarmonyOS 图书管理系统登录注册:Provider状态管理+自定义Widget,打造高效用户入口
  • 河北省旅游网站(11852)
  • 沃尔玛购物卡回收时这些关键点需牢记
  • 基于ssm的社区外来务工人员管理系统_10vz9c0a_jz119
  • VGGT:视觉几何接地变压器 - MKT
  • 河北经贸大学勤工助学管理系统(11851)
  • Spring Boot 2 + Flyway 最佳实践:多数据库配置与迁移规范