Cubieboard官方 GPIO驱动使用总结

最近参考了tll同学的GPIO操作教程,终于完成了CB的GPIO控制操作。
板子使用的操作系统是官方标准系统1.1版本的linaro官方img的,本身已经带gpio驱动文件。
1.官方驱动为gpio-sunxi.ko,位于 /lib/modules/3.0.62/kernel/drivers/gpio/gpio-sunxi.ko。
2.因为系统启动后并没有加载该驱动模块,需要用户自行插入,使用insmod命令即可。之后lsmod可以看到gpio-sunxi.
当然也可以编辑/etc/modules,在其中加入gpio-sunxi.ko。重启后lsmod检查是否已经加载。
3.驱动加载完毕后就可以操作GPIO口了。
对于GPIO口的操作,需要有以下三个步骤:
1).需要指明需要操作的端口号。
echo 4 > /sys/class/gpio/export 
ls /sys/class/gpio 
会出现我们需要的端口文件夹 gpio4-pe4,
如果 echo 1 > /sys/class/gpio/export  似乎出现 gpio1-pe1。
2)打开gpio4-pe4,或者 ls gpio4-pe4,可以看到gpio4-pe4里面的文件,有2个文件与我们操作有关:
分别是 direction 和 value ,可以看出分别代表端口的方向 和端口的值。
对于direction ,可以写入echo out > /sys/class/gpio/gpio4-pe4/direction 设置该端口为输出端。如果不设置,则写入数据也没有反应。
3)端口设置或清零.
通过向value文件写入1或者0来完成端口的设置或清零。
echo 1 > /sys/class/gpio/gpio4-pe4/value ;set 1.
通过上述3个步骤就可完成对GPIO端口的选择、设置、和使用。
但是在使用中发现问题及解决方法:
1 gpio-sunxi.ko驱动不会自动被系统加载,每次启动后需要自己加载,比较麻烦。
解决方法:编辑 /etc/modules 添加gpio驱动模块。之后每次重启后,系统自动加载GPIO模块。
2.每次系统重启后都需要重新设置GPIO口,配置端口方向。
解决方法:编辑 /etc/rc.local,在exit前 加入
echo 1 > /sys/class/gpio/export 
echo out > /sys/class/gpio/gpio4-pe4/direction
完成对GPIP口的选择和端口设置。
3.对于 /sys的操作 需要chmod一下权限。chmod -R 777 /sys .
这也需要编辑/etc/rc.local来实现。

另外,这次我利用CB实现的功能是与ttl智能门锁类似,我是使用手机来控制照明灯。
基本的架构也是利用 LNMP来做服务器,利用php语言对  /sys/class/gpio/gpio4-pe4/value进行读写操作来完成的。
这里需要注意的是 nginx服务器的网站目录设置,之前设置在 /etc/nginx/www/不能完成对 /sys/..的操作。
后来重新修改了网站站点目录,直接设置到 / 下,就可完成对 /sys 文件的操作了。

通过这几天对GPIO的学习,感觉linux者的很强大,哈哈!!!!

原文作者:flyword
原文链接:http://forum.cubietech.com/forum.php?mod=viewthread&tid=725&highlight=gpio

时间: 2024-08-05 17:58:26

Cubieboard官方 GPIO驱动使用总结的相关文章

友坚4412开发板基于Timed_out框架的GPIO驱动分析

Timed GPIO驱动程序分析 Timed GPIO驱动程序是android系统基于linux内核新增加的一类驱动程序,这类驱动程序主要是运用了内核定时器,与内核定时器进行绑定,使得控制GPIO口的高低电平与时间打上关系,既可以实现在一定的时间实现GPIO口为高或者低电平.Timed GPIO驱动被实现为平台设备驱动,Timed GPIO驱动源码位于如下目录:\kernel\drivers\staging\android Timed GPIO驱动程序主要包括如下几个文件: Timed_gpio

MongoDB官方C#驱动中查询条件Query用法

http://www.cnblogs.com/viprx/archive/2012/09/06/2673693.html MongoDB条件查询的基本语法. Query.All("name", "a", "b");//通过多个元素来匹配数组  Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足

linux的GPIO驱动的使用(s5pv210)

开发板:TQ210         内核版本:2.6.35 ######################################################################################################### 这段时间一直在学习linux的驱动,大部分的学习资料都是来自网络论坛.博客.这类资料往往不够系统,全面,且好多资料都是相互拷贝,重复的.因此,学了这么长时间,感觉好没有条理,总是东看一点西看一点,看完也说不出个所以然.不知道大家

开发GPIO驱动的基本套路

最近完成了基于AR9331的GPIO驱动的开发,主要包括:控制一个连接GPIO的灯控:接收一个连接GPIO的按键事件:以及接收一个连接GPIO的脉冲事件. 这里,结合开发实践,总结一下GPIO驱动开发的基本套路 一.准备环节 拿到硬件连接图,找到硬件实体连接中的GPIO是具体哪个,以及高低电平的控制含义 阅读CPU的Datasheet,找到控制GPIO的寄存器地址以及寄存器value的字段含义 二.实现环节 1.注册一个字符设备驱动  --- 一般GPIO驱动都注册为一个字符设备驱动:在字符设备

[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

本文转载自:http://m.blog.csdn.net/kris_fei/article/details/69553422 Platform: ROCKCHIPOS: Android 6.0Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示.Recovery中升级完成后控制GPIO输出高电平点亮LED. 系统自带GPIO控制驱动:内核已经自带了通用GPIO驱动,可以直接在用户空间操作.路径: /sys/class/gpio[email protec

MongoDB 官方C#驱动 封装 DbHelper

这里采用的是mongoDB官网推荐使用.net驱动: http://mongodb.github.io/mongo-csharp-driver/2.4/getting_started/quick_tour/ 官方的示例中 都是在代码里设置的Database 名称   已经习惯了  在连接字符串中设置了,翻看了下官方文档  终于找到在 字符串的方式设置方法了 原来的方式 MongoClient client = new MongoClient(connectionString); var db =

RK3288开发板PopMetal上的GPIO驱动实例

楼主在这边给大家介绍下如何使用PopMetal的GPIO.先讲过程,再讲原理吧, 该驱动需要涉及到的知识点:1,DTS设备树的作用,2,platform虚拟总线驱动的编写. 第一步,添加DTS节点 在/kernel/arch/arm/boot/dts/rockchip.dts下添加如下内容. 下图rockchip-leds-gpio这部分的内容,修改保存, 第二步,在kernel/drivers下创建个LED文件夹,然后加入如下几个文件驱动文件leds.c,Makefile和Kconfig.如下

Linux下GPIO驱动

编写驱动程序,首先要了解是什么类型的设备.linux下的设备分为三类,分别为:字符设备,块设备和网络设备.字符设备类型是根据是否以字符流为数据的交换方式,大部分设备都是字符设备,如键盘,串口等,块设备则是以块为单位进行管理的设备,如,磁盘.网络设备就是网卡等. 其次要了解应用程序和驱动程序的区别,两者的主要区别分为以下三点: 1入口函数的任务不相同,应用程序完成一个任务,驱动只完成初始化工作,比如中断 申请,寄存器设置,定时器设置. 2运行时的cpu模式不相同,驱动具有很高的权限,应用程序是在用

linux通用GPIO驱动

Linux开发平台实现了通用GPIO的驱动,用户通过,SHell或者系统调用能控制GPIO的输出和读取其输入值.其属性文件均在/sys/class/gpio/目录下,该目录下有export和unexport两个属性文件,其余都是连接文件,如gpiochipN等. export文件导出某个GPIO,unexport将导出的GPIO从/sysfs中删除.向export文件写入要操作的GPIO序号N可以导出对应的GPIO设备目录,例如: #echo 68>/sys/class/gpio/export