MTK GPS问题调试
Posted 虫师魁拔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MTK GPS问题调试相关的知识,希望对你有一定的参考价值。
目录
1、基本概念
1.1、GPS定位和网络定位有什么不同?
GPS定位是需要卫星参与的,设备借助搜到的卫星讯号,来计算出来设备的位置。open sky环境下,6颗卫星信号强度大于40db,CEP67=3米
网络定位是指利用基站、WIFI MAC,获取一个粗略的位置。基站定位和覆盖范围有关,所以精度可能很低。WIFI MAC 通过机器能搜到的 WIFI ,从服务器按照 MAC 地址去取到对应 WIFI 的位置信息,及当前信号强度来确定大概位置,精度相对会比基站高点
1.2、3D定位和2D 定位的区别?
3D一般是指使用至少4颗以上卫星完成的定位。
2D一般使用3颗卫星完成的定位过程。
3D相比于2D 定位,即定位精度更高。
1.3、卫星分布对GPS performance有很大影响吗?
是的。在NMEA 中GPGGA、GPGSA都有相关数据精度因子,该值越小越好,建议小于2。设备位于地球上的某一点,可以认为在地球上方,有4个象限,仰角0~90度。好的卫星分布要满足如下条件:
- 每个象限都有卫星;
- 卫星不能在同样的仰角上。
- 低仰角卫星被干扰的可能性更大、传输距离更远,容易出现问题。
解释常见的卫星分布:
- open sky的环境下,各个象限都有卫星。
- 窗边的环境下,只能看到半边天的卫星,即半圆内有卫星。
- 在闹市中,高楼围起来的街道上,只能看到高仰角的卫星。
1.4、如何同步GPS时间到本地时间?
Step1:将设置中的时间选项,设置为用GPS时间同步。
Step2:将设置中的位置服务打开。
Step3:打开任何的地图应用,定位成功后,就可以看到时间同步了。例如用工程模式下面的YGPS定位APK。
计算方式:GPS UTC 时间 + 当前时区,例如 GPS UTC 时间为 071249.988 ,对应北京时间就是 15(07+08):12:49.988
1.5、各个卫星系统的卫星编号是多少?
(SatelliteSystem ) (PRN Numbers) (NMEA/PMTK SVID)
GPS 1 ~ 32 1 ~ 32
WAAS 120 ~ 138 33 ~ 64
GLONASS 1 ~ 24 65 ~ 88 (89~96 reserved)
GALILEO 1 ~ 54 51~104
QZSS 183 ~ 187 reserved
193 ~ 197 193~197
BDS 1~30 201~230
2、MTK 平台相关参数说明
2.1、YGPS测试中,FULL start、COLD start、WARM start、HOT start、TTFF 值
定位过程中最重要的辅助资讯包括时间、位置、星历。
FULL start:没有任何的辅助资讯。相当于end user第一次买到手机后使用定位应用的场景。
COLD start:有时间辅助资讯,end user不会遇到该场景。
WARM start:有时间、位置辅助资讯,end user此次定位距离上次定位超过2~4个小时。
HOT start:有所有的辅助资讯,end user此次定位距离上次定位小于2~4小时。
对于终端用户经常会遇到的场景是就是 WARM/HOT start。
TTFF的结果和测试环境、测试的手法、硬件的GPS 性能强相关。MTK给出的数据是基于在open sky的环境下,有6颗卫星SNR》40db。
FULL start TTFF:小于50s。
COLD start TTFF:小于40s。
WARM start TTFF:小于35s。
HOT start TTFF:小于5s。
2.2、MTK 辅助定位技术
辅助方式 | 辅助数据来源 | 有效时间 | TTFF |
AGPS | 通过网络连接到AGPS SERVER,从AGPS SERVER获取aiding data(包括参考时间,参考位置,星历和almanac) | 2 hours | Spec < 20s |
EPO | EPO file可以通过网络(wifi/数据连接)的方式从MTK Server下载到手机中,在使用GPS时就无需再连接网络。只要使用时间在EPO file的有效期内,就可以利用EPO加速定位。 文件放在/data/misc/EPO.DAT。 | EPO是预测未来30天所有卫星的ephemeris | Condition: 6SVs CNR > 40dB, (SVs: satellites) CTTFF < 15s, WTTFF < 5s |
HotStill | 需要通过实收卫星信号且要解算出其卫星的ephemeris。 预测的数据放在/data/misc/BEE.bin、/data/misc/ARC.bin | 预测未来7天的ephemeris | Condition: 6SVs CNR > 40dB, (SVs: satellites) WTTFF < 5s |
三种技术可以同时打开提供辅助资讯,MTK GPS 演算法都会接受,不会冲突。目前MTK的solution已经将EPO 、Hotstill默认集成在系统中,默认都是打开的。没有菜单可以供测试者关闭EPO。
调试测试 epo 效果
Step1:确保网络是OK的。
Step2:使用YGPS,将INFORMATION中的Hotstill按钮设置,使其显示为Enable Hotstill[Need Restart]。
Step3:退出YGPS,再打开YGPS,并完成3D fix,并保持定位状态1min。
Step4:关闭网络。
Step5:使用adb删除/data/misc/BEE.bin、/data/misc/ARC.bin。
Step6:在YGPS里,执行WARM start,看是否可以在5s内完成定位,请在open sky下测试。
调试测试 Hotstill 效果
Step1:确保网络是关闭的,使用adb删除/data/misc/EPO*
Step2:使用YGPS,将INFORMATION中的Hotstill按钮设置,使其显示为Disable Hotstill[Need Restart]。
Step3:退出YGPS,再打开YGPS,并完成3D fix,并保持10min。
Step4:在YGPS里,执行WARM start,看是否可以在5s内完成定位,请在open sky下测试。
2.3、获取MNL Version
MNL 是Mediatek Navigation Library的缩写,版本号是以日期标注的,例如MNL_VER_14051401ALPS05_3.60_09。
将设置中的位置服务打开,请进入工程模式下YGPS-----》INFORMATION--àMNL version就可以看到该版本号。
2.4、Gps在工作期间,上报数据的频率
1HZ。最高可以调整到5HZ,但不建议修改到5HZ,因为会带来高功耗。
请在linux_gps_init接口中,将g_is_1Hz=5即可。具体修改方法,请参考如下:
修改init.rc:
service mnld /system/xbin/mnld
class main
group nvram gps inet misc sdcard_rw sdcard_r media_rw
socket mnld stream 660 gps system。
2.5、软件配置使用的卫星系统
方法一:
找到mnl.prop file(path: /data/misc/,如果不存在,请创建该文件)
打开该文件,添加GNSS_MODE=value 保存后在push to /data/misc/即可。
方法二
修改mnl_process_6620.c中的mnl_config变量中的的GNSSOPMode的值。
对于6625L,默认是GPS+GLONASS ,可以切换成GPS+BEIDOU,但是不能同时support GPS+GLONASS+BEIDOU;
对于MT3332,默认是GPS+GLONASS ,可以切换成GPS+BEIDOU,但是不能同时support GPS+GLONASS+BEIDOU;
对于MT6630,默认是GPS+GLONASS+BEIDOU;
注意:
软件不支持 Galieo ,支持 QZSS/WASS/EGNOS/MSAS/GAGAN 种类 SBAS 。
如果是在系统运行过程中修改GNSS的配置,为了是修改配置能够生效,请delete /data/misc/mtkgps.dat。
如果gps正在运行中,记得在修改配置后,关闭GPS,然后删除/data/misc/mtkgps.dat。
3、Log 抓取分析
3.1、Gps DebugLog 抓取
工程模式----->Location----->YGPS----->NMEA LOG----->找到dbg2file button,当显示成为Disable dbg2file[Need Restart]表示设置成功,即可抓取GPS DEBUGLOG。默认保存log 路径如下
#define LOG_FILE “/data/misc/gpsdebug.log”
3.4、上层logcat日志几个关键字
LocationManagerService
GnssLocationProvider
MTK_GPS_MSG_FIX_READY
D : mtk_gps_sys_gps_mnl_callback: MTK_GPS_MSG_FIX_READY, GET_RTC_OK, 0.063, 0.002
D : mtk_gps_sys_gps_mnl_callback: Age = 2, RTCDiff = 30, Time_interval = 10
D pseudo : mtk_gps_sys_nmea_output_to_app: len:46, [vAGPS_Auto_Req]:g_FirstDbtt:0,u2BitMap:0x10f
MTK_GPS_MSG_FIX_READY 这一段表示定时刷新上传数据,关注最后一个 0.002 ,这个表示距离上一次定位成功时间点,如果单位是 s,如果显示太长时间,表示定位功能异常了
I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_LOCATION, 1, Location[gps 32.159382,118.693323 hAcc=9 et=?!? alt=58.1 vel=0.48075056 bear=243.04 vAcc=??? sAcc=??? bAcc=???])
I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@9c51571)
I GnssLocationProvider: WakeLock released by handleMessage(REPORT_LOCATION, 1, Location[gps 32.159382,118.693323 hAcc=9 et=+1h33m25s726ms alt=58.1 vel=0.48075056 bear=243.04 vAcc=??? sAcc=??? bAcc=??? {Bundle[{satellites=0, maxCn0=0, meanCn0=0}]}])
这段log,第一行 REPORT_LOCATION 表示底层数据传递到FWK层了,包含了 location 数据, 准备发往APP层。第三行表示发生完毕,释放wakeLock
D LocationManagerService: incoming location from: gps
D LocationManagerService: incoming location from: gps
这里判断定位类型,包含 gps network 等。
3.3、GPS Host Log
mtklogger目录下 connsyslog\\gpshost\\ 路径下,保存原始的 GPS 数据日志,包含 Nmea 和 其他MTK加的数据,便于分析查看GPS数据信息
4、常见问题分析
4.1、GPS软件工作正常。open sky的环境下有卫星讯号,但是设备一颗星搜不到。
硬件先排查电路设计,目前GPS的硬件设计,一般都是需要在卫星讯号进入到chip之前,会有一块处理电路。
软件上看,需要先check LNA有没有使能,即ANT_SEL0有没有拉高。如果发现没有拉高,就需要检查dws文件配置是否有问题。
4.2、偶现 GPS 搜不到星,Cold 启动或者重启手机后恢复
可能是 epo 相关配置问题。将 epo 关闭后复测看下,如果是 epo 问题,抓取log给MTK具体解决。
epo hal 层代码
vendor/mediatek/proprietary/hardware/connectivity/gps/mtk_mnld/mnld_entity/src/epo.c
把代码中 gps_epo_enable 都强制赋值成 0
或者修改系统配置参数
vendor/mediatek/proprietary/hardware/connectivity/gps/mtk_mnld/etc/gps.conf
EPO_ENABLE=1 // 0表示关闭 1开启
DW_DAYS=9 //默认最大下载天数
EPO_WIFI_TRIGGER=0
RAW_DEBUG_MODE=1
参考链接
以上是关于MTK GPS问题调试的主要内容,如果未能解决你的问题,请参考以下文章