客 车 技 术 与 研 究
第1期 BUS &COACH TECHNOLOGY AND RESEARCH No.1 2021
作者简介:吴成加(1971 ),男,高级工程师;主要从事新能源汽车核心零部件关键技术及智能驾驶技术研究工作㊂
基于Linux 的客车全液晶仪表设计
吴成加,夏宇生
(安徽安凯汽车股份有限公司,合肥 230051)
摘 要:设计一种基于Linux 的客车全液晶仪表,采用恩智浦i.MAX6DL 处理器,使车辆信息比指针仪表的模拟信号更准确;通过Qt 进行显示UI 设计,车辆信息显示更加合理,提升了整车的智能化水平和驾驶体验㊂
关键词:Linux ;全液晶仪表;UI 设计;智能化中图分类号:U469.1;U463.7
文献标志码:B
buffer软件文章编号:1006-3331(2021)01-0036-04
Design of Full Liquid Crystal Instruments for Buses Based on Linux
WU Chengjia,XIA Yusheng
(Anhui Ankai Automobile Co.,Ltd.,Hefei 230051,China )
Abstract :A kind of full LCD instrument for buses based on Linux is designed with NXP i.MAX6DL proces⁃sor to make the vehicle information more accurate than the analog signal of the pointer instrument.The dis⁃play UI is designed through the Qt,the vehicle information display is more reasonable,and the intelligent level and driving experience of the vehicle are improved.
Key words :Linux;full-liquid crystal instrument;user interface design;intelligence 随着电子技术的发展,汽车液晶仪表得到了广泛应用㊂液晶仪表采用屏幕取代了机械指针㊁数字等现有仪表盘上最具代表性的部分㊂其优点是可满足不同的要求,更容易同网络㊁外设及其他应用相连接㊂还可实现多屏互
动,或与车载信息系统间的信息交互㊂仪表传感器数据由CAN 总线接口直接获取并进行显示,显示的数据比机械指针仪表更精确[1-4]㊂仪表可提供更多的显示区域,便于驾驶员识别,使驾驶员的视距不必在多个位置频繁切换,也有助于提升驾驶安全性㊂随着液晶技术的发展,液晶屏成本不断降低,性能日益提高㊂采用TFT-LCD 液晶显示屏作为汽车仪表的显示界面,将是未来的发展趋势与方向㊂
1 客车全液晶仪表系统设计
客车全液晶汽车仪表目前均采用1920×720高分辨率的12.3英寸显示屏㊂由于全液晶仪表的显示复杂度增加㊁需要动态的多媒体图像显示,普通单片机(MCU)无法驱动㊂仪表硬件部分采用MCU 和MPU 组合架构,MCU 负责处理车辆总线信息,MPU
进行仪表信息显示和图形处理㊂仪表的软件部分采用Linux 操作系统㊂在Linux 环境下,运行着一个图形用户界面应用程序,来实现仪表的信息显示㊂1.1 全液晶仪表硬件系统设计
全液晶仪表硬件由车辆信息处理㊁LCD 屏㊁显示信息处理㊁电源管理等单元组成,如图1所示㊂
图1 客车全液晶仪表系统组成示意图
1)车辆信息处理单元MCU 采用NXP 16位处理
器9S12X,MCU 采集外部模拟/数字信号的同时接收CAN 总线上的车辆信息,并将其解析后的数据发送给MPU㊂仪表的提示音信息由一个专用语音电路来
实现㊂该电路通过外部接口与MCU 相连接㊂当车辆状态发生变化时(如转向㊁报警㊁信息提示),由MCU 通过外部接口控制语音电路播放相应的语音信息到63
扬声器㊂
2)LCD为一个12.3″的TFT-LCD显示屏,其背光驱动电路由MCU来完成㊂9S12X处理器通过采集光敏传感器的信号及灯光信息,自动调节背光驱动电路Back Light的输出占空比,实现显示屏的背光调节㊂
3)显示信息处理与驱动单元硬件采用基于ARM Cortex TM-A9架构的高扩展性系列应用处理器(MPU)来实现㊂该处理器内集成的3D图形单元和视频编码/解码引擎㊁集成MIPI显示器端口㊁HDMI㊁LVDS等接口,十分适用于面向车载仪表的应用㊂结合客车仪表的控制需求,为实现车辆信息处理㊁控制的实时性需求,显示信息处理与驱动单元MPU采用恩智浦(NXP)i.MAX6A9处理器i.MAX6DL㊂该处理器内置一个图形处理器(GPU)㊂在进行图形显示时,启用GPU渲染加速可以提升图形加载速度,降低MPU处理器的负担,使系统运行更加流畅,显示图像的纹理压缩和凹凸映射贴图得到加强[5]㊂由于Linux 操作系统在运行时需要较大代码空间,系统采用2个256MB的DDR3SDRAM存储器并列,系统存储器EMMC为8GB闪存存储芯片㊂
4)为了给系统提供精确的上电/下电顺序㊁低压差㊁DDR或同步降压/升压功能,优化EMMC㊁DDR3㊁及i.MAX6系统电源效率,降低系统功耗,硬件系统还提供了电源管理集成单元(PMIC)㊂电源管理集成单元(PMIC)为系统内核电源提供可扩展㊁安全且灵活的电源管理方案㊂系统同时还提供了一个AHD接口的视频信号处理电路,将外部摄像头信号通过转换,在必要时显示在仪表盘上㊂
1.2 全液晶仪表软件设计
全液晶仪表软件分为Linux操作系统软件㊁Qt GUI软件㊁车辆信息处理软件三个部分㊂
1)全液晶仪表软件采用Linux开发环境来完成㊂MPU内运行着一个完整的Linux操作系统[6],Linux 的Uboot及内核镜像采用NXP ARM x86_64-linux交叉编译器编译后生成一个U-boot.imx及zImage镜像文件㊂在编译Kernel的同时,通过修改设备树Dts㊁Dtsi文件,对i.MAX6DL的内部设备㊁通讯㊁显示接口进行配置㊁编译后,生成用户设备树文件㊂为了在Ubuntu上创建一个最小化的Linux系统满足其特定需求,Linux的根文件系统采用Yocto Project进行构建[7]㊂Yocto项目通过OpenEmbedded构建系统提供了针对ARM㊁MIPS㊁PowerPC和x86架构的开源开发环境㊂Yocto内核使用GIT进行源代码管理,内核功能被组织成小的集合,方便深入定制化,支持多种内核开发流程和管理技术,并支持Qt(应用程序开发框架)运行环境㊂
Linux软件架构共分3层,如图2所示㊂软件底层为系统引导层(U-boot)及内核层(Kernel)㊂引导层主要
用于操作系统的引导加载㊁系统环境变量配置㊁添加设备树信息㊁引导Linux内核启动㊂Linux内核编译后生成的镜像压缩文件zImage保存在EMMC 中,系统上电及U-boot引导成功后,即进行内核层的启动过程㊂内核层的启动分为内核自解压㊁内核引导㊁内核初始化等过程㊂内核启动后,系统会解析chosen文件中的信息,完成设备和驱动的加载㊂软件的中间层为实时操作系统层(ROS)㊂在系统运行时,由操作系统对外部网络㊁磁盘㊁硬件接口进行访问,并对系统进程㊁异常处理㊁安全㊁用户图形等进行管理
linux操作系统镜像㊂
图2 客车全液晶仪表系统软件架构图
2)仪表的UI界面使用Qt Designer开发环境,对用户GUI进行设计,主要完成图片显示及信息采集㊁发送㊂GUI软件用户接口(全液晶仪表的显示界面)采用Qt进行设计,采用Yocto构建的Linux系统对Qt 的运行环境有着良好的支持[8-11]㊂仪表系统对显示APP采用Qt Designer设计出仪表UI界面文件,内部软件采用C++㊁QML混合编程,进行界面开发㊂由于Qt软件包含了OpenGel库,在仪表显示渲染2D㊁3D 矢量图形的跨语言㊁跨平台应用程序编程开发中,使仪表达到非常炫酷的显示效果和开机动画显示界面的实现㊂
3)车辆信息处理软件主要由MCU(9S12X)来完成㊂MCU采集仪表外部开关㊁传感器信息和车身CAN总线上的数据,并将信息解析,执行LCD屏之外
73
第1期 吴成加,夏宇生:基于Linux的客车全液晶仪表设计
的信息输出(音频输出控制㊁视频电路工作切换㊁背光自动调节等),将控制信息通过CAN总线传送给MPU㊂在车辆行驶过程中,MCU定时更新里程信息,将里程信息发送给MPU显示的同时,保存一份数据到外部存储器中㊂
2 全液晶仪表测试验证
2.1 全液晶仪表硬件测试
全液晶仪表的硬件测试包括EMMC㊁LCD屏LVDS驱动㊁USB OTG驱动㊁I2C驱动㊁CAN驱动测试等㊂这些设备的完整驱动文件保存在Linux文件系统的dev/和driver/子目录下,用户只需根据自己的实际硬件接口定义,在系统内核文件kernel/arch/arm/ boot/dts中到对应的设备树文件,在文件中配置好相应设备驱动的配置项,如设备参数㊁时钟㊁状态等,编译成dtb文件,在应用层代码中调用相应接口函数来实现硬件控制㊂在进行硬件测试时,可通过串口打印信息分析代码进程和内部状态,从而发现问题㊂如图3所示,硬件系统上电依次进行I2C㊁DRAM㊁MMC㊁LCD㊁UART检测,并跳转到指定分区,直至完成读取系统镜像文件㊁启动内核,表明硬件系统测试完毕㊂CPU:Freescale i.MX6SOLO rev1.2at792MHz
Reset cause:POR
I2C:ready
DRAM:512MiB
MMC:FSL_SDHC:0.FSL_SDHC:1,FSL_SDHC:2
Display:Hannstar-XGA(1920×720)
In:serial
Out:serial
switch to partitions#0,OK
c语言整活代码mmc2(part0)is current device
Normal Boot
Hit any key to stop autoboot:0
switch to partitions#0,OK
mmc2(part0)is current device
reading boot.scr
**Unable to read file boot.scr**
reading zImage
6574080bytes read in180ms(34.8MiB/s)
Booting
linux操作系统关机命令reading imx6d1-sabresd.dtb
35345bytes read in18ms(1.9MiB/s)
Dernel image@0×12000000[0×000000-0×645000]
##Flattened Device Tree blob at18000000
Booting using the fdt blob at0×18000000
Using Device Tree in place at18000000,end1800ba10
图3 系统硬件测试
2.2 全液晶仪表软件测试
软件的测试分为Linux操作系统㊁仪表的Qt GUI 软件和车辆信息处理系统三部分内容㊂
1)Linux操作系统测试包括U-boot㊁Kernel㊁ro⁃otfs文件系统测试㊂首先需要移植一个完整的Linux 操作系统,即对NXP提供的Linux操作系统进行裁剪,精简掉冗余的功能㊂然后要移植一个bootloader 代码,即U-boot,生成一个U-boot.imx文件,用于启动Linux内核㊂移植完U-boot后,再移植Linux内核(Kernel),生成zImage内核文件后进行系统引导及内核测试㊂仪表上电后,系统自动调用U-boot文件,并启动内核,通过终端打印输出信息,可以查看系统内部运行状态㊁调试信息,发现或查问题㊂一个完整的Linux操作系统由U-boot㊁Linux内核(Kernel)㊁和rootfs这三个部分构成㊂系统内核调试完毕后,还需要对根文件系统(rootfs)进行测试,根文件系统内包含了一些常用命令和文件状态输出㊂根文件系统的调试方法及步骤与Linux内核调试类似,通过在代码中设置不同条件状态,并打印输出到终端㊂系统运行时,可在终端上通过查看打印信息,来分析系统的运行状态,从而进行代码优化㊂
2)仪表的用户图形界面(GUI)测试㊂测试是在Linux操作系统中完成,且在系统启动成功之后进行㊂Linu
x操作系统根据etc/init.d/rcS内的文件配置,配置Qt的环境变量后由Linux系统自动调用Qt可执行文件,仪表的信息显示及信息刷新通过Qt API接口自动读取外部CAN总线的信息,经解析后在仪表上显示相应的信息内容㊂GUI动态显示测试是通过CAN卡发送报文信息来给仪表刷新界面,并将接收到的报文信息打印出来进行分析,如图4所示㊂
图4 仪表GUI测试CAN报文
卵巢囊肿会致癌吗3)仪表的GUI软件功能测试㊂主要通过Qt 5.6.3软件在计算机上进行仿真调试,将软件的构建方式配置为GCC64bit模式,在GUI界面设计完成并生成用户显示界面之后,需要将构建方式更改为ARM-Yocto/Profile方式进行编译,得到一个可执行文件,将其添加到系统根文件夹rootfs的指定目录下㊂
83客 车 技 术 与 研 究 2021年2月
为了在Linux 系统启动完成之后自动调用GUI 文件,需要在根文件系统中etc /Init.d /rcS 文件下添加Qt 运行需要的环境变量[12]㊁运行目录㊁运行命令㊂最终对rootfs 文件进行压缩,连同U-boot.imx㊁Linux 镜像zImage㊁设备树.dtb 文件一起放置到OTG 下载的目录中,再采用mfgtools 工具通过USB 接口将这些文件下载到i.MAX6DL 处理器的外设EMMC 中,完成操作系统的下载㊂仪表通讯接口接收CAN 网络发送数据,并实时解析后,在显示界面上进行相应显示,通过调整发送数据并观察仪表显示状态,进行相应的软件代码修改,直至所有显示功能测试完毕㊂
4)车辆信息处理系统测试㊂该测试通过仪表测
试台架来实现,编写MCU 控制及测试软件,烧写到处理器(9S12X)中㊂模拟系统运行时,系统通过采集测试台架上的各种车辆模拟信息㊁仪表系统外部传感器的工作状态㊁车身CAN 总线信息等,通过MCU 进行采集并处理后,由MCU 发送给i.MAX6DL 处理器,运行在Linux 环境中的Qt 应用软件通过API 接口获取i.MAX6DL 处理器接收到的信息并进行解析,得到仪表指针㊁报警图标㊁动态图标㊁文字信息㊁里程信息的控制量㊂2.3 测试验证
将仪表系统㊁测试装置接入测试样车,连接好外部电源㊁信号线㊁通讯线及传感器后开启电源,对车辆停驶状态下的仪表显示功能进行测试㊂仪表系统上电后的显示界面如图5所示㊂人为改变车辆的外部控制状态,并监测仪表的变化状态是否符合要求
㊂
图5 仪表显示界面
经实际静态测试验证,仪表报警指示灯显示状态,车辆信息显示状态,气压㊁水温㊁油量表的指示,里程及报警变化信息显示等与车辆的实际状态及变化一致㊂经实际静态测试验证,在不同车速及行驶状态
下,仪表界面实时显示的发动机转速㊁车速㊁里程变化等与测试装置的监测结果一致㊂达到了设计要求㊂
3 结束语
设计了一种基于Linux 系统的客车全液晶仪表;介绍了采用恩智浦半导体i.MAX6DL 处理器设计的全液晶仪表的硬件架构㊁嵌入式Linux 软件的设计思路㊁Qt Designer 开发环境下对用户GUI 进行设计的过程;实现了良好的人机交互效果,显示车辆信息更全面;提升了整车的智能化水平,为用户提供更加优质的驾驶体验㊂参考文献:
[1]付靓.汽车智能仪表虚拟测试系统研究与开发[D].重庆:
重庆交通大学,2011.[2]李俊.混合动力汽车车载液晶显示仪表系统研究[D].上海:同济大学,2006.
[3]基于Linux 的嵌入式LCD 驱动设计[N /OL].https:∥www.docin /p-623026838.html?docfrom =rrela.
[4]赵心.基于CAN 总线的新一代客车组合仪表研制[D].武
汉:武汉科技大学,2010.
[5]吴恩华.图形处理器(GPU)的发展㊁现状与展望[R].中国
科学院软件研究所,2005.
[6]孙振众.基于QNX 操作系统的汽车全液晶仪表开发[D].
哈尔滨:哈尔滨工业大学,2012.
[7]Yocto Project Quick Start Guide for Ubuntu[N /OL].https:∥wwwx-software /2012/02/09/.
[8]张旭.基于html5车载全液晶虚拟仪表面板研究与设计[D].成都:西南交通大学,2014.[9]Qt 在汽车开发中的应用[N /OL].https:∥www.sohu /a /212716309_391994.
[10]田磊.嵌入式Linux 系统中基于QT 库的应用程序设计[J].实验室研究与探索,2014,33(5):84-86,115.[1
1]刘伟.基于嵌入式Linux 和Qt /E 的数据采集系统的开发
与应用[D].徐州:中国矿业大学,2014.[12]Linux 系统下Qt 环境搭[N /OL].https:∥www.linuxidc.
com /Linux /2013-07/87576.htm.收稿日期:2020-03-11
svg无功补偿功能于原理9
3 第1期 吴成加,夏宇生:基于Linux 的客车全液晶仪表设计
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论