RK3399用户空间IO控制

1.准备
官方文档:Documentation/gpio.txt中“Sysfs Interface for Userspace (OPTIONAL)”部分
代码路径:drivers/gpio/gpiolib.c
sysfs路径:/sys/class/gpio
2.接口介绍:

GPIO sysfs路径下有两个使用的接口:export和unexport,他们都是只写的:
root@firefly:~# ll /sys/class/gpio/
...
--w------- 1 root root 4096 Jan 1 2011 export
--w------- 1 root root 4096 Jan 1 2011 unexport
...
expo

rt:向内核申请GPIO,写入对应的GPIO值直接申请,比如申请控制GPIO7A3,则使用命令:

echo 227 > /sys/class/gpio/export

写入后,可以看到已经生成节点:

/sys/class/gpio/gpio227/

如果申请不到,极大可能是已经申请过该GPIO,包括内核申请或者使用上述方法申请过,报的错误为:
-bash: echo: write error: Device or resource busy
GPIO值在RK3288中的计算方法为:bank×32+pin,如:
GPIO7A3: 7×32+3=227
GPIO0B5: 0×32+13=13
unexport:释放相应的GPIO,如:

echo 227 > /sys/class/gpio/unexport

相应的节点会被删掉。
下面看看相应gpio节点下面的接口,比如GPIO7A3:

GPIO SYSFSroot@firefly:/mnt/py/fireflyP# ll /sys/class/gpio/gpio227/
...
-rw-r--r-- 1 root root 4096 Aug 8 06:36 active_low
-rw-r--r-- 1 root root 4096 Aug 8 06:36 direction
-rw-r--r-- 1 root root 4096 Aug 8 06:36 edge
-rw-r--r-- 1 root root 4096 Aug 8 06:36 value
...

direction: 参数为“out”(输出)和“in”(输入),可读可写
value: 参数为“0”(低电平)和“1”(高电平),可读可写
edge:可以监听对应引脚的事件,需要把direction设置为输入。
参数为”none”(无中断触发), “rising”(上升沿触发), “falling”(下降沿触发), “both”(上升、下降都沿
触发)。
用户层可以使用poll,设置events为POLLPRI | POLLERR等待事件触发,当对应的模式触发后,会返回事
件的消息,此时需要读取value值,以表示改触发已经处理,否则会一直poll到原事件。
active_low:此值可以反转value中的值

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值