高通8155 GPS HAL层代码移植

1.添加gps hal层代码包

        将ublox gps芯片的hal层代码拷贝至apps/LINUX/android/hardware/ublox/路径下,树状图如下:

 2.修改编译选项

        将新增的ublox gps hal层代码编译进入image,需要修改apps/LINUX/android/device/qcom/msmnile_gvmgh/路径下的msmnile_gvmgh.mk和manifest.xml两个文件。【注:msmnile_gvmgh是我的项目工程名,即out/target/product/msmnile_gvmgh】

2.1修改msmnile_gvmgh.mk

        gps hal层源码ublox/gps/hal/Android.mk中有如下描述:

        HIDL_VERSION的值在ublox/gps/version.mk中定义:

         搜索PLATFORM_SDK_VERSION可知该值为30,对应版本名为Android11,根据version.mk应该选择HIDL_VERSION值为2.1。

        在Android中,通过PRODUCT_PACKAGES宏将指定的模块编译进最终烧写的image中,这里使用相同的方式将ublox gps hal层代码编译并打包至image。在msmnile_gvmgh.mk文件末尾添加一下内容:

#for u-blox GNSS
PRODUCT_PACKAGES += libParser \
			        libAgnss \
			        [email protected] \
			        u-blox.conf

2.2 修改manifest.xml

        在ublox gps hal层代码包的README文件中有说明,需要修改manifest.xml文件,以说明为模板参考、根据项目实际情况修改即可。

3.移除高通默认的gps功能模块

        去掉系统中默认的虚拟的gps功能模块,系统才能加载刚刚编译进系统的真正的gps功能代码。

        修改apps/LINUX/android/hardware/qcom/gps/gps_vendor_product.mk文件。

4.添加安全配置文件

        在ublox gps hal层代码包的README文件中有说明,说明如下:

        u-blox/gps/sepolicy/目录下有多个Android版本的配置文件,我的Android版本为11,选择Android-11即可。

        在apps/LINUX/android/device/qcom/sepolicy_vndr/SEpolicy.mk文件中添加一下内容即可:

BOARD_SEPOLICY_DIRS += hardware/u-blox/gps/sepolicy/android-11

5.配置串口

5.1 设备树配置

        GPS和SoC之间通过uart进行数据交互,所以需要配置对应串口的设备树文件,如果串口已经配置好了即可以正常使用,则此步骤跳过。

5.2 Qup配置

        Qup的全称是qualcomm universal peripherals即高通通用外设,uart就是连接在qup上,我的gps uart连接在QUP13上,所以肯需要在tz_8155/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/855/QUPAC_Access.c文件中修改qupv3_perms_auto[]数组的QUPV3_2_SE3相关配置。

         每个数组项有7个元素,分别是PeriphID、ProtocolID、Mode、NsOwner、bAllowFifo、bLoad、bModExcl。

PeriphID - QUP SE ID基于QUP块和块内的SE索引,例如QUPV3_2_SE3表示QUP块2,其SE索引为3;
ProtocolID – 它定义了由QUP固件管理的协议。
Mode – 它定义了QUP固件的默认工作模式。它可以是以下之一:QUPV3_MODE_FIFO = 0,QUPV3_MODE_CPU_DMA = 1, QUPV3_MODE_GSI = 2;
NsOwner - 它定义了负责初始化和运行的QUP SE的所有者;
bAllowFifo - 允许FIFO模式始终设置为TRUE。
bLoad - 加载固件映像总是设置为TRUE。
bModExcl - 模式独占性总是设置为FALSE。

5.3 Ublox gps代码配置

        ublox/gps/u-blox.conf文件是ublox gps hal层代码的配置文件,该文件中可以配置HAL层需要打开的串口设备节点以及串口的波特率等设置。

猜你喜欢

转载自blog.csdn.net/qq_41076734/article/details/125996427
GPS