APP下载

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

2018-03-03杨二闯张卫东杨辉华高春阳

现代电子技术 2018年5期

杨二闯+张卫东+杨辉华+高春阳

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

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

中图分类号: TN99?34 文献标识码: A 文章编号: 1004?373X(2018)05?0124?05

Abstract: A design scheme of 3D automotive instrument system based on multi?core Cortex?A9 hardware acceleration is proposed to satisfy the application and display requirements of dashboard. In order to enhance the visual effect of 3D instrument, the GPU hardware acceleration technology based on OpenGLES2.0 is adopted to improve the rendering frame rate of instrument graphics. The Linux kernel is optimized to guarantee the fluency while graphics operating. The experimental results show that the scheme can not only process the information of system modules in real time, but also reduce the CPU usage greatly, and makes the 3D automotive instrument more realistic. The instrument satisfies the requirement of actual test.

Keywords: 3D full?LCD instrument; GPU hardware acceleration; embedded Linux; Cortex?A9; automotive instrument system; rendering frame rate

0 引 言

随着“智慧汽车战略”的提出,汽车趋于信息化、智能化方向发展。汽车仪表盘作为车内仪表的主要组成部分,是汽车内部信息传递的重要工具。此外,人们对汽车HMI(Human Machine Interface)的交互能力提出了更高的要求,全液晶仪表以其出色的显示能力和多样的显示方式逐渐替代了传统的指针式仪表[1]。目前,随着新能源汽车的不断发展,纯电动汽车将是未来汽车行业发展的一个主要方向[2],与传统的燃油类汽车相比,其需要显示的内容也有很大差别;在信息展示方面,纯电动汽车对全液晶仪表有更多的需求。在未来汽车仪表显示系统中,全液晶仪表以其全面的信息展示方式、多样化的显示模式和良好的HMI交互能力等优势将在行业里占领主导地位。

目前,国内电动汽车行业飞速发展,嵌入式芯片综合性能不断提高,人们对汽车仪表的显示性能和驾驶视觉体验的要求也随之提高。因此,车载仪表的研究者为了摆脱仪表显示加载速度慢、处理器性能差、图形渲染效果差等问题,提出各种全液晶仪表组合平台的解决方案用以解决这些问题。2011年,Android系统占领了移动电子领域,文献[3]设计了基于OBD协议的Android平台的二维虚拟仪表平台,给消费者带来了很好的视觉体验,但是由于系统本身特性以及启动时间过长等因素,在仪表盘领域很难得到推广;文献[4]设计了一款基于emWin图形库并采用Cortex?M3为主控芯片的二维电动汽车液晶仪表,且有良好的显示效果,但是处理器性能很难满足现今汽车复杂网络和全方位信息展示上的设计要求;文献[5]设计了双总线电动汽车数字仪表系统,优化了数据传输实时性差的问题,但其使用的工业串口屏注定了在界面显示上的劣势,类似地,文献[6?8]的方案同样出现了上述问题。可见,以上几种解决方案的不足之处集中在处理器性能、系统稳定性、数据实时性和图形处理等方面,很难满足汽车行业软件测试要求和用户对炫丽界面的要求。

目前国内还没有完整的文献提出关于三维汽车全液晶仪表的解决方案。本文为某汽车公司设计了一款三维汽车全液晶仪表盘,提出基于GPU硬件加速的三维全液晶仪表整体设计方案。该方案以ARM处理器i.MX6Q为硬件平台,嵌入式Linux操作系统为软件平台。采用高分辨率、高对比度的最新薄膜晶体管(TFT)技术和GPU硬件加速技术[9],实现了三维视像的关键驾驶信息展示,包括速度、档位和驾驶辅助等重要信息,比传统的二维液晶仪表显示更加出色,更富有创新性和逼真的空间表现。

1 三维全液晶仪表平台介绍

汽车全液晶仪表包含传统仪表的所有功能,以TFT?LCD液晶屏为显示终端,将全面的、复杂的信息以图形和文字方式显示在TFT?LCD上,可以准确清晰地显示速度、转速、里程、动力电池电量、指示类和报警类等信息。

三维全液晶仪表硬件结构图如图1所示。本文处理器采用汽车级ARM Cortex?A9四核i.MX6 Quad系列處理器。其最高运行频率高达533 MHz,同时内部集成了三个硬件加速图形处理单元(GPU),支持3D硬件加速、2D图形渲染和矢量加速,是先进的消费电子、汽车和工业多媒体应用的理想平台;外接1 GB DDR3和8 GB EMMC;外接高速Flex CAN构成车辆内部控制网络,接收汽车各种状态信号,并将采集到的数据传输到处理器;外接TFT?LCD液晶显示屏,为三维全液晶仪表提供显示平台;外接语音芯片,为用户提供必要的报警信号。endprint

1.1 18/24 bit LVDS液晶接口

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

1.2 FlexCAN总线接口

FlexCAN是一种扩展CAN总线功能的嵌入式网络架构。本文的CAN通信模块采用新型CAN总线收发器TJA1040和独立控制器,能发送和接收标准的和扩展的信息帧,并采用抗干扰措施确保CAN通信的稳定,最高支持1 Mb/s速度传输。

2 基于硬件加速软件系统设计

2.1 嵌入式系统架构

从汽车实际应用的角度出发考虑三维全液晶仪表盘系统架构设计,将硬件开销和CPU计算能力作为主要参考指标。其内部网络设计考虑各个子系统的功能需求,灵活选择各子系统数据的传输方式,从而组建经济、高效、可靠的汽车内部网络。

本系统基于Linux操作系统,系统架构分四层,如图2所示,分别为系统微内核层、系统驱动层、数据接口层和人机交互层。其中,系统微内核层的主要工作是对Linux内核的优化和处理,裁剪不必要的启动项,保证系统能够快速启动;系统驱动层提供系统完整运转所需的各类lib库和各种设备驱动;数据接口层主要是接收CAN总线传输进来的数据和车辆的相关信号,包含大量算法处理,如动力电池的电量计算、汽车时速计算、发动机转速计算等,并将处理好的数据传递到人机交互层;人机交互层由Qt/E集成开发环境设计,融合了OpenGL ES三维渲染、QML与CPP交互设计的HMI,最后通过TFT?LCD展示给用户,同时用户也可以对仪表盘进行操作,选择合适的驾驶模式。

2.2 配置开发环境

软件设计基于内核Linux 3.0.35和Qt/E 5.5.0开发,采用Yocto Project软件系统。Yocto Project架构中的用户自定义层由用户按需求定制,包括定制层、BSP层、特性层和核心数据层,并将应用软件通过Poky生成系统交叉编译链。本文选择最新1.8版本编译器交叉编译调试。在内核管理上,使用Eclipse集成编译器,并配置交叉编译环境,完成对内核的优化工作[10]。

三维汽车全液晶仪表采用模块化程序设计方案,具有良好的移植性和安全性。仪表软件流程如图3所示。系统软件主要由CAN通信、上电自检、三维显示、数据存储和故障诊断等功能模块组成。系统上电后首先完成初始化工作,从存储器中读取公共数据完成初始化后,开始进行仪表自检,从而保证系统正常工作。仪表上电自检通过后,系统开始创建并运行任务,具体任务有数据存储、采样汽车信号、CAN总线收发和三维显示。系统根据不同的优先级顺序进行任务调度,保证高优先级的任务被优先执行。

2.3 内核快速启动优化

针对系统的可靠性和图形界面运行的流畅性,内核的优化显得十分重要。一个完整的Linux系统启动过程常常需要几十秒的时间,这在汽车领域会降低客户的体验感,故对内核的优化用以保证系统的快速启动是接受Linux系统的首要条件。

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

1) 性能优化

使能MMU和L2_Cache、memset和memcpy;启用SDMA,加快从NOR FLASH中读取数据;采用uSDHC的ADMA提高SD卡的读取性能;优化内核arch/arm/kernel/io.c中的_memcpy_fromio函数。

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

在U?BOOT阶段,禁止UART向kernel传递参数和向u?boot进程输出信息;删除u?boot开机的延时时间;在u?boot中禁用I2C、NET等无关项。

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

通常在系统正常开机后会优先处理sysinit脚本,为用户进程做初始化准备,时间一般是1~5 s。如果在进入系统时直接选择进入主应用程序,必要的进程则在主应用程序内部初始化,将会节省很多时间,减少不必要的等待时间。具体文件在/etc/rc.d/rcS中做修改。

2.4 图形硬件加速机制

随着嵌入式芯片图形硬件加速性能的不断提高,以往完全靠CPU处理图形的方法逐渐被拥有优越性能的GPU代替[11]。三维汽车全液晶仪表平台是一个高集成度、3D动态渲染和实时性较强的复杂系统,仅依靠CPU完成这一复杂的显示任务和运算任务就显得顾此失彼了。因此,采用基于OpenGL ES 2.0的图形硬件加速机制就显得游刃有余。

该三维实现方案设计采用i.MX6Q处理器,支持3D硬件加速、2D图形渲染和矢量加速。同时,嵌入式Linux系统也对i.MX6Q处理器添加了GPU硬件加速驱动支持,使图形硬件加速达到更优越的性能。嵌入式Linux系统加载GPU模块驱动配置如下:

1) 使能Linux图形驱动

操作流程(eclipse环境):

1.编译内核,修改环境變量

$ ARCH arm CROSS_COMPILE arm?poky?linux?gnueabi?

$ PATH ~/fsl?release?bsp/build?x11/tmp/sysroots/x86_64?linux/usr/bin/arm?poky?linux?gnueabi

$ Build Project

2.选项Graphics supportendprint

$ Enable Direct Rendering Manager

2) 生成动态链接库

使用图形硬件加速必须要有相关的库文件,这些库文件从Yocto Project架构中编译内核获取,编译后生成用于支持OpenGL ES的动态库文件libEGL.so.1.0,libEGL.so.1,libEGL.so,vivante_drv.so,并把库文件(/usr/lib路径下)拷贝到应用所在路径下,完成路径索引。

3) 修改环境变量,使能GPU驱动

$ export PATH= yocto\lib\modules\iMX6Q

4) 测试GPU驱动是否安装成功

$ startx &

5) 测试三维全液晶仪表应用

$ export DISPLAY=:0

$ chmod +x 3DInstrument

$ ./3DInstrument?platform eglfs

如果显示“OpenGL renderer string: GC2000 Graphics Engine或“EGL_VENDOR = Vivante Corporation”,表明GPU硬件加速已经开启。运用GPU硬件加速机制,不仅优化了图形界面的显示,更极大地节约了CPU的使用率,而且提高了系统信息的处理能力。

3 测试结果及评价

本文采用上述系统硬件平台架构、数据处理的结构,为某汽車公司设计了一套三维汽车全液晶仪表系统。系统数据信息均通过FlexCAN节点获取,经过多核Cortex?A9处理器i.MX6进行数据的处理和图形的渲染,软件部分采用Linux操作系统和Qt/E集成开发环境,融合QML和OpenGL ES出色界面渲染设计方案,并使用高分辨率TFT?LCD实时显示HMI界面。

全液晶仪表盘显示的元素过多,介于篇幅不再一一列出。本文实现的三维实时(Real?time)渲染是基于三角形组成的三维模型,并把纹理(Texture)映射到三角形上的结果,可以通过分割三角形定义模型的细节来保证渲染质量,测试也是根据其渲染的三角形个数来呈现渲染的复杂度,最后通过图形渲染帧率、CPU使用率和虚拟内存使用率反应图形硬件加速结果,测试结果均值见表1。

由表1可知,硬件加速运算时,CPU的使用率均值不超过15%;在软件加速时,CPU占有率升至30%。实验结果表明,在硬件加速条件下,VSZ(虚拟内存)使用率显著降低,且图形绘制时占用的CPU比例较小,这是因为图形硬件加速运算时,使用GPU进行图形绘制。可见,硬件图形加速能够有效地缓解CPU的压力,节约系统虚拟内存,提高其运算效率,得到了很好的加速比,并使图形显示能力成倍的提高。

在嵌入式平台上进行测试时,基于完全加载三维模型的情况,仪表盘的稳定刷新频率达到50 f/s,得到较为理想的显示效果。三维仪表测试局部效果图如图4所示,三维仪表在嵌入式平台下整机测试,实际运行测试分辨率为1 024×384,测试的车辆信息有发动机转速、车速、电池电量、车门状态等,显示效果如图5所示。

4 结 语

本文设计了硬件加速的多核三维汽车仪表,满足工业中仪表盘的应用和显示要求。通过软硬件加速的结合,保证了三维全液晶仪表的实时性、快速流畅性的显示效果。随着嵌入式设备和液晶技术的不断发展,全液晶仪表将会达到更好的显示效果和视觉交互体验。

参考文献

[1] FU Zhigang, DING Xiaodong. Research on development trend of automobile electronic technology [J]. International journal of technology management, 2013(2): 20?22.

[2] 张文亮,武斌,李武峰,等.我国纯电动汽车的发展方向及能源供给模式的探讨[J].电网技术,2009,33(4):1?5.

ZHANG Wenliang, WU Bin, LI Wufeng, et al. Discussion on development trend of battery electric vehicles in china and its energy supply mode [J]. Power system technology, 2009, 33(4): 1?5.

[3] 蔡黎,代妮娜,邓明.基于OBD协议的Android平台汽车虚拟仪表设计[J].电子技术应用,2011(12):83?86.

CAI Li, DAI Nina, DENG Ming. Design of car virtual instrument based on OBD for Android [J]. Application of electronic technique, 2011(12): 83?86.

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

CHEN Xin, PU Qingwen. Electric vehicles LCD instrumentation design based on emWin [J]. Instrument technique & sensor, 2013(7): 105?107.

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

JIANG Xuehuan, ZHANG Jinliang, FAN Hongli, et al. A design of electric vehicle digital instrument system based on CAN/LIN dual bus [J]. Computer engineering and science, 2015, 37(11): 2182?2187.

[6] 安亚君,皮国瑞,杨玉逢,等.基于IV+SEP4020微处理器的汽车虚拟仪表的研究[J].仪表技术与传感器,2011(1):33?35.

AN Yajun, PI Guorui, YANG Yufeng, et al. Research of virtual instrument based on IV+SEP4020 microprocessor [J]. Instrument technique & sensor, 2011(1): 33?35.

[7] 吴森,张恒平,毛雅风.混合动力公交车仪表系统的开发[J].武汉理工大学学报(信息与管理工程版),2012,34(3):293?296.

WU Sen, ZHANG Hengping, MAO Yafeng. Development on instrument system for the hybrid bus [J]. Journal of Wuhan University of Technology, 2012, 34(3): 293?296..

[8] 李英.基于QNX硬加速的软控车载全虚拟仪表平台[J].电子技术应用,2012(10):129?132.

LI Ying. Software control auto fully virtual instrument cluster platform based on QNX hardware acceleration [J]. Application of electronic technique, 2012(10): 129?132.

[9] 王海清.嵌入式GPU硬件加速渲染的纹理传输优化及预取策略研究[D].长沙:湖南大学,2013.

WANG Haiqing. Embedded GPU hardware accelerated rende?ring textures transport optimization and prefetching strategy research [D]. Changsha: Hunan University, 2013.

[10] 田丹,李运喜,胡宁,等.基于Eclipse的嵌入式软件交叉调试[J].现代电子技术,2015,38(6):86?89.

TIAN Dan, LI Yunxi, HU Ning, et al. Cross?debugging of Eclipse?based embedded software [J]. Modern electronics technique, 2015, 38(6): 86?89.

[11] 郭云,康涛.基于嵌入式GPU虚拟仪表图形软件的实现[J].计算机系统应用,2012(10):47?52.

GUO Yun, KANG Tao. Virtual instrument software system of cross platform based on GPU [J]. Computer systems & applications, 2012(10): 47?52.endprint