高通平台gpio简单调试
发布日期:2021-06-30 22:00:54
浏览次数:2
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月28日 01时54分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux Kernel and Android 休眠与唤醒(中文版)
2019-04-30
Android中间件开发----Windows下Android环境搭建(最新最方便)
2019-04-30
C/C++如何返回一个数组/指针
2019-04-30
如何在 Ubuntu 16.04 上安装并使用 TensorFlow
2019-04-30
基于Android NDK的学习之旅-----JNI LOG打印
2019-04-30
语音命令词识别
2019-04-30
腾讯AI语音识别API踩坑记录
2019-04-30
linux中Oops信息的调试及栈回溯—Linux人都知道,这是好东西!
2019-04-30
C语言与javascript的不同之处
2019-04-30
Android照相功能驱动层中HAL的实现(基于OK6410开发板+OV9650摄像头)
2019-04-30
Android Camera HAL设计初步
2019-04-30
基于U-boot上TFTP服务器更新系统
2019-04-30
P4139 上帝与集合的正确用法
2019-04-30
P3811 【模板】乘法逆元
2019-04-30
P5431 【模板】乘法逆元2
2019-04-30
P1495 【模板】中国剩余定理(CRT)/曹冲养猪
2019-04-30
P3868 [TJOI2009]猜数字
2019-04-30
YbtOJ——贪心算法【例题3】畜栏预定
2019-04-30
YbtOJ——贪心算法【例题2】雷达装置
2019-04-30