[问题] 要如何使一般user也能使用device?

楼主: wtchen (没有存在感的人)   2015-06-16 17:41:07
虽然我问过相关的问题,不过遇到瓶颈只好再问详细点
我写了一个module想用rpi的gpio控制一个含3个LED的小电路
/dev 下也有LED_0 LED_1 LED_2
我希望一般user可以写入这三个file(用0或1)去控制LED的开关
程式码如下:
https://gist.github.com/gnitnaw/b116f358fa688897fe00
之前不管是用一般user还是root都不能改变/dev/LED_(0,1,2)
改掉一些bug以后,用root可以control了,一般user还是不行
(写到现在还没开始ioctl...唉...我的学习速度真慢)
之后可能在kernel学习过程中会有更多问题要上来请教,希望不会违反板规
然后我也会回馈自己所学(拙作请勿见怪)。
我写了个小程式尝试去write /dev/LDE_0 :
int main(void)
{
char path[PATH_SIZE], buf[BUF_SIZE];
int i = 0, fd = 0;
snprintf(path, sizeof(path), "/dev/LED_0");
fd = open(path, O_WRONLY);
if (fd < 0) {
perror("Error opening GPIO pin");
exit(EXIT_FAILURE);
}
printf("Set GPIO pins to output, logic level :\n");
strncpy(buf, "1", 1);
buf[1] = '\0';
if (write(fd, buf, sizeof(buf)) < 0) {
perror("write, set pin output");
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
作者: alongalone (沿着孤单的路)   2015-06-16 18:00:00
write的时候没有error 发生吗?
楼主: wtchen (没有存在感的人)   2015-06-16 18:37:00
不能直接用echo吗?echo得到的讯息是没有权限
作者: alongalone (沿着孤单的路)   2015-06-16 22:23:00
我觉得你要不要先把tasklet那段code拿掉先看会不会亮;另外你能确定gpio跟led是连结正确的吗
作者: leolarrel (真.粽子无双)   2015-06-17 08:56:00
有检查/dev/LED_0的档案权限吗?看来是档案权限没打开
楼主: wtchen (没有存在感的人)   2015-06-17 15:52:00
对,权限没打开没错,请问是要手动打开吗?设成666?
作者: leolarrel (真.粽子无双)   2015-06-17 18:18:00
设成666应该可以
楼主: wtchen (没有存在感的人)   2015-06-17 20:39:00
成功了,多谢

Links booklink

Contact Us: admin [ a t ] ucptt.com