
GPS_Test_Plus_1.2.1 测试:
主控:SamsungARMCortex-A8(s5pv210)
Gps:Ublox-6M
系统:android 2.3.1
内核:Linux2.6.35
bootloader:u-boot for tiny210 ver4.0
开发板: Tiny210V1 SDK2(512M DDR2RAMSLC NANDFLASH 256M)
复试结束,该忙的事忙完就到四月底了,这才有时间坐下来学点东西。这应该是本阶
段做的最后一个小玩意了。前戏缩短,废话少说,进正题。
由于友善只提供了 GPS 驱动模块,并无源码,而且经测试友善的驱动并未完整解析
GPS 的几大关键数据,因此上层应用只能获得经纬度,精度,UTC 时间。这样就只能在
google 地图,百度地图类似于这样应用提供定位。由于 HAL 无法返回卫星状态数据(可见
卫星数,可用卫星数,卫星信号强度等),导致无法使用专业的 GPS 导航软件。下面提供
的源码是根据 gps_qemu.c 修改而来的,实现 GPS 关键数据解析,支持凯立德,道道通等
导航软件。下面会从 GPS NMEA-0183 协议开始到 Android GPS HAL 移植及模块的编译
加载简要介绍 Android 车载导航仪是如何“炼成”的。下面附源码(理论上支持所有输出
NMEA-0183 格式数据的串口及 USB GPS)。
源码下载:Android GPS HAL for Ublox-6M(下载链接已更新,修改部分源码内容及
mk 文件)
我在 X 宝上 100 块买的 GPS 模块属于硬 GPS,也就是串口上直接输出 NMEA 数据的。
所以首先要做的是了解 NMEA 的数据结构。
NMEA-0183 标准数据分析实例(四中常用数据)
$信息类型,xxx,xxx,xxx,xxx,xxx,xxx,xxx,
每行开头的字符都是$,接着是信息类型,后面是数据,用逗号隔开
信息类型为:
GPGSV:可见卫星信息
GPGLL:地理定位信息
GPRMC:推荐最小定位信息
GPVTG:地面速度信息
GPGGA:GPS 定位信息
GPGSA:当前卫星信息
$GPGGA,012440.00,3202.1798,N,11849.0763,E,1,05,2.7,40.2,M,0.5,M,,*6F..
1 时间: 01+8=9 点 24 分 40.00 秒
2 纬度: 北纬 32 度 02.1798 分
3 经度: 东经 118 度 49.0763 分
4 定位: 1=(定位 sps 模式) 0=(未定位)
5 应用卫星数: 05 个
6 HDOP: 2.7 米
7 海拔: 40.2
8 海拔单位: M=(米)