高通平台gpio简单调试
发布日期:2021-06-30 22:00:54
浏览次数:3
分类:技术文章
本文共 2207 字,大约阅读时间需要 7 分钟。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010164190/article/details/83860374
0.编译读写gpio寄存器地址工具:/system/bin/r Android9.0源码地址: system/core/toolbox/r.c system/core/toolbox/Android.bp cc_binary { name: "r", defaults: ["toolbox_defaults"], srcs: ["r.c"], } # cd system/core/toolbox # mm # push r /system/bin 特别注意:如果gpio70已经被占用,应该在驱动代码或者.dts里注掉,否则下面的设置不生效。 1.使能gpio70 # cat /sys/kernel/debug/gpio //查看所有gpio状态信息 # cd /sys/class/gpio # echo 70 > export # cd gpio70 # echo out > direction # echo 1 > value 2.//设置GPIO pull up gpio寄存器地址计算和芯片平台有关,计算方式不一样. *************************************************************************** msm8996 gpio寄存器地址: gpio基地址 + gpio号 * 0x1000(即是gpio号:70->0x46) sdm845 gpio寄存器地址: gpio基地址 + 0x500000 + gpio号*0x1000(gpio号:70->0x46) 1、SDM845平台以GPIO46为例,十进制46对应的16进制为2E,每个GPIO均有 这3个寄存器描述功能,包括输入/输出、驱动电流上/下拉、中断功能。 所以三个寄存器对应的地址为: 0x3400000 + 0x500000 + 0x1000*2E = 0x392E000 0x3400000 + 0x500000 + 0x1000*2E = 0x392E004 0x3400000 + 0x500000 + 0x1000*2E = 0x392E008 读取方法: /system/bin/r 0x392E000 --》0x392E000: 00000201 //0x201:out /system/bin/r 0x392E004 --》0x392E004: 00000003 //0x03:high; 0x00;low /system/bin/r 0x392E008 --》0x392E008: 000000e2 //0xe2:禁掉中断 对于读出来数据的定义通过寄存器对每位数据的定义可以得出: <1>.0x201:1000000001 ---->out and pull down 第9为=1 代表输出; 6-8位为0,驱动能力2mA; 2-5位0,普通GPIO功能; 0-1=1:pull down; 2:keeper; 3:pull up; 4:no pull 0x202: out and keeper 0x203: out and pull up 0x204: out and no pull <2>0x3: 输出为高; 相当于echo 1 > value 0x0: 输出为低; 相当于echo 0 > value <3>.e2:11100010 最低位为0,代表disable中断功能 *************************************************************************** //获取gpio基地址: 0x1010000,最上边的一行 # cat /sys/kernel/debug/gpio" GPIOs 0-149, platform/1010000.pinctrl, 1010000.pinctrl 70为10进制,转化为16进制为:0x46 gpio地址为:0x46 * 0x1000 + 0x1010000 = 0x1056000 3.//读gpio70的寄存器地址: # /system/bin/r 0x1056000 01056000: 000002c6 //gpio70地址: 值 注意: 0x000002c5: pull down 0x000002c6: keeper 0x000002c5: pull up 4.//写gpio70寄存器值为0x000002c7,使之pull up # /system/bin/r 0x1056000 0x000002c7 # 再读下0x1056000 # /system/bin/r 0x1056000 01056000: 000002c7 这时候可以用万用表量gpio70管脚,已经被拉高了,不是0V电压了。 --------------------- 作者:慢慢的燃烧 来源:CSDN 原文:https://blog.csdn.net/u010164190/article/details/83860374 版权声明:本文为博主原创文章,转载请附上博文链接!转载地址:https://loongembedded.blog.csdn.net/article/details/89714225 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月26日 17时11分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
QNX相关资料整理
2019-05-01
Nacos Discovery Starter Configurations
2019-05-01
ConfigurationProperties实现
2019-05-01
loadbalancer动态刷新nacos的server
2019-05-01
@FeignClient注解的重复名称解决
2019-05-01
org.openjdk.jol
2019-05-01
access_flags
2019-05-01
ClassFile之Methods
2019-05-01
scala var val
2019-05-01
java.net.BindException: 无法指定被请求的地址
2019-05-01
scala list
2019-05-01
多人协作流程与规范
2019-05-01
k8s设置阿里云仓库
2019-05-01
svn服务器安装
2019-05-01
spark 笔记1
2019-05-01
SVN服务器多个项目的权限分组管理
2019-05-01
svn 没有作者信息) | (没有时间信息
2019-05-01
shell笔记1
2019-05-01
shell参数
2019-05-01
shell dirname basename
2019-05-01