使用gpio_direction_output()无法设置GPIO原因分析

在driver中使用gpio_direction_output()设置GPIO3_D7为高电平,但是系统启动之后又被设置为了低电平,问题分析。

查看GPIO电平状态

cat /sys/kernel/debug/gpio

1、首先怀疑是GPIO冲突,可能是多个设备树节点都使用这个GPIO,通过查看log发现并没有GPIO申请冲突的log打印,而且打印gpio_direction_output()这个值的返回值也是设置正确的,所以系统跑的时候应该是运行正常的。
2、初步怀疑是驱动设置为高之后,又被别的地方被拉低,是否为不规范使用导致GPIO导致,所以打算用逻辑分析仪看看是不有我们driver拉高,然后又被拉低。
3、通过逻辑分析仪抓到的波形分析可以看到,我们的driver是有一段时间把这个GPIO拉高的动作的,但是不久之后这个IO后就有一段很长的拉低拉高的波形,这个波形很像数据传输的波形,最后IO口被拉低,然后我们有理由怀疑这个IO口是和控制器冲突了,通过查看这个IO口可以知道GPIO3_D7在RK3399芯片中是I2S0控制器DATA0输出引脚。所以我们需要在设备树中disable这个引脚。

打开\arch\arm64\boot\dts\rockchip\rk3399.dtsi

 i2s0 {i2s0_8ch_bus: i2s0-8ch-bus {rockchip,pins =<3 24 RK_FUNC_1 &pcfg_pull_none>,<3 25 RK_FUNC_1 &pcfg_pull_none>,<3 26 RK_FUNC_1 &pcfg_pull_none>,<3 27 RK_FUNC_1 &pcfg_pull_none>,<3 28 RK_FUNC_1 &pcfg_pull_none>,<3 29 RK_FUNC_1 &pcfg_pull_none>,<3 30 RK_FUNC_1 &pcfg_pull_none>;//<3 31 RK_FUNC_1 &pcfg_pull_none>;   //泰山项目使用GPIO3_D7作为普通IO,用于ZIGBEE电源使能所以需要注释掉};

参考资料

linux 应用层操作GPIO
cat /sys/kernel/debug/gpio

#GPIO3_D7 = 127 = 323 + (4 * 8 - 1) GPIO3就是332 D7就是4*8 其中A = 0, B = 1以此类推D就是4
echo 127 > /sys/class/gpio/export #导出GPIO3_D7
echo out > /sys/class/gpio/gpio127/direction #设置GPIO3_D7为输出模式
echo 1 > /sys/class/gpio/gpio127/value #设置GPIO3_D7输出高电平

使用gpio_direction_output()无法设置GPIO原因分析相关推荐

  1. 【linux】ARM开发板上设置RTC时间,断电重启后,设置失效的原因分析

    问题描述 linux中使用date设置时间后用hwclock -w同步到RTC,断电重启后,有时会失效 原因分析 保存时间戳 1.使用命令关机(halt)会调用rc0.d中的脚本: 2.使用命令重启( ...

  2. DB time抖动的原因分析

    9月22日,"DBA+社群"开讲啦!由搜狐畅游高级DBA杨建荣在"DBA+北京群"进行了一次关于DB time抖动的原因分析的线上主题分享.小编特别整理出其中精 ...

  3. mysql数据库连接过多的错误,可能的原因分析及解决办法

    mysql数据库连接过多的错误,可能的原因分析及解决办法 来源:网络采集 作者:未知 系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是 ...

  4. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )

    文章目录 一.使用 DexClassLoader 获取组件类失败报错 二.失败原因分析 一.使用 DexClassLoader 获取组件类失败报错 在上一篇博客 [Android 逆向]启动 DEX ...

  5. Android ListView异步加载图片乱序问题,原因分析及解决方案

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是 ...

  6. linux then命令不识别,Linux终端提示符(prompt)不如期生效的原因分析与解决

    前言 在开始本文的内容之前,我们先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面 ...

  7. MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法

    原因分析: 因为CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP ...

  8. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误...

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  9. sql语句查询过慢的原因分析

    有时候你在使用sql语句查询数据库,sql语句写得好正确,但则发现执行查询的时候很慢呢?数据量也不是太大,你知道其中的原因吗?本文给大家讲解一下sql查询过慢的48种原因分析,请阅读. 1.没有索引或 ...

最新文章

  1. [BZOJ 2200][Usaco2011 Jan]道路和航线 spfa+SLF优化
  2. Python元组介绍
  3. MyFaces Tree2控件使用 -----From http://blog.163.com/net_wood/blog
  4. 微信小程序window的配置
  5. Could not find qmake configuration file解决
  6. 机器学习专题(二):2.1机器学习的数据
  7. c++ string分割字符串split_Java字符串到数组的转换最后放大招
  8. Android gdb 调试
  9. mac trace traceroute 简要使用
  10. 什么是偏振光和UV光?
  11. U3D中物体渐隐和闪烁的方法
  12. 易经占卜的演变与人工取名
  13. html中背景条纹效果,CSS3做出条纹大背景
  14. 【UEFI基础】EFI_HANDLE
  15. 高一被清华姚班录取,高三委拒谷歌 offer,一个重度网瘾少年到理论计算机科学家的蜕变!......
  16. 中国大陆收货地址智能解析
  17. 页面屏蔽backspace键
  18. 堆的简单应用——TopK
  19. 计算机论文提纲范文样本,论文提纲范文样本
  20. 先科sast x6盒子拆机解决散热问题

热门文章

  1. [Swift] 数组恒等 === 的 bug?!
  2. Linux电源管理(一)电源管理系统架构
  3. 写毕业论文期间的一些收获和感想
  4. 关于计算机专业英语的小短文,有没人有计算机专业英语的短文,200字左右。
  5. 数字成像系统-姜卓-专题视频课程
  6. 网约车风云再起:“小窗口”和“大窗口”齐开
  7. Chrome for Mac OS 的 快捷键
  8. 中国职业教育政策解读 | 职业教育系列报告(三)
  9. 三只松鼠事件竟是乌龙我们能不能给薇娅们一些耐心
  10. 【iOS逆向】某App的算法分析