首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用“GPIO”访问GPIO( raspberry pi)

不使用“GPIO”访问GPIO( raspberry pi)
EN

Stack Overflow用户
提问于 2012-08-26 20:58:08
回答 1查看 26.1K关注 0票数 20

当然,这个问题可能不是针对覆盆子圆周率的。而且,我对Linux还比较陌生。

我想编写一个小库(如果这很重要的话,用node.js )来使用sysfs访问raspberry pi的GPIO。但是,访问sysfs需要sudo访问,这显然是不好的。

Quick2Wire似乎有一个解决方案,但我想更好地理解它,而不是一味地使用它。当然,他们使用了C,但据我所知,代码并不复杂,很可能只需要bash就可以完成,即使不那么优雅。然而,最重要的是,我不知道为什么会工作。

任何帮助都会很好。

编辑:谢谢你的评论。很明显我需要重新表述这个问题。下面是这样的:应用程序一旦安装(作为root),如何不需要更多的根权限来使用呢?在这种情况下,向组中添加某个人是如何帮助的?/sys/devices/virtual/gpio不是gpio可用的位置,那么这其中的诡计是什么?我真的是一个n00b,所以这些问题可能是不可能的,所以请容忍我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-13 17:02:53

拉凯什,我只是想弄清楚同样的事情,我想我已经解决了。

您根本不需要了解多少makefile。以下是运行sudo make install时在bash中执行的重要行

代码语言:javascript
复制
install: install-files
    groupadd -f --system gpio
    chgrp gpio $(DESTDIR)/bin/gpio-admin
    chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin

groupadd -f --system gpio创建一个名为gpio的系统组。chgrp gpio $(DESTDIR)/bin/gpio-admin将C文件gpio-admin.c编译到的二进制文件组更改为gpio。二进制文件的所有者仍然是root (因为您正在以root的形式运行make。) chmod u=rwxs,g=rx,o= $(DESTDIR)/bin/gpio-admin做了两件重要的事情。首先,它允许gpio组的一个成员运行gpio-admin.其次,它在gpio上设置setuid位.

当您将自己添加到gpio组中时,您可以不使用sudo运行gpio- admin,但是gpio管理将表现为在sudo下运行。这允许它写入/sys/class/gpio/导出文件。它还允许它更改创建的文件/sys/class/gpio/gpiopin编号/方向等的所有者。

即使您将/sys/class/gpio/export的组更改为gpio,并设置允许您向其写入的权限

代码语言:javascript
复制
sudo chgrp gpio /sys/class/gpio/export /sys/class/gpio/unexport
sudo chmod g+rwx /sys/class/gpio/export /sys/class/gpio/unexport

您可以在没有超级用户权限的情况下导出引脚。

代码语言:javascript
复制
echo 22 > /sys/class/gpio/export

但是文件/sys/class/gpio/gpio 22/direction等仍将以root作为所有者和组创建,您需要使用sudo来更改它们。此外,导出和取消导出文件的所有权将在每次重新启动后恢复为root。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12133860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档