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操作接口,其 ...
随机推荐
- libpcap详解
转发自http://blog.chinaunix.net/uid-21556133-id-120228.html libpcap(Packet Capture Library),即数据包捕获函数库,是 ...
- 菜鸟vimer成长记——第1章、统一概念
不管学什么技术,我都深信概念是最重要的.是影响整个学习轨迹,决定能在这个技术领域高度. 当然如果你现在的目的不是在学习而在于解决问题(很多人不愿意承认,或者没发现),那概念就暂时没那么重要了. 目的 ...
- 更改VS Code界面为简体中文
.先看一下效果(请忽略我的颜色主题): 1. 点击侧边栏的“扩展”按钮,或者按下Ctrl+Shift+X,安装需要的语言包 2. 通过命令面板设置语言 点击“查看”——“命令面板”,或者快捷键Ctr ...
- 用xpo实现dc技术的关键点-XPO是如何处理接口类型与真实类型的对应关系的
https://www.devexpress.com/Support/Center/Question/Details/Q487000/xpodatamodel-and-model-interfaces ...
- 微信小程序中的 hover-class
微信小程序中,可以用 hover-class 属性来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button ...
- 保留mysql数据库中的最新1000条记录
<?php mysql_connect("localhost","root","root");mysql_select_db(&quo ...
- OpenGL(2)-窗口
写在前面 通过本节,你可以毫不费力的--->创建一个窗口 OpenGL中窗口,即载体 导入头文件 #include <glad/glad.h> #include <GLFW/g ...
- ios手机处理keyup事件时的兼容性问题
在安卓手机中没有任何问题,但在ios手机中出现当输入法中输入内容时,事件keyup没有效果 解决办法: //keyup的兼容性处理 var bind_name = 'input'; if (navig ...
- (转)一个简单的rest_framework demo
转发:https://www.cnblogs.com/fu-yong/p/9100559.html models.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from ...
- Scrum立会报告+燃尽图(Final阶段第一次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2480 项目地址:https://coding.net/u/wuyy694 ...