linux下通过sysfs操作GPIO
linux下通过sysfs操作GPIO
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。
首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入 Device Drivers-> GPIO Support-> /sys/class/gpio/… (sysfs interface)。/sys/class/gpio 的使用说明:
1、控制GPIO的目录位于/sys/class/gpio
2、/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号
3、/sys/class/gpio/unexport 用于通知系统取消导出
4、/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤
5、首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数
6、向/sys/class/gpio/export写入此编号,比如12号引脚,echo 12 > /sys/class/gpio/export,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:
7、direction文件,定义输入输入方向,可以通过下面命令定义为输出,direction接受的参数:in, out, high, low。high/low同时设置方向为输出
8、value文件是端口的数值,为1或0.
以DM8127为例说明如何使用sysfs接口控制GPIO
1、DM8127的GPIO数目和分组
1)GP0[0-31]、GP1[0-31]、GP2[0-31]、GP3[0-31];
2、配置IO的的功能
1)配置 IO口功能引脚,参考Table 5-13. PINCNTLx Registers MUXMODE Functions;
2)可在uboot中配置,也可在内核devices.c文件中配置;
3、操作/sys/class/gpio 目录信息
1)默认目录下的信息
/sys/class/gpio # ls
export gpio38 gpiochip32 gpiochip96
gpio35 gpiochip0 gpiochip64 unexport
2)每个gpiochipx都有32个引脚,和上面的GPx数目正好符合;
4、我们设置GP1[26]引脚为输出
1)GP1[26]对应的基地址编号对应gpiochip32。对应的总编号是32 + 26 = 58
2)导出需要控制的引脚
echo 58 > /sys/class/gpio/export
3)设置引脚的输出/输入状态,和输出输入高低电平
echo out > /sys/class/gpio/gpio58/direction
echo 1 > /sys/class/gpio/gpio58/value
echo 0 > /sys/class/gpio/gpio58/value
5、此外还可配置输入、中断触发模式等等。
linux下通过sysfs操作GPIO的更多相关文章
- linux下的shell操作mysql
(1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...
- linux下的文本操作之 文本查找——grep
摘要:你有没有这样的应用场景:调试一个程序,出现debug的提示信息,现在你需要定位是哪个文件包含了这个debug信息,也就是说,你需要在一个目录下的多个文件(可能包含子目录)中查找某个字符串的位置: ...
- Linux下常用的操作
Linux下常用的操作 文件定位 locate filename 有些版本的linux会出现 -bash: locate: command not found错误,不要慌,安装一下mlocate包就好 ...
- Linux下mysql相关操作
Linux下mysql相关操作 1.创建MySQL mysql -u root -p create user 'username'@'%' identified by 'password'; %可以选 ...
- Linux下 svn相关操作
Linux下 svn相关操作 一.首先看看svn安装的位置: 命令: find / -name svn /var/svn :表示安装目录 /user/bin/svn :表示命令目录 可以看到的是svn ...
- linux下对/sys/class/gpio中的gpio的控制 (转)
在嵌入式设备中对GPIO的操作是最基本的操作.一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的.其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/clas ...
- linux下的一些操作(持续更新)
文件操作 创建文件夹: mkdir 文件夹名称 查看当前目录的文件夹及文件:ls 参看当前文件夹下的所有文件及信息: ls -l 删除空文件夹:rmdir 文件夹名称 删除非空文件夹:rm rf 文件 ...
- linux下使用vi操作
ESC : 进入命令模式 linux下使用vi后,怎样跳转到文件结尾 pagedown键连续按 虽然我也这么用,但还是太笨了.问了高手,方法是按shift+g,另外,到文件开头是gg. linux ...
- 使用linux下的C操作SQLLITE
from: http://baike.so.com/doc/1529694.html 由于Linux下侧重使用命令,没有win的操作容易上手,所以在测试C操作SQLITE时会比较容易出现错误,给大家做 ...
随机推荐
- tyvj 1059 过河 dp
P1059 过河 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2005 提高组 第二道 描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳 ...
- HashMap和ConcurrentHashMap和HashTable的底层原理与剖析
HashMap 可以允许key为null,value为null,但HashMap的是线程不安全的 HashMap 底层是数组 + 链表的数据结构 在jdk 1.7 中 map集合中的每一项都是一个 ...
- sklearn中预测模型的score函数
sklearn.linear_model.LinearRegression.score score(self, X, y, sample_weight=None) Returns the coeffi ...
- python基础7 - 函数
1. 函数的快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数 ...
- Prism初研究之使用Prism实现WPF的MVVM模式
转自:http://www.cnblogs.com/qianzi067/p/5804880.html
- Go-gin CORS 跨域中间件
原文:https://stackoverflow.com/questions/29418478/go-gin-framework-cors func CORSMiddleware() gin.Hand ...
- golang采坑记 一(http与json)
http服务端在把json串写入http.ResponseWriter对象的时候我们常用的方式如下: //方法一: func ...(w http.ResponseWriter, r *http.Re ...
- linux的find命令详解
find命令是用来在给定的目录下查找符合给定条件的文件 find [OPTIONS] [查找起始路径] [查找条件] [处理动作] 一.OPTIONS参数 -P.-L.-H:控制软连接的对待方式, ...
- XML的两种解析方式
JDK提供的XML解析方式分为两种:DOM方式和SAX方式DOM:Document Object Model.需要读取整个XML文档,先需要在内存中构架代表整个DOM树的Document对象,可以进行 ...
- Qt事件系统基本概念
(转自:http://www.cnblogs.com/andy1987/p/3322059.html) 1. QT事件系统 Qt应用程序的消息处理是基于事件驱动的,程序的每个动作都是由某个事件所触发的 ...