【GPS】GPS分析(QXDM关键字)
一、GPS信号
1. GPS信号包含主要三个组成部分:
1)载波:L1和L2频段
2)测距码(Ranging Code): 用来测量卫星和接收器之间距离的一种信号。
GPS有C/A码和P码两种测距码:
C/A码(粗捕获码) 民
P码(精捕获码) 军
3)导航电文(Navigation Data,也叫D码): 在定位计算时,除了测距码外还需要卫星的一些信息,例如星历、时间等。
2. GPS ——> 微波信号 ——> 穿透能力较差。
例如:
1)厚度为1cm的水体完全衰减GPS至无法使用;
2)几cm后的木头就可以完全遮蔽GPS信号;
3)玻璃塑料使GPS信号轻度衰减;
4)(含金属涂层)金属实体完全遮蔽GPS。
【特别注意】:
(测试GPS时需要注意)
1)室内无法进行GPS定位;
2)室外云雨严重时会影响定位精度。
二、星历与年历
星历: 得到卫星在天空中的位置轨道信息(精密轨道信息)。
年历: (粗略轨道信息)。
【注意】: (1)在真实的位置计算中年历是不起作用的。
(2)XTRA+年历-------解析出-------->星历(较为准确)。
三、GPS启动方式
1)冷启动——> 无星历、年历信息(如手机第一次启动GPS);
2)温启动——> 含年历,且无大距离移动时;
3)热启动——> 手机有星历、年历、以及上次定位信息等时。
四、A-GPS
通过无线通讯系统实现的A-GPS方案有两种运营模式MSB和MSA。
判断MSB和MSA定位的方法:
根据定位运算主体在哪一端【用户设备终端 or 通讯网络】?
1)MSB
手机承担位置测量和计算工作;
基于用户终端的A-GPS,用户位置计算在用户终端设备。
2)MSA
手机只承担位置测量工作;
用户终端辅助的A-GPS,用户位置的计算在通讯网络,最后发送到手机。
还有下面一种定位模式:
3)Standalone
Standalone模式不使用A-GPS。
五、GPS平台
主要有Qualcomm(高通)和Broadcom(博通)。
【注意】:辅助数据XTRA和LTO有效周期长达一周。
1)Qualcomm
XTRA:
"Extened Receiver Assistance" 的缩写。
高通自己设计的一套辅助数据。加速定位。
是可以下发星历信息的解决法案,类似AGPS。 都是辅助定位用的。
【注意】:XTRA+年历-------解析出-------->星历(较为准确)。
2)Broadcom
LTO:
"Long Term Orbit" 的缩写.
自己设计的一套辅助数据。加速定位。
六、SUPL
谷歌服务器。
七、GPS分析
主要有五部分。
1)App层
在android原生系统上,没有内置的定位app,只有Settings.
packages/apps/Settings/src/com/android/settings/location/
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/
Android平台中,GPS的开启和关闭主要在Settings中。其模式有三种:
1.High accruacy 高精度
使用GPS,Networks,Wi-Fi和Bluetooth进行定位;
准确度最好,但比较费电
2.Battery saving
使用Wi-Fi, Bluetooth和Networks进行定位;
速度快,省电,但是精度较差。
3.Device only
只使用GPS进行定位。
当Location为“ON”,Mode为“High accruacy”或者“Device Only”时,settings数据库location_providers_allowed字段将被修改为“network,gps”或者“gps”(修改字段的代码在LocationSettings.java中)。
2)Framework
Client端
frameworks/base/location/java/android/location/
这里主要是API包,供App调用的。(LocationManager.java)
frameworks/base/location/java/com/android/internal/location/
这个目录是 Framework 对 Location 服务的内部实现。
Service端
frameworks/base/services/core/java/com/android/server/LocationManagerService.java
frameworks/base/services/core/java/com/android/server/location/
3)HAL
一般GPS的修改都在gps.conf里做,其他都是源生,不需要修改。
路径如下:
hardware/qcom/gps/etc/gps.conf
4)Modem(Kernel)
GPS的驱动接口有URAT、QMI等;
Linux底层驱动只需要有uart接口就可以接收到gps数据了,而android的hal层会调用linux内核层的uart驱动,所以,只要hal层打开串口,然后read就可以了。
而gps的标准数据格式为NMEA格式,有以下几个类型。
1、GPS定位信息 GPGGA
2、当前卫星信息 GPGSA
3、可见卫星信息 GPGSV
4、推荐最小定位信息 GPRMC
5)固件Log