Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166652
  • 博文数量: 33
  • 博客积分: 2143
  • 博客等级: 大尉
  • 技术积分: 807
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 10:24
个人简介

Show me the money

文章分类

全部博文(33)

文章存档

2015年(1)

2013年(1)

2011年(12)

2010年(14)

2009年(2)

2008年(2)

2005年(1)

我的朋友

分类: Android平台

2015-10-13 14:01:28

最近要做一个HAL模块,用GPIO供电。
上网查了一下,可以通过echo N > /sys/class/gpio/export,动态导出/sys/class/gpio/gpioN,然后通过写入/sys/class/gpio/gpioN下directiion和value两个节点文件控制GPIO的输出。
这就简单了,马上改代码,编译,满怀希望地运行,蹦出了一个EACESS错误。
ls看了一下/sys/class/gpio/export的属性,owner是root。这难不倒我,马上修改ueventd.board.rc,加上一行
/sys/class/gpio/export 0660 system system

运行,还是EACESS,export的owner还是root。又上网搜了一下,原来描述sysfs需要5列,比通常的多1列。由于不明白第2列是啥意思,依样画葫芦改成
/sys/class/gpio/export enabled 0660 system system

运行,还是EACESS;这太没道理了。由于找不到太多资料,那就自己看ueventd的代码了。原来对于sysfs,要用第1列和第2列一起拼成1个路径。那就继续修改
/sys/class/gpio  export  0660  system  system

运行,还是EACESS。继续查看ueventd的代码,ueventd要从sysfs目录下的uevent节点中读取信息,但是/sys/class/gpio目录下并没有uevent。通过ueventd修改节点属性行不通了,除非改kernel让gpio生成uevent。

这个太麻烦了,还是简单粗暴的改/init.board.rc吧,加上
chmod system system /sys/class/gpio/export
然后在/ueventd.board.rc中加入
/sys/class/gpio/gpio8  direction  0660  system  system
/sys/class/gpio/gpio8  value  0660  system  system
希望在程序中控制gpio的导出,然后再设置gpio的direction/value。

运行,还是EACCESS。在程序中用stat查看节点属性,/sys/class/gpio/gpio8/direction的owner还是root。这下彻底没辙了,也没那么多功夫继续debug了。还是继续简单粗暴的修改/init.board.rc吧,于是得到

write /sys/class/gpio/export 8
chmod system system /sys/class/gpio/gpio8/direction
chmod system system /sys/class/gpio/gpio8/value

终于OK了

阅读(3575) | 评论(0) | 转发(0) |
0

上一篇:一种简化dll显式调用的方法

下一篇:没有了

给主人留下些什么吧!~~