MTK GPS问题调试

Posted 虫师魁拔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MTK GPS问题调试相关的知识,希望对你有一定的参考价值。

目录

1、基本概念

2、MTK 平台相关参数说明

3、Log 抓取分析

4、常见问题分析

 

参考链接


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配置相关

MTK 秒定位 检测EPO流程注意事项

MTK 驱动(100)---GPS调试宝典

 

以上是关于MTK GPS问题调试的主要内容,如果未能解决你的问题,请参考以下文章

安卓广播gps开启更新位置

MTK LCM调试总结

MTK平台驱动调试指南

如何在MTK平台进行驱动调试

MTK7681——HLK_M35模块调试

MTK sensor调试日志