技术开发 频道

巧用GPSID驱动 快速实现WinCE GPS开发

  【IT168 专稿】全球导航设备目前正成为嵌入式领域的一个新热点,因此在WinCE平台上开发导航设备也正成为潮流热点。GPS 系统最初只用于军事、航空、航海等专业领域,但近年来随着技术的发展,体积、功耗和成本都得到极大改善,使到GPS 系统在民用市场开始显山露水,例如在汽车导航系统和手持设备中均得到了广泛的应用。我公司近来也积极的参与到这股热潮之中,在上周我成功的完成了公司委派给我负责的一个WinCE平台的GPS导航项目。

  这个基于WinCE平台的GPS导航项目主要包括WinCE内核和GPS驱动的定制、电子地图制作和嵌入式GIS应用软件的开发等几个方面。其中,我负责WinCE系统软硬件平台的搭建和底层驱动的开发。本文不涉及复杂的GIS地理信息应用程序,主要是结合本次项目的实践,详细介绍GPSID中间驱动层的运行机制和内部原理,以及如何使用GPSID驱动协议和底层接口来开发GPS导航设备。

  1. 什么是GPS全球定位系统?

  一部完整的GPS导航设备分为软件和硬件两大部份。GPS硬件模块主要包括天线、低噪音放大器(LNA)、射频接收转换器(RF Section)、数字基带(Digital Baseband)、微处理器、微处理器周边外设(Processor Peripherals)、输入输出和驱动(I/O and Driver)等几个部分。软件部分则分为操作系统软件、GPS底层驱动软件和应用软件。应用软件主要分为电子监控地图软件、导航软件和功能性软件。其中,基于WinCE系统的GPS底层驱动程序是本次项目中我负责开发的核心。

  (1)GPS技术的定位原理

  全球定位系统(Global Positioning System)是美国研制的,历时20年于1994年全面建成,具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航与定位系统。全球定位系统由三部分构成:①太空卫星部份:由 24 颗卫星所组成,分成六个轨道,绕行地球一周约12 小时。每个卫星均持续发射载有卫星轨道数据及时间的无线电波。②地面监控部份:这是为了追踪及控制上述卫星的运转所设置的地面管制站,主要工作是负责修正与维护每个卫星能保持正常运转,以确保每个卫星都能提供正确的讯息。③GPS用户设备:主要由接收机硬件和处理软件组成。

  用户通过用户设备接收GPS卫星信号,并实时地计算出接收机所在位置的坐标、移动速度及时间。其中GPS的太空卫星部份、地面监控部份均为美国控制,我们通常所说的GPS设备是指第3 部分:用户设备部分。

  一般来说,在地面上的GPS 接收器能接收5~12 个卫星信号,而为了获得地面上的定位坐标,GPS 导航至少需要四个卫星信号。三个用来确定GPS 接收器的纬度、经度和海拔高度,第四个则提供同步校正时间。当然所能接收到的卫星数量越多,译码出来的位置就越精确。GPS 是利用卫星和用户GPS接收器进行球面几何运算,一般地参与计算的卫星越多,几何球面的计算越精确,但同时计算的时间也会越长。

  通常是采用四颗卫星定位的较多,不过一般会是先用三颗卫星快速的计算进行粗定;然后再用四颗卫星来进行精确定位,这是一个较为实用的方法。这四颗卫星形成四个方程式,即四元二次方程,包括未知数为接收机所处位置的三维坐标X、Y、Z 及卫星钟差,经度和纬度的计算都是在GPS 模块里面完成的。

  GPS 定位计算的数学模型主要分为:最小二乘法(LS)、TDOA 双曲线模型、Fang 算法、Chan 算法、Friedlander 算法、SX 和SI 算法。其中,Chan 算法较为准确。当然,GPS 定位只能得到位置、方向和速度等信息。然后,还要再根据经度和纬度来配合电子地图里面的经度和纬度来确定在地图上的位置,最后才是完成GPS 定位在电子地图上的显示。

  (2)硬件平台和数据格式的实现

  本项目的嵌入式GPS导航系统的硬件核心是三星公司的ARM9系列的RISC处理器S3C2410A芯片,该芯片强大的实时处理能力和丰富的外围接口非常适合GPS嵌入式系统的开发,本项目许多的应用功能正是基于该芯片的特点而设计的。但在多次的测量和调试中,我们发现这款产品还有一定的不足,值得进一步的深入去研究。例如:在打开GPS接收模块之后,系统的响应速度将有显着的下降,虽然我们对WinCE内核和编译器进行了适当的优化,但情况并没有显着的改善。

  问题可能是在硬件平台的处理速度和可调用的资源有限,也有可能是在软件接收上的程序结构不合理,例如嵌套过多导致最终出现了不应有的误差。后来,考虑到硬件成本和综合性能上的比较,我们决定从软件上着手。例如加强WinCE内核优化、动态GPSID驱动响应速度等来纠正响应误差和改善反应性能,实践证明这是很值得研究的一个方向。

1
相关文章