在嵌入式设备中对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 操作方法相关推荐

  1. Linux下创建GPIO(/sys/class/gpio)

       通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direct ...

  2. 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十四)具体单板的GPIO操作方法

    文章目录 1.具体单板的GPIO操作方法 1.1 IMX6ULL的GPIO操作方法 1.1.1 IMX6ULL的GPIO模块结构 1.1.2 CCM用于设置是否向GPIO模块提供时钟 1.1.3 IO ...

  3. IMX6ULL的GPIO操作方法

    文章目录 1 IMX6ULL的GPIO模块结构 2 CCM用于设置是否向GPIO模块提供时钟 3 IOMUXC:引脚的模式(Mode.功能) 4 GPIO模块内部 5 如何编程 5.1 读GPIO 5 ...

  4. can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法

    来源:百问网 作者:韦东山 本文字数:1652,阅读时长:4分钟 CCM: Clock Controller Module (时钟控制模块) IOMUXC : IOMUX Controller,IO ...

  5. /sys/class/gpio 文件接口操作IO端口(s3c2440)

    http://blog.csdn.net/mirkerson/article/details/8464231# 转载于:https://blog.51cto.com/xhh51xhh/1690301

  6. android gpio驱动实例,Android/Linux 驱动层对GPIO口的操作方法和相关代码

    实例: unsigned int otg_en_pin=952; ----->高通的gpio的基础值为902,这里我们时间的gpio为50,即这里定义值是要设置为952. //young.yan ...

  7. linux设备树sysfs,迅为-iMX6开发板-设备树内核-sys方式控制GPIO

    本文档主要讲解迅为-iMX6 开发板,通过 sys 文件的方式来控制 GPIO. 要通过 sys 控制 GPIO,需要做以下几步操作: 1 开启内核中的"GPIO_SYSFS"驱动 ...

  8. GPIO应用开发方法【ZT】

    在Linux的应用层程序中,可以使用系统中的GPIOLIB模块在用户空间提供的sysfs接口,实现应用层对GPIO的独立控制.本节介绍的GPIO的这种操作方式是在Linux 2.6.35内核之后引入的 ...

  9. linux用户态使用gpio中断方法

    一.用户空间gpio的调用文件 用户空间访问gpio,即通过sysfs接口访问gpio,下面是/sys/class/gpio目录下的三种文件: –export/unexport文件 –gpioN指代具 ...

最新文章

  1. 手握五大成功秘密武器
  2. Spring过滤器组件自动扫描
  3. silverlight开发无法调试问题
  4. √GMAP.NET 地图
  5. 什么是实践中真正在用的数据科学系统?
  6. mysql数据库优化skip_优化配置mysql数据库优化
  7. Java线程池(3)- JUC Executors 源码分析
  8. ASP.NET与JS交互
  9. Struts2后台使用Request和Session方法
  10. 想要升级Big Sur 了?良心建议看看这个
  11. 米勒-拉宾素数检测法(判断一个极大的数是否为质数)——算法解析
  12. Arch LinuxLinux引导教程 2021.7.22
  13. android 5.1 取消录制屏幕跳出的权限对话框问题(开发版,不适用手机)
  14. 关于几何学发展的三阶段
  15. 2019 南京 网络赛 B (二维偏序,树状数组离线)
  16. 小波变换比傅里叶变换好在哪里_小波变换与傅里叶变换详解——代码下载——非平稳信号与平稳信号的滤波效果对比
  17. Unity3D 建筑类 虚拟漫游 PC 端 优化
  18. ubuntu16.04下面安装搜狗中文输入法
  19. RBAC新解:基于资源的权限管理(Resource-Based Access Control)
  20. postgresql age

热门文章

  1. 基于ssm框架的农产品扶农商农平台的设计与实现
  2. 人机交互系统(1.2) ——深度神经网络(孪生网络)
  3. android 应用被系统回收,莫往Applicaotion存缓存/app被系统回收之后再打开发生了什么...
  4. 开展跨境电商企业需要哪些资质?
  5. 爱春秋-在线挑战-综合渗透训练全部详解(更新中)
  6. 将vue-admin-template组件默认英文语言改成中文
  7. Unsupervised Learning: Deep Auto-encoder
  8. 第一章 Arm 架构科普解读(2023新)
  9. 隐私计算之差分隐私-Laplace机制
  10. PCB设计中的的3W规则和20H原则