车辆导航是一门融合了汽车、计算机、通信、交通、系统科学等领域技术的课题,一直是国内外众多高科技公司和高校研究的重点。
对比而言,国内的导航系统发展比较缓慢,在硬件制造、软件功能、电子地图等方面与国外都有较大差距,迄今为止,真正实用的高质量导航产品寥寥无几;而国外的导航系统虽然软硬件水平先进,但受电子地图数据库等因素的制约,也没有大规模进入国内市场。
近年来,嵌入式系统凭借强大的功能、小巧的体积、极低的功耗等优良特性得以突飞猛进的发展,逐渐渗透到了生活的各个方面,为车辆导航系统的发展带来了新的动力。
本文介绍了一种嵌入式车辆导航系统的设计方案,采用基于X86架构的ETX(EmbeddedTechnologyExtended)硬件平台和VxWorks嵌入式操作系统,在软硬件方面都能较好的满足导航系统的要求,具有良好的应用前景。
1、车辆导航系统的组成
对各部分简要介绍如下:
路径引导:引导用户沿着所规划的路径行驶;
人机接口:提供友好的界面允许用户与系统进行人机交互;
无线通讯模块:允许用户与监控中心等部门实时交换信息;
电子地图数据库:包含以预定格式存贮的数字地图信息,是系统的软件平台;
地图匹配模块:通过适当的匹配和识别过程来确定车辆在地图上的位置;
路径规划:根据地图数据库及实时定位信息帮助驾驶员规划路线;
定位模块:通过GPS、惯性导航系统或移动通信等方法对车辆进行定位。
结合实际的软硬件结构,本系统分成了四个层:最底层为硬件平台层,包含了ETX嵌入式CPU模块以及必要的传感器/子模块。
上面三层为软件层,其中设备驱动层在硬件平台和操作系统之间充当桥梁的作用,为上一层提供了与硬件设备无关的统一接口;VxWorks系统层提供库函数、应用程序接口、任务调度机制等为用户程序提供支持;应用软件层是用户自行开发的程序,这里主要包括电子地图和导航应用程序,也是本系统的核心部分。下面从硬件和软件两方面来对系统进行介绍。
2、系统的硬件结构
(1)CPU模块
车辆导航系统对硬件平台的要求为:小型化、低功耗、接口丰富,并能适应复杂的环境。本系统选用的ETX嵌入式CPU模块能够完全满足这些要求。它采用了IntelPentiumIII处理器,使用ACPI,APM1.2电源管理减低了功耗,使系统无需风扇装置散热。
此外它采用了VIAVT8603/VT82C686A芯片组、S3Savage4显卡和VIA-enhanced声卡,具有2个EIDE接口,支持UltraDMA/33,以及4个USB1.1,2个串口,1个EPP并口等。
ETX还提供了ISA总线接口和PCI总线接口,并具有看门狗,可以有效的解决死机问题。背面的4×100PIN总线定义了各种标准接口信号,使用时只需在母板设计对应的插座即可,开发起来非常方便
(2)串口扩展模块
考虑到系统需要多个串口(与上位机通信、接收GPS信息、收发短消息、与语音模块通信等),而ETX模块只自带了两个串口,故采用了TL16C554进行串口扩展。
它内部带有16字节收发FIFO的通用异步收发器,具有独立的收发控制电路控制4路标准的串行接口,通过软件可分别设置每一路的中断允许、波特率、数据帧格式等信息。
TL16C554与ETX的ISA总线相连,通过一片CPLD完成两者时序的转换。由于系统的中断资源比较紧张,而且考虑到各子模块的数据不是很频繁,因此采用了4个扩展串口共享中断的方案。
(3)路径引导模块
本系统通过语音方式进行路径引导,采用了安徽科大讯飞公司生产的XF-S3111中文语音合成芯片。它是利用嵌入式中文语音合成领域的最新研究成果——InterSound3.0中文语音合成系统设计的一款中文语音合成芯片,通过异步串口接收待合成的文本,直接合成为语音输出,体积较小,使用方便,是一种完整的物美价廉的语音解决方案。
(4)无线通讯模块
本系统的无线通讯部分采用了短消息方式,选用了深圳科灵通科技有限公司生产的短消息模块DTR2000。它主要由西门子公司生产的工业级GSM模块和一款高性能的处理器组成,可通过短消息功能实现无线数据传送的功能,且支持中文传输。其传输数据透明,协议简单,能够方便的进行模块之间以及模块与手机之间的通讯。
(5)其它
本系统采用了GPS定位方式,通过彩色LCD进行电子地图及定位点的显示,并采用了可与ETX直接相连的CF卡作为存储设备。
3、系统的软件设计
由于车辆导航系统对多任务性、实时性、稳定性的要求比较高,因此本系统采用了VxWorks嵌入式操作系统。它包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分,而且高度可裁减,只占用很小的存储空间,保证了其能以较高的效率运行于导航系统中。
VxWorks包括微内核wind、高级的网络支持、强有力的文件系统和I/O管理、C 和其他标准支持等核心功能。微内核wind处于VxWorks操作系统的核心,支持所有的实时特征:快速任务切换、中断支持、抢占式和时间片轮转调度等,能够很好的满足导航系统对实时性和多任务的要求。
本系统的软件功能分为VxWorks环境下的驱动程序和应用软件两部分。前者主要是对TL16C554驱动的开发,而其它设备(如显卡,网卡等)由于VxWorks自带了X86的相关驱动而不必涉及。TL16C554的驱动开发可参照VxWorks自带的串行驱动模板来进行,这里只简单描述一下开发步骤。
VxWorks系统的串行设备驱动不是直接挂在IO系统中,而是由虚拟设备ttyDrv在中间充当转换层。因此驱动需要根据系统接口实现驱动并挂到ttyDrv上。
首先需要修改config.h、sysSerial.c等文件中的相关参数,然后再编写具体的驱动程序实现设备的I/O操作,包括TL16C554的初始化函数、I/O控制函数、中断处理函数等。
这样,系统在初始化时就会将设备和驱动程序安装好,应用程序就可以按照与设备无关的统一方式进行I/O操作了。
应用软件开发包括电子地图和导航应用程序设计:
(1)电子地图的设计
电子地图的设计包括图形界面和地图数据库两部分。本系统通过VxWorks的WindML(WindRiverMultimediaLibrary)实现了电子地图的图形界面。
WindML主要是用来实现基本的图形、视频和音频技术以及设计标准设备驱动程序框架,它提供了一个统一的图形硬件接口以及处理输入设备和输入设备事件的能力。电子地图数据库的数据结构采用了Arc—Node结构。
该结构的基本原理是采用“以直代曲”的思想,即在允许的精度范围内,通过加入多个节点将现实中的真实道路用一系列线段来模拟或近似表示,整个道路网络就是由Arc(小段的线段)和Node(Arc的两个端点)组成,并具有明确的拓扑关系,可以实现路径规划。本系统实现了北京市四环以内的电子地图,并实现了地图浏览、地点查询、路径规划等功能。
(2)导航应用程序的设计
导航应用程序包括了对电子地图的操作、GPS定位、收发短消息、语音提示、人机接口等功能的实现。在设计中,根据VxWorks提供的良好的多任务特性,将不同的导航功能模块分给了不同任务去执行,通过任务间通信机制保证多任务的同步。其中系统的主任务负责实现硬件设备的初始化(如串口、看门狗的配置等)、电子地图的初始化和首次显示、发起子任务等功能。
主任务中发起了四个子任务,分别负责响应用户的输入、标准串口的数据输入、ISA总线16C554的数据输入以及实现路径规划算法。
前三个功能独立出来是因为这些功能的触发时间都是不确定的,需要单独监视;最后一个则因为需要较大的运算量。这里只以接收串口数据的子任务为例进行分析。
该任务需要监视两个串口的信息:GPS数据和从语音模块返回的状态信息。VxWorks将I/O系统设计成为与设备无关的接口,因此对串口的操作可以视为对文件的操作。
串口的打开,关闭和写操作均比较简单,而串口的读操作采用了select函数,利用其触发机制阻塞任务。有数据到来时,任务才会被激活并从串口读取数据,然后通过任务间通信机制,通知主任务进行相应的处理,如进行地图更新、输出语音提示等操作。
4、结束语
经过实验,本系统能够稳定可靠的运行。该系统展示了其GPS定位和路径规划的功能。本系统功能的实现证明了ETX平台以及VxWorks操作系统的优良性能,表明两者的结合具有开发简单、性能可靠等优点,有着良好的应用前景。
相关文章