TX2 用文件IO的方式操作GPIO
概述
通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户空间,GPIO 的操作接口包括 direction 和 value 等,direction 控制 GPIO 方向,而 value 可控制 GPIO 输出或获得 GPIO 输入。文件 IO 方式操作 GPIO,使用到了4个函数 open、close、read、write。
首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入:
Device Drivers ->
GPIO Support ->
/sys/class/gpio/… (sysfs interface)。
/sys/class/gpio 的使用说明
如果是在已经适配好的 Linux 内核上,那么相信已经有了完成的 gpiochip,可以在用户空间 /sys/class/gpio 目录下看到如下文件:
export
gpiochip0/
gpiochip32/
gpiochip64/
gpiochip96/
unexport
其中引脚编号可能并不是这些。
说明:
1、gpio_operation 通过 /sys/ 文件接口操作 IO 端口 GPIO 到文件系统的映射。
2、控制 GPIO 的目录位于 /sys/class/gpio。
3、/sys/class/gpio/export 文件用于通知系统需要导出控制的 GPIO 引脚编号。
4、/sys/class/gpio/unexport 用于通知系统取消导出。
5、/sys/class/gpio/gpiochipX 目录保存系统中 GPIO 寄存器的信息,包括每个寄存器控制引脚的起始编号 base,寄存器名称,引脚总数。
导出一个引脚的操作步骤
计算引脚编号
首先计算此引脚编号:
引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
导出引脚
向 /sys/class/gpio/export 写入此编号,比如12号引脚,在 shell 中可以通过以下命令实现:
echo 12 > /sys/class/gpio/export
命令成功后生成 /sys/class/gpio/gpio12 目录,如果没有出现相应的目录,说明此引脚不可导出。
设置方向
direction 文件,定义输入输入方向,可以通过下面命令定义为输出:
echo out > /sys/class/gpio/gpio12/direction
direction 接受的参数可以是:in、out、high、low。其中参数 high / low 在设置方向为输出的同时,将 value 设置为相应的 1 / 0。
查看方向
cat /sys/class/gpio/gpio12/direction
设置输出值
echo 1 > /sys/class/gpio/gpio12/value
查看输出值
cat /sys/class/gpio/gpio12/value
取消导出
echo 12 > /sys/class/gpio/unexport
TX2 用文件IO的方式操作GPIO的更多相关文章
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction ...
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)(转)
通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction ...
- GPIO编程1:用文件IO的方式操作GPIO
概述 通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户空间,GPIO 的 ...
- [转] Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
点击阅读原文 一.概述 通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户 ...
- Java文件IO流的操作总结
Java中的IO操作涉及到的概念及相关类很多,很容易弄混,今天特来整理总结一下,并附上一份完整的文件操作的代码. 概念解析 读和写 流就是管道,向管道里面写数据用输出流:write 从管道里面读数据, ...
- 无缓冲文件IO和目录操作
引言 在后台开发中,对于文件I/O我们通常不使用C语言封装的fopen.fread.fwrite标准I/O,而是直接使用Linux提供的系统调用函数.因为这些系统调用没有使用用户缓冲区,我们直接与内核 ...
- C++ 文件流的方式操作文件(一个简单的写入,读取)
新手学习c++哈,归纳的写了一下以 C++ 的方式写入读取文件,读文件到控制台,并加了行号.博客记录主要为了备忘.当然 ^_^ 喜欢同学的话可以拿走代码直接用.转帖注明出处哈.欢迎讨论,我一直认为:知 ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- imx6用文件io操作gpio
具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...
随机推荐
- code1167 树网的核
floyd+枚举 看点: 1.floyd同时用数组p记录转移节点k,这样知道线段的端点u v就可以得到整条线段 2.任意一点c到线段a b的距离=(d[a][c]+d[c][b]-d[a][b])/2 ...
- 分布式java应用基础与实践
始读于2014年4月30日,完成于2014年6月6日15:43:39. 阿里巴巴高级研究员林昊早年的书了,这些理论放到今天估计工作一两年的人都耳熟能详了,我个人很早以前就知道此书一直没有找到资源, ...
- 阿里云专属推荐码nuyxa6
申请成功!您的推荐码为nuyxa6 恭喜您获得阿里云专属推荐码,推荐码有效期至2017-03-04 14:43:49. 我们会在到期日前两周以站内信的方式通知您新的有效期.
- cucumber安装步骤
#Start Guide##Environment###1. Install Ruby Verify your installation by running ruby -v in a termina ...
- CodeForces 518B Tanya and Postcard (题意,水题)
题意:给定两个字符串,然后从第二个中找和第一个相同的,如果大小写相同,那么就是YAY,如果大小写不同,那就是WHOOPS.YAY要尽量多,其次WHOOPS也要尽量多. 析:这个题并不难,难在读题懂题意 ...
- css 颜色渐变 兼容性
参考文献:http://caibaojian.com/css3-background-gradient.html https://www.cnblogs.com/xzzzys/p/7495725 ...
- jenkins任务构建失败重试插件Naginator Plugin
jenkins任务失败重新构建插件Naginator Plugin jenkins任务经常会因为一些偶然因素失败,这时重新构建一次就肯能成功:jenkins的Naginator Plugin插件可以重 ...
- jsp页面都放在web-inf下面说是要防止用户直接访问jsp页面,为么不能直接访问jsp
为了保护那部分jsp页面,如果没有登录验证,那部分jsp用户可以直接访问,这样很不安全,放在WEB-INF下面,就使得只能WEB-INF文件夹外jsp页面调用里面的jsp,这样来使用,就比如我们有一个 ...
- AutoMapper在C#中的有趣应用
最近发现了一个比较有趣的东西 AutoMapper,主要将Model转换为DTO,DTO更注重数据,对领域对象进行合理封装,从而不会将领域对象的行为过分暴露给表现层. 先来看一点实例,两个类之间的映射 ...
- if、else if 、else及switch...case使用小记(C#)
有时候编程编的久了,如果不停下来认真思考一下,即便是一些最基础的知识点,也可能让自己懵圈.其实,说到底还是打基础的时候没打牢,或者说自以为是地认为自己懂了,然后在打基础的时候就懒得思考懒得看了,结果就 ...