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时会比较容易出现错误,给大家做 ...
随机推荐
- CSS 技巧总结
CSS 技巧和经验列表 1. 如何清除图片下方出现的几像素的空白 方法一: img{display:block;} 方法二: img{vertical-align:top;} 除了top值,还可以设置 ...
- LeetCode第[7]题(Java):Reverse Integer 标签:数学
题目:Reverse Integer 难度:Easy 题目内容: Given a 32-bit signed integer, reverse digits of an integer. Note:A ...
- redis、kafka、rabittMQ对比 (转)
本文不对三者之间的性能进行对比,只是从三者的特性上区分他们,并指出三者的不用应用场景. 1.publish/subscribe 发布订阅模式如下图所示可以具有多个生产者和发布者,redis.kafka ...
- Java 控制台应用程序部署 Linux
http://blog.csdn.net/brushli/article/details/12106339 注意:Windows 下编译的sh脚本,在linux上会存在编码问题,需在 linux 下编 ...
- oracle数据库查看用户相关语句
1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户 ...
- 转:session和cookie以及catch三者的区别
以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息. Session则 ...
- windows7自动登录后锁定 & 其他VBS
首先设置自动登录(原已设置登录密码),在开始菜单搜索框输 入 “netplwiz” 按 回车,打开高级用户控制面板,然后取消对“要使用本机,用户需输入用户名和密码(E)”项的勾选,系统弹出窗口要求输入 ...
- 【python】imp模块的使用
是import在程序中的使用 [一]函数load_source imp.load_source(moduleName, sourceFile) 使用: abc = imp.load_source('d ...
- FLASH动作脚本详解
FLASH动作脚本详解 一.FLASH脚本基础入门讲解 二.按钮AS的编写 三.影片剪辑的AS编写 四.动态文本框 五.影片剪辑的拖拽 六.流程控制与循环语句 七.绘图及颜色的AS的编写 八.声音 A ...
- Visual Studio Nuget还原步骤
vs2013是在这里还原: NuGet套件还原步骤(以vs2012为例) 下载别人的范例,出现由于Nuget套件不存在而无法启动时:效果如下图: 步骤如下:1.点击 项目->启用NuGet程序包 ...