MT3333如何porting在smartphone上
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
MT3333如何porting在smartphone上。
[SOLUTION]
MT3333和MT3332的区别就是MT3333可以直接通过串口输出NMEA sentence,而MT3332通过UART输出的数据不是NMEA sentence,还需要经过host端的gps lib进行出具分析,才可以得到NMEA sentence。
Porting过程,是对GPS 打开、读数据、关闭的porting。
看一下在smartphone上GPS的架构是如何的。
从上面的架构来看,最小的改动就是只改libmnlp就可以了。对于MT3333的libmnlp的设计就是通过UART driver将数据从MT3333读取出来,当然这个数据就是nmea data,然后将该数据写入到gps driver中,也就是/dev/gps中。
如何修改?
1, MT3332上下电的地方是在board.c中做的,需要实现FAQ06250中实现mt3326_gps_hw的两个成员函数。可以将下面函数体中对3332上电控制的代码实现换成对MT3333的上电控制。
将下面对MT3332的断电控制的代码换成对MT3333断电的控制。
2, 如何修改libmnlp的部分。找到3332有关libmnlp的code file,即mnl_process_6620.c
。
A, 在single_process接口中只需要调用linux_setup_signal_handler,其余接口不要调
用。
B, 改成从MT3333的uart读取数据,经读取的数据写入到/dev/gps设备节点即可。
写完数据之后,调用下面的选择的notify_alive接口,这是因为在mnld需要监听gps是否每秒都会有数据上报,如果不调用该接口,那么libmnlp就会先被kill再被运行。
这就是对于MT3333作为GPS chip关于libmnlp的修改。
3, 由于MT3333不会吐出来GPACCURACY语句,那么还需要修改
locationmanagerService.java,将下面选中的部分delete,否则在上层APK是不能收到定位的位置、时间数据的。
MT3333如何porting在smartphone上。
[SOLUTION]
MT3333和MT3332的区别就是MT3333可以直接通过串口输出NMEA sentence,而MT3332通过UART输出的数据不是NMEA sentence,还需要经过host端的gps lib进行出具分析,才可以得到NMEA sentence。
Porting过程,是对GPS 打开、读数据、关闭的porting。
看一下在smartphone上GPS的架构是如何的。
从上面的架构来看,最小的改动就是只改libmnlp就可以了。对于MT3333的libmnlp的设计就是通过UART driver将数据从MT3333读取出来,当然这个数据就是nmea data,然后将该数据写入到gps driver中,也就是/dev/gps中。
如何修改?
1, MT3332上下电的地方是在board.c中做的,需要实现FAQ06250中实现mt3326_gps_hw的两个成员函数。可以将下面函数体中对3332上电控制的代码实现换成对MT3333的上电控制。
将下面对MT3332的断电控制的代码换成对MT3333断电的控制。
2, 如何修改libmnlp的部分。找到3332有关libmnlp的code file,即mnl_process_6620.c
。
A, 在single_process接口中只需要调用linux_setup_signal_handler,其余接口不要调
用。
B, 改成从MT3333的uart读取数据,经读取的数据写入到/dev/gps设备节点即可。
写完数据之后,调用下面的选择的notify_alive接口,这是因为在mnld需要监听gps是否每秒都会有数据上报,如果不调用该接口,那么libmnlp就会先被kill再被运行。
这就是对于MT3333作为GPS chip关于libmnlp的修改。
3, 由于MT3333不会吐出来GPACCURACY语句,那么还需要修改
locationmanagerService.java,将下面选中的部分delete,否则在上层APK是不能收到定位的位置、时间数据的。