RK3399用户空间IO控制
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控制相关推荐
- linux文件IO与内存映射:用户空间的IO缓冲区
文章目录 用户空间IO缓冲区产生 IO缓冲区 描述 IO缓冲区的写模式 自定义IO缓冲区 用户空间IO缓冲区产生 系统调用过程中会产生的开销如下: 切换CPU到内核态 进行数据内容的拷贝,从用户态到内 ...
- linux应用开发:用户空间如何通过sysfs控制GPIO
开发环境 Ubuntu:14.04 开发板:A33-Vstar 开发板系统:linux-3.4.39 ------------------------------------------------- ...
- trickle 限制用户空间带宽
摘要:对于用户量大的情况下,可能一个程序就占用了你所有的网络带宽.这种情况可以通过nethogs来查看.具体参见:<nethogs查看每个进程使用的带宽>.这种情况下,你就需要临时限制下带 ...
- 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 ...
- 通过文件IO控制硬件设备的方法
文章目录 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 1.2 LED灯程序 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 驱动程序: 本质:是硬件设备创建相应的设备节点文件.创建设备 ...
- 用户空间文件系统(FUSE)
女主宣言 今天小编为大家分享用户空间文件系统FUSE,文章从FUSE的架构,分析了各个部分的原理,并结合小编自身的使用,对FUSE进行了建议性的优化,希望能对大家有所帮助. PS:丰富的一线技术.多元 ...
- Windows内核--内核空间和用户空间(3.6)
内核喜欢抽象出句柄给用户空间 句柄, Handle, 表达处理.控制之意.内核不会直接暴露指针给用户空间,这样会增大内核风险.相反,内核抽象出Handle给用户态,不管是文件.进程.线程等对象,通过H ...
- linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间
linux驱动程序一般工作在内核空间,但也可以工作在用户空间.下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,L ...
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...
- Linux预备知识(二):进程空间地划分-用户空间/内核空间
查看机器上栈大小命令 ulimit -a 或者 ulimit -s 大小不固定,可以用 ulimit -s 进行调整,默认一般为 8M ** 栈区(stack sagment)**:由操作系统自动分配 ...
最新文章
- 《零基础免费学扩增子分析》视频课(含ppt及相应代码),无需转发,直接获取...
- ie6下js更新元素display:block后,仍然不显示的hack办法
- JQuery Easy Ui 可装载组合框 - ComboBox
- 个人站立会议(11月17日)
- android cts 编译,使用 Android studio 分析运行 CTS 用例
- OpenCV在图像中寻找轮廓的实例(附完整代码)
- 完全二叉树每层元素的查找
- Online ML那点事-!
- Linux输入子系统浅析
- sofia-sip帮助文档
- 容器技术Docker K8s 5 容器技术在阿里巴巴落地历程
- 必看,Mac苹果电脑重装系统教程
- java实训心得_大学java实训心得总结(共9篇).docx
- CUDA总结:Occupancy
- 浅谈网页设计的形式美法则
- Android个人信息页面
- Qt编写的项目作品30-录音播放控件(雨田哥作品)
- 物理隔离网闸——入门篇(2)
- 配置SSH服务远程连接空闲超时退出时间(包括SSH无法登录、登录缓慢)
- c#输出二维数组矩阵
热门文章
- asp.net 利用jquery.form插件上传图片
- 2016021902 - linux解压缩命令
- 修改系统文件内容的经典错误总结
- 程序开发基础学习五(json配置、解析文件,c++篇)
- python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍
- CA证书服务器(6) 利用CA证书配置安全Web站点
- minio nginx 配置
- gyp安装,及breakpad上的使用方法
- 2015年8月27日--培训作业是几个练习题
- hdu 2028 Lowest Common Multiple Plus(最小公倍数)