/sys/class/gpio
发布日期:2021-06-29 02:32:42 浏览次数:2 分类:技术文章

本文共 1449 字,大约阅读时间需要 4 分钟。

在嵌入式设备中对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

转载地址:https://blog.csdn.net/yyyyyyyyyywwwwwwwwww/article/details/43938789 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux内核驱动之GPIO子系统(一)GPIO的使用
下一篇:开发OpenWrt路由器上LuCI的模块+++

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月03日 12时58分50秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Atitit 工程师程序员技术级别对应表与主要特征 P1--p6 说明 类别 职称 对应技术标志 P5 高级工程师 工程师类 一般四五年 P6 资深开发 工程师类 78年经历 P7 P7 2019-04-29
Atitit btree 搜索原理 目录 第一节 左边小右边大 的有序树 1 第二节 平衡算法 1 第三节 层次高度一般3--4层 3 第四节 类似索引 3 第二章 Ref 5 第一节 左边小右 2019-04-29
Atitit保证架构超前性 前瞻性 目录 第一章 为什么需要修改代码 1 第一节 业务增加功能 1 第二节 增加字段 1 第三节 增加表数据需要查询 修改 1 第四节 类库升级 1 第二章 简单抽象 2019-04-29
Atitit 存储与数据库性能调优流程目录1. 数据库出现性能瓶颈,对外表现有几个方面: 2019-04-29
Atitit 为什么oracle这类大型数据库比mysql的性能机制目录1. 分区机制差别 11.1. Join算 2019-04-29
Atitit 数据库核心技术index索引技术 btree hash lsm fulltxt目录1.1. HASH 2019-04-29
Atitit 存储引擎核心技术 总结目录1. 表的存储有三个文件:结构+数据+索引 12. 页式管理 2019-04-29
Atitit 未来数据库新特性展望目录1. 统一的翻页 21.1. 2 Easy Top-N 2019-04-29
paip.tree 生成目录树到txt后的折叠查看 2019-04-29
Attit 现代编程语言重要特性目录第一章 类型系统 基本三大类型 2第一节 字符串 数字 bool 2第二节 推断局部变量 2第三节 动态类型 2第二章 可读性与开发效率 简单性 2 2019-04-29
Atitit glb 3tie city lst 三线城市列表 数据目录1. 全球范围内约90个城市 三线 12. 世界性三线城市全球共 2019-04-29
Atitit glb 1tie 2tie city lst 一二线城市列表数据约50个一线城市Alpha ++ 阿尔法++,,London 伦敦,,New York 纽约,,Alpha + 2019-04-29
Atitit fms Strait (海峡) lst 数据列表目录1. 4大洋 12. 著名的海大约40个,总共约55个海 13. 海区列表 23.1. 、波利尼西亚(Polynesia, 2019-04-29
Atitit Major island groups and archipelagos 主要的岛群和群岛目录资料目录1. 岛群 波利尼西亚(Polynesia, 美拉尼西亚(Melanesia, 2019-04-29
Atitit trave islands list 旅游资源列表岛屿目录1. 东南亚著名的旅游岛屿 21.1. Cjkv 日韩 冲绳 琉球 济州岛 北海道 21.2. 中国 涠洲岛 南澳 2019-04-29
Atitit 旅游强县城 名单列表 旅游资源但其实,北上广深大概只占全国面积的0.33%,加上新一线城市,也只是占了全国面积的3%。在剩下的97%的土地上,有着约300个地级市,3000个 2019-04-29
【论文-笔记】海防雷达仿真系统中PPI的设计与实现 2019-04-29
2019-10-15 相交链表 2019-04-29
2019-10-28 奇偶链表 2019-04-29
2019-10-29 移除链表元素 2019-04-29