使用文件IO操作GPIO SysFs方式
来源:互联网 发布:mac手绘用什么软件 编辑:程序博客网 时间:2024/05/18 17:23
使用文件IO操作GPIO SysFs方式
转自:http://blog.csdn.net/xukai871105/article/details/38456801
0 前言
本文描述如果通过文件IO sysfs方式控制树莓派 GPIO端口。通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。
Linux学习可从应用出发,先不纠结Linux驱动编写,先把Linux给玩起来。
【相同与不同】
本文和【EasyARM i.mx28学习笔记——文件IO方式操作GPIO】内容相似,大部分代码相同。通过文件IO操作可以有效地避免平台差异,虽然EasyARM im287平台和树莓派完全不同,但是通过sysfs操作GPIO实现代码大致相同。
和EasyARM im287不同,此处并没有使用交叉编译工具,有树莓派中的gcc工具链编译链接获得可执行文件,而EasyARM im287并不能这样操作。EasyARM im287采用busybox指令集,这也与树莓派中的debian指令集存在差异。
【相关博文】
【EasyARM i.mx28学习笔记——文件IO方式操作GPIO】
【树莓派学习笔记——Shell脚本操作GPIO】
【树莓派学习笔记——交叉编译工具链】
【 Linux学习笔记——例说makefile 索引博文】
【代码仓库】
代码仓库位于bitbucket——rpi-gpio-sysfs ,请使用Hg克隆或者直接下载zip包。请不要使用任何版本的IE浏览器访问链接,除非你已经知道所使用的IE浏览器符合HTML5标准。推荐使用谷歌或者火狐浏览器访问,若使用国产双核浏览器请切换到极速模式。
【原理图示意】
图1 连线示意图
1 暴露GPIO操作接口
2 隐藏GPIO操作接口
3 配置GPIO方向
【简单说明】
【1】dir_str[dir == IN ? 0 : 3], dir == IN ? 2 : 3 如果输入为常数宏IN, 取dir_str[0]=“in”;若输入常数宏为OUT,取dir_str[0]=“out”。此处巧妙的使用了在数组中的“\0”。
4 控制GPIO输出
5 获得GPIO输入
6 GPIO翻转操作
【main函数】
【makefile】——此处的代码tab显示可能存在问题,请以代码仓库为主。
【上传树莓派中 编译链接并执行】
make exec
makefile中exec目标包括以下一个过程,先清除目标文件和可执行文件,然后进行交叉编译,最后使用超级权限运行可执行文件。
makefile的使用详见【 Linux学习笔记——例说makefile 索引博文】
7 总结
【1】树莓派和其他嵌入式Linux开发板存在差别和联系,树莓派同样可以使用sysfs控制GPIO。
【2】树莓派即在其他助剂中交叉编译,也可在平台直接编译。
8 参考资料
【1】RPi Low-level peripherals
0 0
- 使用文件IO操作GPIO SysFs方式
- 树莓派使用文件IO操作GPIO SysFs方式
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
- 文件IO方式操作GPIO
- Linux操作GPIO(文件IO方式)
- sysfs方式控制GPIO
- linux IO方式操作gpio
- Linux下用文件IO的方式操作GPIO
- linux中通用GPIO接口的操作--文件IO方式
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)简单易操作
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- 通过sysfs方式控制GPIO
- 启动和停止Java应用程序的Shell脚本
- 遍历map集合
- sprintf 使用不当越界修改内存
- MFC 获取当前工作路径和可执行文件路径
- Wireshark和TcpDump抓包分析心得
- 使用文件IO操作GPIO SysFs方式
- 练习:Trie树(公共前缀)
- source insight打开samba共享的工程时,界面闪烁问题
- Journal工作原理
- Xcode中git的使用
- git-rebase 超级详细讲解,我竟然看完了
- 用python列表实现括号匹配
- 关于concurrent的子包locks下reentrantReadwritelock的一点疑惑(第二篇)
- MyBatis3整合Spring3、SpringMVC3