基于PCIe总线的车载高速网络设计与实现

2023-01-06 09:22曹坤泽杨朝阳
汽车实用技术 2022年24期
关键词:传输速率内核车载

曹坤泽,杨朝阳,周 奎,彭 强

基于PCIe总线的车载高速网络设计与实现

曹坤泽1,杨朝阳1,周 奎2,彭 强3

(1.湖北汽车工业学院 汽车工程学院,湖北 十堰 442000;2.湖北汽车工业学院 汽车工程师学院,湖北 十堰 442000;3.湖北汽车工业学院 电气与信息工程学院,湖北 十堰 442000)

为了满足自动驾驶汽车在行驶过程中对摄像头数据传输高速可靠等要求,设计了一种基于PCI-Express的高速实时视频传输系统。硬件上选用两块NXP的SBC-S32V234开发板作为PCIe的节点,端点(End Point, EP)通过MAX9286解串器连接路摄像头进行视频采集,完成摄像头串行接口2(Camera Serial Interface-2, CSI-2)与PCIe的协议转换;根联合体(Root Complex, RC)一端作为数据接收端,接收EP端发送过来的视频;EP与RC之间通过两块透传芯片连接,两块芯片之间进行透明传输。软件上对嵌入式Linux系统进行了构建与部署,并设计了摄像头驱动程序与PCIe发送的应用程序。测试结果表明,PCIe传输速率最高达到1.5 Gb/s,实现了视频数据高效、稳定、低延时传输,为车载视频传输提供一个新的解决方案。

Linux系统;PCIe通信;摄像头驱动;视频传输;车载高速网络

随着自动驾驶汽车的不断发展,对摄像头视频采集帧率和分辨率的要求不断提高[1],进一步增加了车载摄像头的数据带宽,这对摄像头传输性能提出了更高的要求。某自动驾驶企业提出要求实现车载八路高清摄像头的低延时、高画质视频传输。

传统车载网络主要包括局部连接网络(Local Interconnect Network, LIN)、控制器局域网络(Controller Area Network, CAN)、FlexRay[2],其优点是实时性高,但带宽普遍较低,FlexRay的带宽(2×10 Mbit/s)相较于CAN(1 Mbit/s)、LIN(19.2 Kbit/s)总线的最大带宽有了较大提高,但也无法满足高带宽的摄像头数据传输。近年来,以太网逐渐成为汽车网络主干,视频传输也大都基于以太网进行传输,相关视频实时传输延时在200 ms~500 ms不等。冯云婷等[3]采用百兆以太网基于用户数据报协议(User Datagram Protocol, UDP)实现了视频传输,但视频传输实际带宽只达到54 Mbps,视频帧率只有10 fps~12 fps。吴胜兵[4]、李昌远[5]采用H.264编码的方式来降低车载以太网视频传输的带宽,但在网络环境差的情况下,摄像头视频传输过程中因压缩码率而导致视频质量差。

基于以上研究,传统车载网络、百兆以太网均无法满足企业要求的八路高清摄像头的带宽需求及性能要求。PCIe总线使用了高速差分总线,能够使用更少的信号线就可以达到需要许多单端并行数据信号才能达到的总线带宽,具有更高的传输速率和稳定性[6-7]。因此本文提出采用PCIe总线的车载高速视频传输方案。

本文以PCIe车载高速网络为研究对象,采用NXP的SBC-S32V234开发板作为控制器,实现摄像头驱动设计、摄像头采集、PCIe高速传输通道的开发,实现摄像头采集的图像数据以PCIe1.0 Gen1模式的传输速率稳定传输,并通过连接两块透传芯片,解决了PCIe传输距离过短的问题,可实现远距离传输。

1 系统整体架构

1.1 硬件架构

PCIe高速视频传输系统硬件主要由两块SBC-S32V234开发板、两块MAX9286解串器、8路AR0143摄像头以及两块透传芯片组成。系统的硬件架构如图1所示。

图1 整体硬件架构图

协议转换芯片选用NXP的SBC-S32V234作为主控芯片,并作为PCIe链路的EP端点,八路摄像头采用两片吉比特多媒体串行链路(Gigabit Multimedia Serial Link, GMSL)四通道解串器MAX9286作为视频解串器,将视频数据汇总后由两路CSI-2总线发送给主控芯片上进行数据协议转换,将转换后的视频数据通过两块透传芯片之间的HDBASE-T接口透明传输发送至另一块SBC-S32V234上(RC端),并将视频显示到显示屏上。

1.2 软件架构

本文所设计的PCIe高速视频传输系统以NXP的S32V234芯片作为平台完成嵌入式Linux系统的构建与部署,并在嵌入式Linux系统下完成底层摄像头驱动开发、上层视频应用程序设计。软件架构如图2所示,由应用程序、链接库、驱动程序等部分组成。链接库主要用到了C库、多线程库、传感器设备接口(Sensor Device Interface, SDI)库以及摄像头驱动开发所用到的摄像头用户库和特定传感器库。驱动主要包括I2C驱动、摄像头驱动、CSI驱动以及PCIe驱动。

图2 软件架构图

2 硬件设计

2.1 电源供给

电源供给系统输入电压为12 V,输出电压 12 V/5 A为解串器MAX9286供电,12 V/8 A为S32V234开发板供电。设计15 V防涌浪、防反接以及共模电感滤波(330 μH)对电源进行防护。系统电源供给电路如图3所示。

图3 电源供给电路图

2.2 摄像头接入设计

八路摄像头采用两块解串器MAX9286与S32V234开发板相连。MAX9286为四通道GMSL解串器,基于LVDS传输,同时支持四路摄像头数据传入。摄像头与解串器采用信号同轴线缆连接,接口部分采用公头的FAKRA连接。

MAX9286数据采用CSI-2输出,每通道的传输速率为80 Mbps~1 200 Mbps,带时钟展宽用于系统上电和验证的外设功能,内置PRBS检测器,用于串行链路的BER测试以及2个专用GPIO端口,严格满足汽车工业要求。

S32V234开发板提供两路与MAX9286数据板对接的MIPI-CSI接口,可直接对接MAX9286,并对MAX9286数据板及摄像头提供工作电源与时钟。

2.3 S32V234与透传芯片连接设计

S32V234开发板提供标准的M.2接口形式的MINI-PCIE(PCI EXP 52)。但透传芯片扩展接口板提供的是Finger形式的PCIE x4和Slot形式的PCIE x8无法直接相连,需要外接MINI-PCIE转PCIe转接卡。连接方案如图4所示。

图4 连接方案

3 软件设计

3.1 摄像头驱动开发

驱动程序分为内核空间和用户空间,控制器内核版本为Linux4.14。以注册I2C设备为例,在内核空间下,要注册一个新的I2C设备,必须调用CAM_ClientAdd()函数,在CamI2cCfg_t结构体指针中提供传感器细节,如果没有返回0,则注册成功。摄像头结构存储在驱动程序内核空间的一个双链表中。这些句柄用作摄像头设备的通用标识,并传递给用户空间。摄像头驱动主要用到的内核级应用程序编程接口(Application Program- ming Interface, API)如表1所示。

摄像头驱动程序包含一个用户空间库,用于用户在应用程序中抽象内核空间API访问。用户库也是特定于设备的代码,它为特定传感器实现用户空间驱动程序。摄像头驱动程序用户级API的定义如表2所示。

表1 内核级API

表2 用户级API

将上述函数编译并打包成ko驱动,在Linux内核中加载驱动,应用程序通过访问用户空间的API来嵌入到内核空间,实现摄像头的调用。

3.2 应用程序设计

EP设备与RC设备之间的数据传输采用内存映射的方法,即把PCIe设备空间映射到存储地址空间,图5为一个完整的RC与EP空间映射模型。图中outbound表示存储器域访问PCI域,发起访问的一侧需要进行outbound去访问对端;inbound表示PCI域访问存储器域,被访问的一侧需要进行inbound,使得对端能够访问。RC端要通过PCIe链路读取EP端摄像头数据,RC端需要配置outbound(在内核中已配好),EP端需要配置inbound,从存储器域地址0xc1000000 inbound到PCIe的基地址寄存器BAR2(0x72000000),这样就建立了RC端0xc2000000到EP端0xc1000000的映射。EP端将摄像头数据写入到物理地址0xc1000000中,RC端即可通过访问物理地址0xc2000000来获取EP端的摄像头数据。

图5 EP与RC相互访问

PCIe控制器提供直接存储器访问(Direct Memory Access, DMA)功能[8],为了提高PCIe总线数据传输的速率,选用DMA的数据传输方式来批量地异步数据传输。配置设备的DMA寄存器,EP端分配的DMA缓冲区的地址通过inbound 映射到设备的PCI域中,实现了PCIe的DMA传输。DMA数据传输不需要CPU介入,大大减轻了CPU的负担,实现更高效率的传输,有效提升了系统的传输性能。

EP端应用程序设计用到了数字分量串行接口(Serial Digital Interface, SDI)库、C库和多线程库。SDI库是由NXP 官方用于摄像头程序开发的VSDK1.5中提供的控制图像数据输入的库。为了控制摄像头硬件,SDI使用驱动程序中提供的API。为了方便图像数据的存储和管理,SDI库提供了Opencv库中cv::UMat 1:1克隆的SUMat图像数据容器来对帧缓冲区进行操作。EP端应用程序采用多线程的方式进行图像抓取与PCIe发送。图像抓取在主线程里完成,PCIe发送在发送线程里完成。EP端与RC端握手成功后,将获取的图像数据发送至RC端,通过按键来控制发送第几个摄像头的图像数据。EP端应用程序流程图如图6所示。

图6 EP端应用程序流程图

RC端应用程序同样用到了SDI库、C库和多线程库。RC端与EP端握手成功后,将EP端发送过来的一帧视频数据保存到SUMat图像容器中,并显示到显示屏上。RC端应用程序流程图如图7所示。

图7 RC端应用程序流程图

4 视频传输系统测试

系统实物图如图8所示。

图8 系统实物图

两块开发板用PCIe线与透传芯片连接好后, u-boot对PCIe设备进行扫描,启动Linux内核,加载PCIe驱动,完成连接PCIE链路、设置中断节点、PCIE主桥的挂接后, Linux内核开始进行总线扫描。通过串口终端可以查看内核打印信息,RC端打印信息出现PCIe link up则表示两个设备之间PCIe链路正常连接。如图9所示,EP与RC设备链路正常连接,PCIe模式为Gen1模式(对应PCIe1.0 x1宽度的PCIe链路),理论上最大传输速率为2.5 GT/s,可用带宽为2.0 Gb/s(250 MB/s)。

图9 RC端内核打印信息

EP设备连接8个摄像头,将采集到的摄像头数据存放在摄像头buffer中,通过DMA方式传输到PCIe数据域中并发送给RC设备。RC设备通过PCIe接口接收到摄像头数据后,把摄像头数据从PCIe数据域读出然后再显示。

对于PCIe实际传输速率采用以下计算方式:

Rate=(Picture_Size/Period_sec)×1.25×109/1 0242

Rate表示实际传输速率,单位为MB/s;Picture_Size为一帧720 p两通道图像的大小,单位为byte;Period_sec为一帧图像传输的时间开销,单位为纳秒;PCIe1.0采用 8b/10b编码方案,每传输8个bit,需要发送10个bit,因此要乘以1.25。经测试得到PCIe实际传输速率稳定在 180 MB/s(1.4 Gb/s)以上,最高达到1.5 Gb/s。

图10为RC端显示的一路摄像头视频,并对视频延时进行了简单测试。图中测试照片显示,视频延时时间稳定在130 ms,相较于以太网传输的视频延时有了较大的提高。由于PCIe的高带宽,视频采集的原始数据,直接通过内存映射到视频接收端,不像H.264编码传输技术受到码率、网络环境的影响造成视频出现马赛克、卡顿等现象,因此视频质量更高。

图10 视频显示与延时测试

5 结论

本文所设计的PCIe车载高速实时视频传输系统,软硬件设计具有很强的通用性,应用场景广泛,且通过长时间运行测试,具有稳定的视频传输效果。视频延时时间降低到了130 ms,相比于百兆局域网的延时200 ms~500 ms,具有很大提升。EP设备与RC设备之间通过中继芯片连接,中继之间采用最长可达十五米的双绞线连接,解决了PCIe线过短,无法远距离传输的问题,拓宽了系统的应用场景,且中继芯片不需要程序编写,上电即可使用,简化了开发过程,具有很强的通用性。PCIe传输速率最高达到了1.5 Gb/s。由于八路摄像头占据了一定的系统总带宽,没有达到PCIe Gen1模式理论能够达到的250 MB/s的可用带宽,但完全可以满足自动驾驶汽车在行驶过程中对摄像头数据传输高速可靠等要求,且控制器采用PCIe DMA的传输方式,大大减轻CPU的负担,提高了系统的传输性能,为今后车载信息传输提供了一个高效可行的方案。

[1] 李上峰.基于PowerPC的高速传输技术研究[D].西安:西安电子科技大学,2017.

[2] 吴晨晓.汽车网络通信总线现状及发展[J].汽车实用技术,2019,44(2):203-204.

[3] 冯云婷,张军,毛紫荆.实时以太网视频传输系统的设计[J].天津职业技术师范大学学报,2021,31(4):40-44, 51.

[4] 吴胜兵.基于海思Hi3521A芯片H264编解码视频传输[D].成都:电子科技大学,2020.

[5] 李昌远.基于车载以太网的多媒体系统应用研究[D].长春:吉林大学,2017.

[6] 徐健,张建泉,张健.基于PCIE非透明桥的嵌入式异构平台设计[J].微电子学与计算机,2018,35(1):26- 30.

[7] 孙铭.嵌入式平台中的PCI Express总线技术研究[D].西安:西安电子科技大学,2015.

[8] 曹科庭.基于PCIE的DMA高速数据传输控制器的设计与实现[D].成都:电子科技大学,2015.

Design and Implementation of High-speed Network Based on PCIe Bus

CAO Kunze1, YANG Zhaoyang1, ZHOU Kui2, PENG Qiang3

( 1.School of Automotive Engineering, Hubei University of Automotive Technology, Shiyan 442000, China;2.Institute of Automotive Engineers, Hubei University of Automotive Technology, Shiyan 442000, China;3.School of Electrical & Information Engineering, Hubei University of Automotive Technology, Shiyan 442000, China )

In order to meet the requirements of high speed and reliable camera data transmission during the driving process of autonomous driving vehicles, a PCI-Express high speed transmission system based on embedded Linux development platform was designed. On the hardware, two SBC-S32V234 development boards of NXP are selected as the nodes of PCIe, and the End Point(EP) is connected to an 8-channel camera through the MAX9286 serial decoder for video acquisition, thus completing the protocol conversion between Camera Serial Interface 2(CSI-2) and PCIe. The Root Complex(RC) end acts as the data receiver and receives the video sent from the EP end. The EP and RC are connected by two transparent transmission chips, and transparent transmission is carried out between the two chips. On the software, the embedded Linux system is constructed and deployed, and the camera driver and PCIe sending application program are designed. The test results show that the PCIe transmission rate is up to 1.5Gb/s, which achieves efficient, stable and low delay transmission of video data, providing a new solution for vehicle video transmission.

Linux system; PCIe communication; Camera driver;Video transmission;Vehicle high speed network

U469.72

A

1671-7988(2022)24-52-07

U469.72

A

1671-7988(2022)24-52-07

10.16638/j.cnki.1671-7988.2022.024.009

曹坤泽(1996—),男,硕士研究生,研究方向为汽车电子与智能驾驶,E-mail:1143775299@qq.com。

猜你喜欢
传输速率内核车载
多内核操作系统综述①
一种车载可折叠宿营住房
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
三星利用5G毫米波 实现创纪录传输速率
高速磁浮车载运行控制系统综述
微软发布新Edge浏览器预览版下载换装Chrome内核
奔驰S级48V车载电气系统(下)
车载GSM-R外置抗干扰设备
夏季滨海湿地互花米草植物甲烷传输研究