sys下gpio操作
gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射
* 控制GPIO的目录位于/sys/class/gpio
* /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
* /sys/class/gpio/unexport 用于通知系统取消导出
* /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
* 首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
* 向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:
echo 12 > /sys/class/gpio/export
* direction文件,定义输入输入方向,可以通过下面命令定义为输出
echo out > direction
* direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0。
* value文件是端口的数值,为1或0.
echo 1 > value
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。
首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入 Device Drivers —> GPIO Support —> /sys/class/gpio/… (sysfs interface)。
/sys/class/gpio 的使用说明:
01
gpio_operation 通过/sys/文件接口操作IO端口 GPIO到文件系统的映射
02
* 控制GPIO的目录位于/sys/class/gpio
03
* /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
04
* /sys/class/gpio/unexport 用于通知系统取消导出
05
* /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
06
* 首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
07
* 向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:
08
echo 12 > /sys/class/gpio/export
09
* direction文件,定义输入输入方向,可以通过下面命令定义为输出
10
echo out > direction
11
* direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0。
12
* value文件是端口的数值,为1或0.
13
echo 1 > value
下面在2440下进行一下测试
1.取得GPIO信息,在终端中敲入以下命令
1
$ cd /sys/class/gpio
2
$ for i in gpiochip* ; do echo `cat $i/label`: `cat $i/base` ; done
终端中显示如下
1
GPIOA: 0
2
GPIOE: 128
3
GPIOF: 160
4
GPIOG: 192
5
GPIOH: 224
6
GPIOB: 32
7
GPIOC: 64
8
GPIOD: 96
2.计算GPIO号码
我们把GPE11用来控制LED。
GPE0的头是128,GPE11 就是128+11 = 139.
1
$ echo 139 >; /sys/class/gpio/export
ls 一下看看有没有 gpio139 这个目录
3.GPIO控制测试。
控制LED所以是输出。
所以我们应该执行
1
$ echo out > /sys/class/gpio/gpio139/direction
之后就可以进行输出设置了。
1
$ echo 1 > /sys/class/gpio/gpio139/value
or
1
$ echo 0 > /sys/class/gpio/gpio139/value
sys下gpio操作的更多相关文章
- RK3399/NanoPC-T4开发板使用/sys/class/gpio操作外接GPIO设备-【申嵌视频-RK3399篇】
实验2:RK3399/NanoPC-T4开发板使用/sys/class/gpio操作外接GPIO设备,比如外接一个LED模块,通过GPIO1_A0管脚 1 介绍 LED模块 Matrix-LE ...
- [转] Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
点击阅读原文 一.概述 通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 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 ...
- linux下对/sys/class/gpio中的gpio的控制 (转)
在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的.其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/clas ...
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
http://blog.csdn.net/mirkerson/article/details/8464231 在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的 ...
- linux下GPIO的用户层操作(sysfs)
linux的GPIO通过sysfs为用户提供服务,下面是linux kernel里的说明文档,学习一下. GPIO Sysfs Interface for Userspace ============ ...
- linux 标准 GPIO 操作
Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现. #include int gpio_request(unsigne ...
- Linux下GPIO驱动(三) ----gpio_desc()的分析
上篇最后提出的疑问是结构体gpio_chip中的成员函数set等是怎么实现的,在回答之前先介绍下gpio_desc这个结构体. 如上图所示,右上方部分为GPIO驱动对其它驱动提供的GPIO操作接口,其 ...
随机推荐
- CF 1041 F. Ray in the tube
F. Ray in the tube 链接 题意: 有两条平行于x轴的直线A,B,每条直线上的某些位置有传感器.你需要确定A,B轴上任意两个整点位置$x_a$,$x_b$,使得一条光线沿$x_a→x_ ...
- java 从字符串中 以单个或多个空格进行分隔 提取字符串
String str = "test test1 test2 test3"; String [] arr = str.split("\\s+"); for(St ...
- java 迭代器只遍历了一次的解决方案
/** * 注意:因为迭代器只能遍历一次 所以每次用完都要重新填充一次 否则会出现只替换了一次检查配置项的情况 * templateJsonIterator = templateJsonObject. ...
- VBA_话费明细单_格式调整
VBA-联通话费明细单-格式调整 Sub ChangeColumn() Rows(1).RowHeight = 24 '设置第1行的行高 Rows(1).WrapText = True '设置第1行的 ...
- int str input的运用
- [硬件配置]记录Ubuntu 14.04 下安装无线网卡驱动解决无法连接WiFi的过程
新电脑安装了Ubuntu 14.04,但是网络连接中只有以太网而没有WiFi的选项. 打开System Setting系统设置-Software&Updates软件&更新-Additi ...
- Unity面试技巧之C#基础
1. 定义常量最好使用运行是常量就是readonly 编译常量就是 const public static readonly MyClass myClass = new MyClass(); publ ...
- 来源自rnnoise,但非rnn
很快又一年过去了. 自学音频算法也近一年了. 不记得有多少个日日夜夜, 半夜醒来,就为验证算法思路. 一次又一次地改进和突破. 傻逼样的坚持,必然得到牛逼样的结果. 这一年,主要扎音频算法上. 经常有 ...
- LeetCode 193. Valid Phone Numbers
分析 难度 易 来源 https://leetcode.com/problems/valid-phone-numbers/ 题目 Given a text file file.txt that con ...
- Netty源码分析第2章(NioEventLoop)---->第7节: 处理IO事件
Netty源码分析第二章: NioEventLoop 第七节:处理IO事件 上一小节我们了解了执行select()操作的相关逻辑, 这一小节我们继续学习select()之后, 轮询到io事件的相关 ...