目录
一 android GPS框架
二 mtk平台的GPS软件分析
三 GPS协议含义
四 GPS协议中看问题(待更新)
一 android GPS框架
From google
二 mtk平台的GPS软件分析
2.1 代码分布
代码分布自上而下:(android4.2+ 72、89平台)
应用层:YGPS |
trunk\mediatek\packages\apps\YGPS-----YGPS.apk trunk\mediatek\packages\apps\YGPS\test---工模apk
|
|
JNI层 |
\trunk\frameworks\base\services\jni\ com_android_server_location_GpsLocationProvider.cpp |
JNI层只有一个文件,起到承上启下的作用。上层承接Framework,下层调用HAL层具体硬件抽象实现。 |
service层 |
\trunk\frameworks\base\services\java\com\ android\server\LocationManagerService.java |
是Location服务对内部实现的一种封装。 |
hal层 |
\trunk\mediatek\hardware\gps\Gps_mtk.c 生成gps.default.so |
HAL层相当于一个linux应用程序接口,通过open,close等操作,操作硬件设备。Android的源代码只实现了模拟器的gps接口,具体在文件gps_qemu.c中 作用:解析mnlp通过socket上传的协议包,变成应用程序识别的数据包。 |
Gps mnlp deamo |
\trunk\mediatek\external\mnl\ 生成libmnlp_mt6628,libmnlp_mt6620, libmnlp_mt6572等应用
\trunk\mediatek\external\mnl\libmnlp\ mnl6572\lib\libagent_6572.a GPS agent库 |
处理socket数据; GPS芯片数据打包和分发; 处理GPS的nvram数据等等; 当使用UART或GPIO通信的时候,初始化UART or GPIO; 协议解析: 01-01 02:11:22.799 4419 4423 D NVRAM : $GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.99*30 01-01 02:11:22.799 4419 4423 D NVRAM : $GPGSV,3,1,12,06,68,179,,16,63,330,,03,48,206,,23,42,301,*73 01-01 02:11:22.799 4419 4423 D NVRAM : $GPGSV,3,2,12,31,41,097,,19,23,199,,13,20,319,,21,15,083,*7D 01-01 02:11:22.799 4419 4423 D NVRAM : $GPGSV,3,3,12,193,12,156,,32,08,225,,20,04,250,,29,01,036,*42 01-01 02:11:22.799 4419 4423 D NVRAM : $GPRMC,052840.094,V,3112.4342,N,12135.0796,E,0.000,0.00,130613,,,N*4A 01-01 02:11:22.799 4419 4423 D NVRAM : $GPVTG,0.00,T,,M,0.000,N,0.000,K,N*32
|
meta用的库和应用 |
trunk\mediatek\platform\mt6572\external \meta\gps生成 libmeta_gps.a和meta_gps_test可执行文件 |
连接mtk平台的meta工具时候用到. |
内核层 |
\trunk\mediatek\kernel\drivers\ gps生成 gpsdrv(sysclass接口)和mt3326-gps设备文件 |
提供IO control和platform driver,注册字符设备驱动: GPS注册成一个字符设备,mtk通过/dev/stpgps(目前不通过UART:/dev/ttyMT1 |