/sys/class/gpio 操作方法
在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,那就是我要介绍的 “/sys/class/gpio” 方式。下面以友坚4412开发板上调试为例子说明流程:
首先,看看系统中有没有“/sys/class/gpio”这个文件夹。
如果没有请在编译内核的时候加入 Device Drivers —> GPIO Support —> /sys/class/gpio/… (sysfs interface)。
/sys/class/gpio 的使用说明:
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,寄存器名称,引脚总数 导出一个引脚的操作步骤;
6、首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数;
7、向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出:echo 12 > /sys/class/gpio/export;
8、direction文件,定义输入输入方向,可以通过下面命令定义为输出;
9、echo out > direction, direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0;
10、value文件是端口的数值,为1或0.echo 1 > value
下面在4412开发板下进行一下测试
1.取得GPIO信息,在终端中敲入以下命令:
1.1、$ cd /sys/class/gpio;
1.2、$ for i in gpiochip* ; do echo `cat $i/label`: `cat $i/base` ; done
终端中显示如下:
GPIOA: 10
GPIOA: 128
GPIOA: 160
GPIOA: 192
GPIOA: 224
GPIOA: 193
GPIOA: 164
GPIOA: 196
2.计算GPIO号码
我们把GPE11用来控制LED。
GPE0的头是128,GPE11 就是128+11 = 139.
$ echo 139 >; /sys/class/gpio/export
ls 一下看看有没有 gpio139 这个目录
3.GPIO控制测试。
控制LED所以是输出。
所以我们应该执行:
$ echo out > /sys/class/gpio/gpio139/direction
之后就可以进行输出设置了。
$ echo 1 > /sys/class/gpio/gpio139/value
$ echo 0 > /sys/class/gpio/gpio139/value
/sys/class/gpio 操作方法相关推荐
- Linux下创建GPIO(/sys/class/gpio)
通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direct ...
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十四)具体单板的GPIO操作方法
文章目录 1.具体单板的GPIO操作方法 1.1 IMX6ULL的GPIO操作方法 1.1.1 IMX6ULL的GPIO模块结构 1.1.2 CCM用于设置是否向GPIO模块提供时钟 1.1.3 IO ...
- IMX6ULL的GPIO操作方法
文章目录 1 IMX6ULL的GPIO模块结构 2 CCM用于设置是否向GPIO模块提供时钟 3 IOMUXC:引脚的模式(Mode.功能) 4 GPIO模块内部 5 如何编程 5.1 读GPIO 5 ...
- can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法
来源:百问网 作者:韦东山 本文字数:1652,阅读时长:4分钟 CCM: Clock Controller Module (时钟控制模块) IOMUXC : IOMUX Controller,IO ...
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
http://blog.csdn.net/mirkerson/article/details/8464231# 转载于:https://blog.51cto.com/xhh51xhh/1690301
- android gpio驱动实例,Android/Linux 驱动层对GPIO口的操作方法和相关代码
实例: unsigned int otg_en_pin=952; ----->高通的gpio的基础值为902,这里我们时间的gpio为50,即这里定义值是要设置为952. //young.yan ...
- linux设备树sysfs,迅为-iMX6开发板-设备树内核-sys方式控制GPIO
本文档主要讲解迅为-iMX6 开发板,通过 sys 文件的方式来控制 GPIO. 要通过 sys 控制 GPIO,需要做以下几步操作: 1 开启内核中的"GPIO_SYSFS"驱动 ...
- GPIO应用开发方法【ZT】
在Linux的应用层程序中,可以使用系统中的GPIOLIB模块在用户空间提供的sysfs接口,实现应用层对GPIO的独立控制.本节介绍的GPIO的这种操作方式是在Linux 2.6.35内核之后引入的 ...
- linux用户态使用gpio中断方法
一.用户空间gpio的调用文件 用户空间访问gpio,即通过sysfs接口访问gpio,下面是/sys/class/gpio目录下的三种文件: –export/unexport文件 –gpioN指代具 ...
最新文章
- 手握五大成功秘密武器
- Spring过滤器组件自动扫描
- silverlight开发无法调试问题
- √GMAP.NET 地图
- 什么是实践中真正在用的数据科学系统?
- mysql数据库优化skip_优化配置mysql数据库优化
- Java线程池(3)- JUC Executors 源码分析
- ASP.NET与JS交互
- Struts2后台使用Request和Session方法
- 想要升级Big Sur 了?良心建议看看这个
- 米勒-拉宾素数检测法(判断一个极大的数是否为质数)——算法解析
- Arch LinuxLinux引导教程 2021.7.22
- android 5.1 取消录制屏幕跳出的权限对话框问题(开发版,不适用手机)
- 关于几何学发展的三阶段
- 2019 南京 网络赛 B (二维偏序,树状数组离线)
- 小波变换比傅里叶变换好在哪里_小波变换与傅里叶变换详解——代码下载——非平稳信号与平稳信号的滤波效果对比
- Unity3D 建筑类 虚拟漫游 PC 端 优化
- ubuntu16.04下面安装搜狗中文输入法
- RBAC新解:基于资源的权限管理(Resource-Based Access Control)
- postgresql age
热门文章
- 基于ssm框架的农产品扶农商农平台的设计与实现
- 人机交互系统(1.2) ——深度神经网络(孪生网络)
- android 应用被系统回收,莫往Applicaotion存缓存/app被系统回收之后再打开发生了什么...
- 开展跨境电商企业需要哪些资质?
- 爱春秋-在线挑战-综合渗透训练全部详解(更新中)
- 将vue-admin-template组件默认英文语言改成中文
- Unsupervised Learning: Deep Auto-encoder
- 第一章 Arm 架构科普解读(2023新)
- 隐私计算之差分隐私-Laplace机制
- PCB设计中的的3W规则和20H原则