1.Ublox 驱动在系统中位置
2. 移植步骤
ublox提供的driver是HAL的代码,最终将生成一个so文件,向gps的framwork层提供解析后的gps数据,HAL层的代码相当于Linux的应用层,在framwork层启动时会载入这个so文件,然后会启动里面的一个gps服务线程,这个线程向上提供gps数据,向下通过接口(可以为UART或是I2C)设置gps reciever(max7)和获取raw data,这个驱动实际上也不能称为驱动,也就是个linux应用。移植步骤分为两个:
a. 测试硬件通道
测试UART口,数据的收发。
b. 移植driver
3. 测试UART口
其实UART口的测试不用摆在最前面,把驱动调通了再看也不迟. 如果你明确的知道这个uart的gpio没有配置,或者uart驱动没加载, 或者不确定,, 那应该先看看gpio口是否配置了,如果配置了,再看uart驱动是否在board文件中加载了, 再调uart口. uart的调试主要有打开、关闭,收发数据,对于没有数据输出的uart不太好测试,那只有等设备driver调通了在测试也可以。发送数据可以测试,需要一个uart转usb的转接板,我用的pc端串口工具是putty,简单好用,测试的时候先把板子上的uart口的tx、rx接出来,直接连到转接板上,vcc和ground也接上(有的不用接VCC),这样打开putty,设置好波特率就可以调试了,这个方法也可以用来调试linux的调试端口,可以替代部分adb的功能,这个端口一般是tty**0,在我们的项目中是“ttymxc0”,而我调试gps的uart口是“ttymxc4”,uart口的命名都类似,如果不确定可以去\dev 目录下看看,当然要进入系统才能看到。
4.源码移植
4.1 步骤
通过查看厂商提供文档和代码目录下的Readme,我得出了如下的Driver移植步骤
a. 代码要拷贝到指定位置 "hardware/u-blox/gps“
b. apply patch:
patch文件在源码的patch目录下,区分了不同的android版本。
c. 设置SUPL的支持(未设)
这个选项有问过厂商一个app的小妹,但是似乎她不太懂,他们这个driver是新的3.0,还很不完善,这个小妹说要disable这个选项,那其实简单的disable