高通8155 GPS HAL层代码移植

news2024/9/22 3:36:00

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 \
			        android.hardware.gnss@2.1-service-ubx \
			        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层需要打开的串口设备节点以及串口的波特率等设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/343282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python来爬取某音动态壁纸,桌面更香了!

至于小伙伴们想要这个封图,我也没有。不过继续带来一波靓丽壁纸,而且是动态的,我的桌面壁纸又换了:每天换着花样欣赏一波波动态壁纸桌面立刻拥有了高颜值,简直跟刷美女短视频一样啊。对的,这些动态壁纸就是…

Linux信号一门搞定

1.信号是什么? 信号其实就是一个软件中断。 例: 输入命令,在Shell下启动一个前台进程。用户按下Ctrl-C,键盘输入产生一个硬件中断。如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,…

Linux | Liunx安装Tomcat(Ubuntu版)

目录 一、下载并上传Tomcat压缩包到Ubuntu 1.1 下载并解压 1.2 执行 startup.sh 文件 二、验证Tomcat启动是否成功 2.1 查看启动日志 2.2 查看启动进程 三、Windows访问 Tomcat 服务 四、停止 Tomcat 服务 Tomcat是一款Web服务器,开发Web项目基本上都会用到…

应用篇|如何精准搜索一个答题考试小程序

应用篇|如何精准搜索一个答题考试小程序在线考试是一种非常节约成本的考试方式,考生通过微信扫码即可参加培训考试,不受时间、空间的限制,近几年越来越受企事业单位的青睐。比如有以下场景:为落实反电信网络诈骗普法宣传教育工作&…

【云原生-Docker】docker镜像制作、上传、dockerfile命令解析

场景 在实际业务场景中,需要制作多个不同版本进行镜像使用,如maven版本、JDK、openJDK不同使用等,所以需要做多个针对不同版本做不同的镜像。这里记录一下之前devops用的openJDK版本、某些部门需要用orcle JDK、特此需要做不同的镜像&#x…

C#学习笔记--泛型函数的==和Equals(看完你一定能学到!)

前言 工作的同事发现了这个问题,觉得实际游戏开发中会有这样的问题,所以在此记录 准备 开一个Unity项目,新建一个Test.cs脚本,并且生成一个Cube,直接把Test.cs挂在Cube上写一个Nulltest.cs脚本 using System.Colle…

【C++从入门到放弃】初识C++(基础知识入门详解)

🧑‍💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! C基础…

CentOS搭建博客typecho

Ubuntu搭建博客typecho_Dyansts的博客-CSDN博客 见过这样的文章展示页面吗? 详细视频安装教程: 9分钟快速搭建typecho博客,让你不再烦恼_哔哩哔哩_bilibili 现在就把他搭建出来 展示页面:Hello World 其他的插件:…

真的要用SaaS类产品做企业的移动办公平台吗?

面对越来越多的企业信息移动化解决方案,作为CIO该如何选择移动平台呢?先看看最常见的SaaS产品的情况。真的要用SaaS类产品做企业的移动门户吗?当前,热门SaaS类产品主要是企业微信和钉钉,适合小微初创企业。企业在不同成…

Chem. Sci.|AlphaFold加速了人工智能药物的发现:一种新型CDK20小分子抑制剂

​ 题目:AlphaFold accelerates artificial intelligence powered drug discovery: efficient discovery of a novel CDK20 small molecule inhibitor 文献来源:Chem. Sci., 2023, 14, 1443 代码:是一个很大的流程 https://www.pandaomics…

CountDownLatch的定义、使用 、原理

一、定义 CountDownLatch的作用很简单,就是一个或者一组线程在开始执行操作之前,必须要等到其他线程执行完才可以。我们举一个例子来说明,在考试的时候,老师必须要等到所有人交了试卷才可以走。此时老师就相当于等待线程&#xff…

《Terraform 101 从入门到实践》 Terraform在公有云Azure上的应用

《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 简介 Azure是微软的公有云,它提供了一些免费的资源,具体可以查看: https:/…

从零开始学数据分析之数据分析概述

当今世界对信息技术的依赖程度在不断加深,每天都会有大量的数据产生,我们经常会感到数据越来越多,但是要从中发现有价值的信息却越来越难。 这里所说的信息,可以理解为对数据集处理之后的结果,是从数据集中提炼出的可…

11- 聚类算法 (KMeans/DBSCAN/agg) (机器学习)

聚类算法 聚类算法和降维算法那都属于无监督算法。KMeans 是以一个值为中心, 然后所有其他点到该点距离最小值的累积和。 kmeans KMeans(n_clusters3) # n_clusters 分类数量 kmeans.fit(data.iloc[:,1:]) # 无监督,只需要给数据X就可以 DBSCAN 算法是…

GAMES101作业7及课程总结(重点实现多线程加速,微表面模型材质)

目录闲言碎语最终全部效果展示(均为10241024512ssp)课程总结与理解(Path Tracing)框架梳理任务一:迁移相关代码任务二:实现path tracing任务三:多线程加速(包括其他加速的小trick&am…

Cocos Creator 3.x开发《切水果3D》

今天跟大家分享一个Cocos Creator 3D切水果的实战案例,帮助大家掌握Cocos Creator开发3D微信抖音小游戏,开发工具我们采用的是Cocos Creator 3.6。先上一波游戏操作效果图,接下来通过本文来讲解这个游戏的一些核心的技术点。 对啦&#xff0…

使用sqlmap + burpsuite sql工具注入拿flag

使用sqlmap burpsuite sql工具注入拿flag 记录一下自己重新开始学习web安全之路③。 目标网站:http://mashang.eicp.vip:1651/7WOY59OBj74nTwKzs3aftsh1MDELK2cG/ 首先判断网站是否存在SQL注入漏洞 1.找交互点 发现只有url这一个交互点,搜索框和登录…

Springboot扫描注解类

Springboot扫描注解类的入口在AbstractApplicationContext的refresh中,对启动步骤不太了解的,可参考https://blog.csdn.net/leadseczgw01/article/details/128930925BeanDefinitionRegistryPostProcessor接口有多个实现类,扫描Controller、Se…

【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(Prometheus格式)

VictoriaMetrics单机版支持以Prometheus格式的数据写入,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 2、使用postman插入单机版VictoriaMetrics,以当前时间插入数据 地址为 http://victoriaMetricsIP:8428/api…

ISYSTEM调试实践10-实时数据采集工具daqIDEA

本文介绍一种实时数据采集的工具daqIDEA,该软件整合在了winIDEA内,可以直接通过winIDEA启动。 daqIDEA类似于jlink的jscop,stlink也有类似功能。原理就是利用仿真探头,将程序运行的变量实时采集出来,并通过曲线的方式显…