1.准备
官方文档:Documentation/gpio.txt中“Sysfs Interface for Userspace (OPTIONAL)”部分
代码路径:drivers/gpio/gpiolib.c
sysfs路径:/sys/class/gpio
2.接口介绍:

GPIO sysfs路径下有两个使用的接口:export和unexport,他们都是只写的:
root@firefly:~# ll /sys/class/gpio/
...
--w------- 1 root root 4096 Jan 1 2011 export
--w------- 1 root root 4096 Jan 1 2011 unexport
...
expo

rt:向内核申请GPIO,写入对应的GPIO值直接申请,比如申请控制GPIO7A3,则使用命令:

echo 227 > /sys/class/gpio/export

写入后,可以看到已经生成节点:

/sys/class/gpio/gpio227/

如果申请不到,极大可能是已经申请过该GPIO,包括内核申请或者使用上述方法申请过,报的错误为:
-bash: echo: write error: Device or resource busy
GPIO值在RK3288中的计算方法为:bank×32+pin,如:
GPIO7A3: 7×32+3=227
GPIO0B5: 0×32+13=13
unexport:释放相应的GPIO,如:

echo 227 > /sys/class/gpio/unexport

相应的节点会被删掉。
下面看看相应gpio节点下面的接口,比如GPIO7A3:

GPIO SYSFSroot@firefly:/mnt/py/fireflyP# ll /sys/class/gpio/gpio227/
...
-rw-r--r-- 1 root root 4096 Aug 8 06:36 active_low
-rw-r--r-- 1 root root 4096 Aug 8 06:36 direction
-rw-r--r-- 1 root root 4096 Aug 8 06:36 edge
-rw-r--r-- 1 root root 4096 Aug 8 06:36 value
...

direction: 参数为“out”(输出)和“in”(输入),可读可写
value: 参数为“0”(低电平)和“1”(高电平),可读可写
edge:可以监听对应引脚的事件,需要把direction设置为输入。
参数为”none”(无中断触发), “rising”(上升沿触发), “falling”(下降沿触发), “both”(上升、下降都沿
触发)。
用户层可以使用poll,设置events为POLLPRI | POLLERR等待事件触发,当对应的模式触发后,会返回事
件的消息,此时需要读取value值,以表示改触发已经处理,否则会一直poll到原事件。
active_low:此值可以反转value中的值

RK3399用户空间IO控制相关推荐

  1. linux文件IO与内存映射:用户空间的IO缓冲区

    文章目录 用户空间IO缓冲区产生 IO缓冲区 描述 IO缓冲区的写模式 自定义IO缓冲区 用户空间IO缓冲区产生 系统调用过程中会产生的开销如下: 切换CPU到内核态 进行数据内容的拷贝,从用户态到内 ...

  2. linux应用开发:用户空间如何通过sysfs控制GPIO

    开发环境 Ubuntu:14.04 开发板:A33-Vstar 开发板系统:linux-3.4.39 ------------------------------------------------- ...

  3. trickle 限制用户空间带宽

    摘要:对于用户量大的情况下,可能一个程序就占用了你所有的网络带宽.这种情况可以通过nethogs来查看.具体参见:<nethogs查看每个进程使用的带宽>.这种情况下,你就需要临时限制下带 ...

  4. I/O流(包括操作系统与内核,用户空间),I/O工作原理,Java I/O流的设计及Java IO系统

    文章目录 一.操作系统与内核 1.1操作系统 1.2内核 1.3 关系图 二.内核空间和用户空间 2.1:目的: 2.2.内核空间(Kernel-space): 2.3.用户空间(User-space ...

  5. 通过文件IO控制硬件设备的方法

    文章目录 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 1.2 LED灯程序 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 驱动程序: 本质:是硬件设备创建相应的设备节点文件.创建设备 ...

  6. 用户空间文件系统(FUSE)

    女主宣言 今天小编为大家分享用户空间文件系统FUSE,文章从FUSE的架构,分析了各个部分的原理,并结合小编自身的使用,对FUSE进行了建议性的优化,希望能对大家有所帮助. PS:丰富的一线技术.多元 ...

  7. Windows内核--内核空间和用户空间(3.6)

    内核喜欢抽象出句柄给用户空间 句柄, Handle, 表达处理.控制之意.内核不会直接暴露指针给用户空间,这样会增大内核风险.相反,内核抽象出Handle给用户态,不管是文件.进程.线程等对象,通过H ...

  8. linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

    linux驱动程序一般工作在内核空间,但也可以工作在用户空间.下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,L ...

  9. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序

    嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...

  10. Linux预备知识(二):进程空间地划分-用户空间/内核空间

    查看机器上栈大小命令 ulimit -a 或者 ulimit -s 大小不固定,可以用 ulimit -s 进行调整,默认一般为 8M ** 栈区(stack sagment)**:由操作系统自动分配 ...

最新文章

  1. 《零基础免费学扩增子分析》视频课(含ppt及相应代码),无需转发,直接获取...
  2. ie6下js更新元素display:block后,仍然不显示的hack办法
  3. JQuery Easy Ui 可装载组合框 - ComboBox
  4. 个人站立会议(11月17日)
  5. android cts 编译,使用 Android studio 分析运行 CTS 用例
  6. OpenCV在图像中寻找轮廓的实例(附完整代码)
  7. 完全二叉树每层元素的查找
  8. Online ML那点事-!
  9. Linux输入子系统浅析
  10. sofia-sip帮助文档
  11. 容器技术Docker K8s 5 容器技术在阿里巴巴落地历程
  12. 必看,Mac苹果电脑重装系统教程
  13. java实训心得_大学java实训心得总结(共9篇).docx
  14. CUDA总结:Occupancy
  15. 浅谈网页设计的形式美法则
  16. Android个人信息页面
  17. Qt编写的项目作品30-录音播放控件(雨田哥作品)
  18. 物理隔离网闸——入门篇(2)
  19. 配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
  20. c#输出二维数组矩阵

热门文章

  1. asp.net 利用jquery.form插件上传图片
  2. 2016021902 - linux解压缩命令
  3. 修改系统文件内容的经典错误总结
  4. 程序开发基础学习五(json配置、解析文件,c++篇)
  5. python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍
  6. CA证书服务器(6) 利用CA证书配置安全Web站点
  7. minio  nginx 配置
  8. gyp安装,及breakpad上的使用方法
  9. 2015年8月27日--培训作业是几个练习题
  10. hdu 2028 Lowest Common Multiple Plus(最小公倍数)