高通Android工程释放ADSP侧GPIO给AP侧(HLOS)解决uart只能收或者发,gpio 无法配置成输入或者输出
在许多sensor的调试过程中总是会遇到各种GPIO被占用的情况,特别是以下几种情况:UART 只能发或收,GPIO 配置了pinctl output但是gpio依旧为输入。
1、判断GPIO口状态
不管是不是被ADSP占用导致工作异常,首先我们需要查看一下GPIO的状态,查看方法如下
cat /sys/kernel/debug/gpio
部分日志:
GPIOs 0-141, platform/1000000.pinctrl, 1000000.pinctrl:
gpio0 : in 0 2mA pull down
gpio1 : in 0 2mA pull down
gpio2 : out 0 2mA pull down
gpio3 : in 0 2mA pull down
gpio4 : out 2 2mA no pull
gpio5 : out 2 2mA no pull
gpio6 : in 0 2mA no pull
gpio7 : in 0 2mA no pull
gpio8 : in 0 2mA pull down
gpio9 : in 0 2mA pull down
gpio10 : in 0 2mA no pull
gpio11 : in 0 2mA no pull
gpio12 : in 2 2mA no pull
gpio13 : in 2 2mA no pull
gpio14 : out 3 2mA pull up
gpio15 : out 3 2mA pull up
gpio16 : in 2 2mA no pull
gpio17 : in 2 2mA no pull
gpio18 : in 0 2mA pull down
gpio19 : in 0 2mA pull down
gpio20 : in 2 2mA no pull
此时我们就可以通过 80-P2472-1B_C_MSM8953_GPIO_Configuration_Spreadsheet.xlsm此类GPIO 配置文档去查看相关GPIO与外设引脚的对应关系。
2、查看是否与ADSP冲突
既然查看到某个GPIO状态配置异常,接下来就应该考虑是否是ADSP 冲突引起,可以通过以下方法删除Sensor配置文件释放所有端口测试冲突是否存在。
adb root
adb remount
adb shell rm /mnt/vendor/persist/sensors/sns.reg (qcm2150 此项必须先执行,否则push进去的conf文件不生效)
adb shell rm /persist/sensors/sns.reg (msm8953 此项必须先执行,否则push进去的conf文件不生效)
adb shell rm /vendor/etc/sensors/sensor_def_qcomdev.conf
adb sync
adb reboot
执行以上操作后如果问题消失了,那么必然是ADSP冲突导致。
3、配置ADSP文件
在上面进一步验证成功后修改工程下的 /vendor/etc/sensors/sensor_def_qcomdev.conf 或者直接将开发板根文件系统中的/vendor/etc/sensors/sensor_def_qcomdev.conf 用adb pull下来修改。
#序号 #引脚号 #属性值 #注释
#SPI GPIO active and inactive
6330 1 0x00010001 # version
6331 0x0014 0x00010001 # gpio num
6332 1 0x00010001 # active func sel
6333 1 0x00010001 # active dir
6334 0 0x00010001 # active pull
6335 3 0x00010001 # active drive
6336 0 0x00010001 # inactive func sel
6337 0 0x00010001 # inactive dir
6338 2 0x00010001 # inactive pull
6339 0 0x00010001 # inactive drive
#############################################
# 修改方法:将需要释放的引脚号改成0xFFFF,然后将属性值改成0x00020002
切勿直接删除或者注释掉这一行,因为如果没有新的值,即便是整包刷机都不会覆盖原有的属性。这些参数是和sensor校准参数放在同一个分区,不会因为刷机删除。
4、刷入测试
两种方法:整编代码然后整包刷入;通过adb push 配置文件
将sensor_def_qcomdev.conf push 到板子进行测试
adb shell rm /mnt/vendor/persist/sensors/sns.reg (2150 此项必须先执行,否则push进去的conf文件不生效)
adb shell rm /persist/sensors/sns.reg (8953 此项必须先执行,否则push进去的conf文件不生效)
adb shell rm /vendor/etc/sensors/sensor_def_qcomdev.conf
adb push sensor_def_qcomdev.conf /vendor/etc/sensors/sensor_def_qcomdev.conf
adb shell chmod 644 /vendor/etc/sensors/sensor_def_qcomdev.conf
adb shell sync
adb reboot
高通Android工程释放ADSP侧GPIO给AP侧(HLOS)解决uart只能收或者发,gpio 无法配置成输入或者输出的更多相关文章
- 高通Android display架构分析
目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...
- 高通Android display分析【转】
本文转载自:http://blog.csdn.net/zhangchiytu/article/details/6777039 高通7系列硬件架构分析 如上图,高通7系列 Display的硬件部分主要由 ...
- 高通Android平台硬件调试之Camera篇
之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...
- 高通android开发摘要
一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...
- 高通Android camera运行流程【转】
本文转载自:http://blog.csdn.net/unicornkylin/article/details/13293295 1.总体架构 Android Camera 框架从整体上看是一个 cl ...
- 高通android开发缩写
1.TLMM MSM TLMM pinmux controller,Qualcomm MSM integrates a GPIO and Pin mux/config hardware, (TOP L ...
- 高通 android平台LCD驱动分析
目前手机芯片厂家提供的源码里包含整个LCD驱动框架,一般厂家会定义一个xxx_fb.c的源文件,注册一个平台设备和平台驱动,在驱动的probe函数中来调用register_framebuffer(), ...
- 高通adsp架构下sensor
一.高通sensor架构: linux驱动由浅入深系列:高通sensor架构实例分析之一(整体概览+AP侧代码分析) linux驱动由浅入深系列:高通sensor架构实例分析之二(adsp驱动代码结构 ...
- linux驱动由浅入深系列:高通sensor架构实例分析之三(adsp上报数据详解、校准流程详解)【转】
本文转载自:https://blog.csdn.net/radianceblau/article/details/76180915 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...
- linux驱动由浅入深系列:高通sensor架构实例分析之二(驱动代码结构)【转】
本文转载自:https://blog.csdn.net/radianceblau/article/details/73498303 本系列导航: linux驱动由浅入深系列:高通sensor架构实例分 ...
随机推荐
- Java面试题中高级进阶(JVM篇01)
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说堆和栈的区别?什么时候会触发FullGC?什么是Java虚拟机?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键盘 *** 12 ...
- NOIP2024模拟11:忠于自我
NOIP2024模拟11:忠于自我 T1 一句话题意:有若干个容量为 \(L\) 的包,从左往右装物品,当前包还能装则装,否则必须重开一个包装进去,对于\(\forall i \in [1,n]\), ...
- @Transactional事务,太坑了吧!
前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...
- 什么是AOP面向切面编程?怎么简单理解?
本文原文地址:什么是AOP面向切面编程?怎么简单理解? 什么是AOP面向切面编程 面向切面编程(AOP)通过将横切关注点(cross-cutting concerns)分离出来,提供了一种增强代码模块 ...
- salesforce零基础学习(一百四十一)刷新dev sandbox需要强制group
本篇参考:https://help.salesforce.com/s/articleView?id=sf.data_sandbox_selective_access.htm&type=5 背景 ...
- 4. jenkins的配置
Maven安装和配置 在Jenkins集成服务器上,我们需要安装Maven来编译和打包项目. 安装Maven 先上传Maven软件到192.168.66.101 tar -xzf apache-m ...
- npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本
升级node和npm之后,npm run dev 启动一个Vue项目,报错如下: npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本. ...
- MySQL底层概述—9.ACID与事务
大纲 1.ACID之原子性 2.ACID之持久性 3.ACID之隔离性 4.ACID之一致性 5.ACID的关系 6.事务控制演进之排队 7.事务控制演进之排它锁 8.事务控制演进之读写锁 9.事务控 ...
- ZCMU-1129
数学公式题罢了 学长 1.斯特灵公式: 2.对数公式(因为以10为底,得到的是10^x,所以最后向下取整加上1): #include<cstdio> #include<cmath&g ...
- 李世铭SFE|销售的四种境界-与之匹配的CRM功能
销售有四种境界,与之匹配的也应有四种不同的CRM系统的功能. 1.服务型销售 这类销售代表人数最为众多,超过半数的销售代表皆属于服务型.他们主要基于客户的需求,来提供相应的解决方案,或者公司所规定的某 ...