基于嵌入式Linux与QT的汽车虚拟仪表设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要:为了简化汽车内部控制系统,降低汽车制造成本,提高人车交互界面的友好度,设计并实现了一种新型的汽车虚拟仪表。采用以arm处理器s3c6410为核心的硬件平台和以嵌入式linux系统为核心的软件平台,并在此基础上采用开放源代码的图形界面库qt开发仪表终端应用程序。经实验验证,虚拟仪表系统具有成本较低、界面友好、反应灵敏等特点,并在跨平台性、可扩展性等方面得到了显著改善。
关键词:汽车;虚拟仪表;嵌入式linux; qt; arm
引言
仪表作为汽车整个系统中十分重要的部分,是提高汽车综合性能的重要方面之一。随着计算机软硬件技术、总线技术、电子技术等的快速发展,控制系统臃肿、接线布线复杂、占用空间大的传统电磁机械仪表渐渐被淘汰,虚拟仪表正以传统机械仪表无法比拟的速度迅猛发展[1]。目前虚拟仪表通常包括纯数字仪表和虚拟仪表盘仪表2种:纯数字仪表成本较低,但功能和界面比较简单,满足不了一般驾驶员的需求;而现有的虚拟仪表盘仪表虽然功能和界面比较丰富,但又存在着开发成本高、可移植性和可重绘性差、可扩展性不足等缺点,不利
于大范围的推广与应用[2
3]。
针对传统仪表和现有仪表存在的不足,本文提出了一种新型的车载虚拟仪表设计方案,采用arm处理器s3c6410为核心的硬件系统为核心的软件平台,并在此基础上采linux平台和以嵌入式
用开放源代码的图形界面库qt开发仪表终端应用程序。该虚拟仪表可读性好,读数精度高,在可移植性、可维护性和成本方面都得到了良好的改善,具有较大的科研价值和商业使用价值。
1系统总体设计
本文所介绍的车载虚拟仪表的基本设计思想是将汽车上安装的各种
传感器采集到的数据进行智能化的处理,然后在运行于嵌入式linux 系统的使用qt设计的虚拟仪表盘上进行显示,以便于监测汽车各系统的工作状况,如剩余油量、当前车速、行驶里程等,并在某状态出现异常或存在危险时向驾驶员提示报警。
如图1所示,本车载虚拟仪表系统的设计总体由3个部分组成:(1) 信号采集:对汽车上安装的的各种传感器采集的速度、剩余油量等汽车状态信息,经过处理转换后,将其转换为计算机可以识别的数字量;
(2) 数据处理:将“信号采集”过程传输来的数据进行必要的处理,将有用的数据保存,以便于显示和报警,本过程主要由嵌入式处理器完成;
(3) 人机交互:将“数据处理”过程处理完成的数据,在使用qt设计的虚拟仪表盘上动态显示,主要显示内容有:当前速度、燃油箱的存油量、时间日期、行驶里程、报警灯等;在某项状态出现异常时,
通过报警模块向驾驶员提示报警。
虚拟仪表硬件设计2虚拟仪表系统结构框图1图
虚拟仪表的硬件结构图如图2所示。虚拟仪表的核心处理器采
arm1176jzfs核的s3c6410用芯片,其主频最高可达到667
mhz,内部继承了强大的多媒体处理单元,带有3d图形硬件加速器,并支持2d图形图像的平滑缩放等操作,有利于为用户提供高灵敏度的汽车状态动态显示;外接256 mb sdram和2 gb
nandflash;串口连接信号转换处理模块,转换处理模块内部集成canrs232转换器及24位的a/d转换器ltc2414,接收相关传感器采集的各种汽车状态信号,并经过处理后,将处理完成的数据上传至处理器;外接lcd模块采用8寸tft液晶显示屏,处理器内部集成的lcd控制器信号线经过驱动电路后即可连接lcd模块,为虚拟仪表显示提供了硬件平台;外接由语音芯片组成的报警模块,在必要的时候可以由处理器驱动报警模块以语音的形式向驾驶员提示报警。
图2虚拟仪表的硬件结构图3虚拟仪表软件设计
本系统采用嵌入式linux作为操作系统,在linux平台下编写虚拟仪表的驱动程序和应用程序,采用qt/embedded设计虚拟仪表软面板。应用程序的主要功能有,当接收到各个经转换处理的传感器采集到的信号后,将其有用的数据提取并加以存储,然后调用仪表显示程序,将需要显示的内容显示到不同的虚拟仪表盘中,同时并行判断各项参数是否正常,若出现异常则调用语音报警程序和显示程序提示报警。虚拟仪表软件结构图如图3所示。个内容:开发环境的搭建、虚拟仪
表2虚拟仪表软件开发主要有.
应用程序的设计[4]。
图3虚拟仪表的软件结构图3.1开发环境的搭建
为了开发满足功能的应用程序,本文采用的软件开发环境是vmware workstation 7虚拟机和fedora 13 操作系统,在此环境
linuxgcc 4.5.1arm中安装交叉编译器,用来完成包含相关驱动程序的虚拟仪表系统内核、qt库和应用程序的编译;编译安装
qt/embedded库,用来支持虚拟仪表人机交互界面程序的开发并生成虚拟仪表系统中需要的qt库文件;编译tslib触摸屏库,为虚拟仪表系统添加触摸屏支持;在fedora13系统中安装qt
creator软件,用于完成虚拟仪表系统应用程序的开发;移植嵌入uboot;编写硬件平台相关驱动[5],式设备的系统引导程序然后裁剪编译linux2.6.10内核并在其中加载已编译的相关驱动[6];制作硬件平台需要的根文件系统,在其中移植已配置、编译过的tslib库和qt/embedded库[7]。
3.2应用程序开发
本虚拟仪表系统的的应用程序基于qt/embedded平台,使用qt的轻量级集成开发环境qt creator完成开发,最后在已搭建的开发环境中编译生成可执行二进制文件,并将其移植到硬件平台中的文件系统中进行测试。
虚拟仪表系统应用程序的主要工作流程如图4所示,在系统上电要实现汽车虚拟仪表系统的功能,应用程,应用程序开始运行,后
序需要完成虚拟仪表面板和后台处理程序的开发:
3.2.1虚拟仪表面板的绘制
虚拟仪表面板主要将汽车的一些基本状态在lcd上通过表盘和数字直观、动态的显示出来,本设计中采用速度、油量、电池电量、时间日期、安全带、安全气囊、行驶里程等状态。
为了提高本虚拟仪表的可扩展性和可维护性,在本设计中,为每种具体的虚拟仪表对象定义一个抽象类。下面即以仪表盘类(qmeter)为例介绍本系统中虚拟仪器面板的绘制。
图4系统软件工作流程图在需要显示的各种状态中,速度和油量通常以仪表盘形式显示,虚拟仪表模块中的虚拟仪表盘采用qt的二维图形引擎的基础类qpainter开发。qpainter具有丰富的图形图像绘制函数,并支持反走样、渐变填充、像素混合、线性变