概述

通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户空间,GPIO 的操作接口包括 direction 和 value 等,direction 控制 GPIO 方向,而 value 可控制 GPIO 输出或获得 GPIO 输入。文件 IO 方式操作 GPIO,使用到了4个函数 open、close、read、write。

首先,看看系统中有没有“/sys/class/gpio”这个文件夹。如果没有请在编译内核的时候加入:

Device Drivers -> GPIO Support ->/sys/class/gpio/… (sysfs interface)。

/sys/class/gpio 的使用说明

如果是在已经适配好的 Linux 内核上,那么相信已经有了完成的 gpiochip,可以在用户空间 /sys/class/gpio 目录下看到如下文件:

export
gpiochip0/
gpiochip32/
gpiochip64/
gpiochip96/
unexport

其中引脚编号可能并不是这些。

说明:

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,寄存器名称,引脚总数。

导出一个引脚的操作步骤

计算引脚编号

首先计算此引脚编号:

引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数

导出引脚

向 /sys/class/gpio/export 写入此编号,比如12号引脚,在 shell 中可以通过以下命令实现:

echo 12 > /sys/class/gpio/export

命令成功后生成 /sys/class/gpio/gpio12 目录,如果没有出现相应的目录,说明此引脚不可导出。

设置方向

direction 文件,定义输入输入方向,可以通过下面命令定义为输出:

echo out > /sys/class/gpio/gpio12/direction

direction 接受的参数可以是:in、out、high、low。其中参数 high / low 在设置方向为输出的同时,将 value 设置为相应的 1 / 0。

查看方向

 cat /sys/class/gpio/gpio12/direction

设置输出值

echo 1 > /sys/class/gpio/gpio12/value

查看输出值

 cat /sys/class/gpio/gpio12/value

取消导出

echo 12 > /sys/class/gpio/unexport

转载于:https://www.cnblogs.com/chay/p/10553920.html

TX2 用文件IO的方式操作GPIO相关推荐

  1. linux IO方式操作gpio

    转自http://blog.sina.com.cn/s/blog_7880d3350102w2um.html http://blog.csdn.net/sukhoi27smk/article/deta ...

  2. A40i使用笔记:GPIO操作方式(用于测试设备io驱动性能)(传统方式、设备树方式、寄存器方式操作GPIO)

    一.前言 前文介绍了文件io的驱动方式,可以用于led点灯灭灯或者一些简单的不需求时序控制的ic操作,但是用于功能类ic,如AD采集芯片等时序控制需求高的,就不行了,这时候就需求高速io去实现指定的芯 ...

  3. python文件输入符_python文件IO与file操作

    1 标准输入输出IO - (1) 打印到屏幕 print() print(self, *args, sep=' ', end='n', file=None): 把传递的表达式 转换成一个 字符串表达式 ...

  4. A40i使用笔记:文件IO驱动方式(慢)(无法应用于大部分ic)

    一.前言 初学linux,从hellow word开始,但是我这现在连初学都算不上,还没到学习hellow word驱动那一步,目前就是利用文件io驱动最最最最简单基础的led或者最最最简单的不要求时 ...

  5. sysfs方式控制GPIO

    sysfs方式控制GPIO 使用"gpiolib"实现框架的平台可选择配置一个GPIO的sysfs用户接口,这不同于debugfs接口,因为它提供GPIO方向和值的控制,而不仅是显 ...

  6. 文件IO实现图片的加密操作

    目录 1.什么是文件IO 2.什么是文件描述符 3.文件相关系统调用函数 (1)打开关闭文件 文件打开open(): 文件关闭close() (2)读写文件 读文件read() 写文件write() ...

  7. Linux文件IO深入剖析

    文章目录 1 linux文件系统基本概念 1.1 文件系统基本概念 1.2 文件系统缓存 2 文件IO访问方式概述 2.1 标准文件IO 2.2 直接IO 2.3 缓存同步 1 linux文件系统基本 ...

  8. 文件IO——标准IO和文件IO的区别

    文件IO和标准IO主要的区别在于有无缓冲区,标准IO在进行系统调用操作时,会先操作缓冲区,而文件IO则直接进行系统调用.(常见的系统调用write.read.printf等) 标准IO:在操作文件的时 ...

  9. python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame

    python和R文件IO操作对比及dataframe创建方式对比 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计背后的 ...

最新文章

  1. 一切成功均源于长期的积累(转)
  2. Js 校验时间、比较时间 和转换时间格式
  3. Error code:1728 Cannot load from mysql.proc. The table is probably corrupted
  4. TensorFlow实现人脸检测和人脸识别
  5. 全球及中国商用杠铃架行业营销策略及投资建议分析报告2021-2027年版
  6. css修改同步保存到文件,谷歌浏览器修改CSS和js后同步保存到文件中 (译)
  7. Windows 环境安装 RabbitMQ
  8. Python读取文件时出现UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x80 in position xx: 解决方案
  9. leetcdoe 26 删除排序数组中的重复项(python)
  10. VMware Converter迁移linux系统虚拟机
  11. RS232RS485协议原理和应用
  12. 锐浪报表,用脚本处理字段
  13. 软件开发方法 | 软件开发过程 辨析
  14. html表格里面嵌入按钮,bootstarp-table表格中嵌套多个BUTON按钮实现
  15. linux里面如何配置软路由,Linux中增加软路由的两种方法
  16. Java3d获取坐标_java-使用带有xzyz坐标和jzy3d的3d表面图
  17. 星际争霸十大挖掘性操作
  18. 5oSf6KeJ5Lul5ZCO5Y+v5Lul55SoYmFzZTY05Yqg5a+G6ZqP56yU
  19. 如何防止服务器记录上网信息,服务器怎么监控上网记录
  20. 51虚拟安卓系统v1.1.0.6-安卓端的虚拟机(支持root,xposed框架)

热门文章

  1. 上海怎样查询最近三年社保明细
  2. 辛普森悖论和朴素贝叶斯
  3. 【阅读笔记】《Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection》
  4. Leslie--Chueng项目服务端、小程序的本地部署操作教程
  5. MySQL学习笔记_03
  6. Take Me To Your Heart by MLTR
  7. 蚌埠市哪有学计算机编程的,蚌埠小孩学习编程
  8. 面向对象:我发奋努力,只为成为更好的人,足以与你比肩而立
  9. 计算机软件监控器,上位监控计算机软件,Upper monitoring computer software,音标,读音,翻译,英文例句,英语词典...
  10. 目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请用数据流图描述下面系统的业务流程。