高通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架构实例分 ...
随机推荐
- manim边做边学--复数平面
所谓复数平面,就是一种二维坐标系统,用于几何表示复数的场景,其中横轴代表实部,纵轴代表虚部. 每个点对应一个唯一的复数,反之亦然,这种表示方法使得复数的加法.乘法等运算可以通过直观的图形变换来理解. ...
- ToDesk再度出手,加快云电脑高性能发展,剑指千亿级市场
根据中国信通院发布的<云计算白皮书(2023年)>(以下简称白皮书)显示,云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,为大数据.物联网.人工智能等新兴领域的发展提供 ...
- 史上最全 Terraform 入门教程,助你无坑入门!
在云计算的浪潮中,基础设施管理变得越来越复杂.如何高效地配置和管理云资源,成为了每个开发者和运维工程师必须面对的挑战.Terraform,作为一种强大的基础设施即代码(IaC)工具,为我们提供了一种简 ...
- 温习 SPI 机制 (Java SPI 、Spring SPI、Dubbo SPI)
SPI 全称为 Service Provider Interface,是一种服务发现机制. SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类.这样可以在运行时 ...
- Python 抓取猫眼电影排行
import json import re import requests from requests.exceptions import RequestException import time # ...
- 案例分享-导致MySQL崩溃的SQL语句
背景 周一刚上班一个开发小哥火急火燎的过来找我,黑龙江某客户私有化环境的服务过一阵就报数据库连接失败,不知道是什么原因导致的,我以为是客户调整了网络,但是客户说并没有做任何调整,我使用ping测试也看 ...
- 一文带你搞懂GaussDB数据库性能调优
本文分享自华为云社区<[GaussTech技术专栏]GaussDB性能调优>,作者:GaussDB 数据库. 数据库性能调优是一项复杂且系统性的工作,需要综合考虑多方面的因素.因此,调优人 ...
- Linux中vim快捷键+vim报错解决
vim快捷键+vim报错解决 vim 快捷键 编辑器 yum -y install vim 快捷键: 视图模式: 0 Home ^ 快速移动光标到行首 $ End 快速移动光标到行尾 u 撤销 ...
- Golang verifying module: xxx: initializing sumdb.Client: reading tree note: malformed note
问题描述 在使用 go mod 拉取github上的一些包时碰到了一个非常令人头疼的问题,想使用一个包却拉不下来报了以下错误: go: finding module for package githu ...
- Ansible常用功能说明 [异步、并发、委托等]
文章目录 Ansible的同步模式与异步模式 Ansible的异步和轮询 [async.poll] Ansible的并发限制 [serial.max_fail_percentage] Ansible的 ...