缩略图

基于硬件加速的多核三维汽车仪表系统设计

作者

杨青春

惠州华阳通用电子有限公司 广东惠州

摘要:为满足工业中仪表盘的应用和显示要求,提出基于多核Cortex⁃A9硬件加速的三维汽车仪表系统设计方案。为了提升三维仪表的视觉效果,采用基于OpenGLES2.0的GPU硬件加速技术来提高仪表图形的渲染帧率。同时,对Linux内核做了优化,保证了图形运行时的流畅性。实验结果表明,该设计方案不仅能实时处理系统模块的信息,大幅降低CPU的使用率,且使三维汽车仪表更具真实感,达到了实际的测试要求。

关键词:三维全液晶仪表;GPU硬件加速;嵌入式Linux;Cortex⁃A9;汽车仪表系统;渲染帧率

引言

由于新能源车的持续发展,全电动车将成为今后汽车工业的一个重要发展趋势。在资讯显示上,对于全电型车辆而言,需要更多的是LCD。在未来的车载显示技术中,全LCD显示方式丰富,显示方式多样,人机界面友好,必将成为业界的主流。

本文针对某轿车企业开发了一种全新的三维车载显示系统,并在GPU上进行了一种新的集成式3D显示系统的开发。在此基础上,采用基于ARM的i.MX6Q作为系统的硬件开发平台,以Linux作为开发平台。通过采用高分辨率、高对比度的TFT(TFT)以及GPU的加速算法,将车辆的速度、档位、驾驶辅助等关键数据通过3D图像展现出来,与常规的2DLCD相比,具有更好的性能,具有更强的创新和真实感。

一、三维全液晶仪表平台介绍

车载的全LCD仪表集了常规仪器的全部性能,它以TFT—LCD液晶屏作为显示终端,在TFT—LCD上以图像和文本的形式显示了全面而复杂的信息,能够将速度,里程,功率电池电量,显示类和警报类等信息都能精确地显示出来。

在本论文中,我们使用的是车用ARMCortexA9四核iMX6Quad系列处理器。它的最高工作频段533MHz,内置三个硬件加速图形处理器(GPU),可实现三维硬件加速、二维图形绘制以及向量加速,适用于消费电子,汽车,工业等领域。内置1GBDDR3内存,8GBEMMC芯片;通过外部连接的高速FlexCAN组成车载控制网,实现对整车各个工况信息的采集和传送;外部安装TFT-LCDLCD屏幕,为3D-LCD设备的显示提供了平台;外部声控晶片,使使用者有需要时可发出警报。

(一)18/24bitLVDS液晶接口

本文液晶模块采用Hannstar⁃XGA7寸TFT⁃LCD,分辨率为1024×600,40pinLVDS接口。i.MX6Quad内置的LCD控制器包括用于传输图像的数据总线VD[23:0]和LCD_DCLK,LCD_ENAB_M,LCD_FP,LCD_LE,LCD_LP等必要的控制信号。i.MX6QuadLCD接口自带DMA控制器,不依赖CPU和其他系统功能而独立工作。

(二)FlexCAN总线接口

FlexCAN是一种基于嵌入式网络体系结构,对CAN总线进行了扩充。在设计中,使用了一种全新的CAN总线收发信机TJA1040,以及一个可以进行标准化和扩充的数据帧的单独的控制器,同时还可以通过干扰来保证CAN通讯的稳定性,并且能够提供最大限度地支持1Mb/s的传输速率。

二、基于硬件加速软件系统设计

(一)嵌入式系统架构

基于车辆的实用需求,以硬件成本及CPU运算能力为重要参照标准,研究了3D-LCD仪表的体系结构。它的内部网路设计充分考虑了每个子系统的功能要求,并对每个子系统的信息传送方法进行了灵活的选取,从而构成了一个经济、高效、可靠的车载通信网。

该系统以Linux系统为基础,系统结构分为四个层次:系统微内核,系统驱动层,数据接口层,人机界面层。在此基础上,系统的微核级工作包括:对Linux核心进行优化与管理,剪切掉多余的引导项目,以确保系统的快速引导;系统驱动层为整个软件开发过程中所需要的各种程序库以及不同的设备驱动程序;在数据接口层中,它负责对CAN总线发送过来的信息以及车载的有关信息进行采集,包括对电力电池电量的计算、车速的计算以及发动机的转速的计算等一系列的运算,并把这些处理后的结果传送给人机界面。在Qt/E一体化的开发平台上,结合OpenGLES3D渲染、QML和CPP的交互式界面,最终将其显示在TFT⁃LCD上,使用者还能操控仪表板,来挑选适合自己的行驶方式。

(二)配置开发环境

本项目以Linux为核心,以Linux3.0.35为核心,以Qt/E5.5.0为基础,以YoctoProject为平台进行了研究。YoctoProject体系结构中,可根据需要定制不同的客户定制层,包括定制层,BSP层,功能层,以及核心数据层。这篇文章选用了最近的1.8版编译和调试。在核心的管理方面,我们采用Eclipse的整合编译器,通过对跨编译环境的设置来实现对核心的优化。

利用模块化编程实现了三维车载全LCD仪表,移植性强,安全可靠。该系统的软件包括:CAN通讯,上电自检,3D显示,数据存储,以及故障诊断等几个部分。当系统开机后,先进行初始化,然后从内存中读出公用的资料,然后启动仪器的自检,以确保整个系统的运行。在完成了对车辆的电气自检后,该系统便启动了相应的工作,包括数据的存储,车辆信号的采样,CAN总线的发送与接收,以及3D图像的显示。在此基础上,将各工作按优先权排序,以确保高优先权的工作得到优先处理。

(三)内核快速启动优化

为了保证软件的可靠度,保证用户的操作流畅,需要对核心进行优化。Linux的整个启动过程通常要花费数十秒,这会让用户的使用感受变得很差,所以为了让用户能够更快地使用Linux系统,必须对其进行调整。

本文从以下三个方面减少内核的启动时间:

1)性能优化

启用MMU和L2缓存,内存集和内存;启动SDMA,加速NORFLASH文件的读出;使用基于uSDHC的ADMA芯片来改善SD卡的读写速度;对_memcpy_fromio函数进行了优化。

2)系统启动时移除不必要模块

在U–BOOT过程中,UART不能将参数传送到内核,并将消息输出到U–boot过程;删除启动u启动所需的延迟;禁用非关联项目,如I2C,NET。

3)内核启动后立即开始主程序

一般来说,在系统启动之后,sysinit脚本会被首先执行,为用户过程的初始化做好准备,大约需要1到5秒的时间,这样你就可以在你的电脑上找到你想要的东西。在/etc/rc.d/rcS中进行了相应的修改。

(四)显卡的加速技术

在嵌入式系统中,由于GPU的高速运算能力得到了极大的提升,过去单纯依靠CPU进行运算的方式正逐步被GPU所取代。车载三维仪器测试平台具有高度集成、3D动态绘制及高实时性等特点,单纯依赖CPU来实现其功能已成为一种“左转右转”。所以,在OpenGLES2.0基础上,利用GPU的加速技术来实现GPU的高速化是非常必要的。

三、试验成果与评定

利用以上的硬件平台体系架构,以及数据处理的体系架构,实现了一种面向整车的3D车载显示设备的开发。在此基础上,我们将利用Linux操作系统与Qt/E相结合的方式,将QML与OpenGLES优秀的接口绘制技术相结合,实现了基于高精度TFTLCD的人机交互接口的实时显示。

在平均CPU占用率不高于15%的情况下,进行了硬件加速;当使用了软件提速后,CPU的使用比例上升到了30%。测试结果显示,在硬件加速情况下,VSZ(VSZ)利用率明显下降,而在渲染过程中,由于采用GPU来实现渲染,所以所需CPU所占的份额更少。可以看出,采用硬件图像加速技术可以减轻CPU的负担,节省系统的虚拟存储空间,提升计算效率,获得较好的加速比率,使得图像的显示性能翻一番。

四、结束语

为了适应工业上对仪表板的使用与显示需求,本文提出了一种基于硬件加速的多核心三维车载仪器方案。采用软、硬件相结合的方法,使3D全LCD仪表具有实时、快速、流畅的显示结果。随著嵌入式装置与LCD科技的持续进步,全LCD将提供更佳的显示品质与可视化的互动体验。

参考文献

[1]陈新,蒲庆文.基于emWin图形库的电动汽车液晶仪表设计[J].仪表技术与传感器,2013,(7):105-107,110.

[2]江学焕,张金亮,樊红莉,等.基于CAN/LIN双总线电动汽车数字仪表系统的设计[J].计算机工程与科学,2015,37(11):2182-2187.