Thanks! That makes a lot of sense now. I figured out I have to open export 
as write only which agrees with the permissions you showed. I've moved 
GPIOs to export while the board was running using the command line, so I 
think its okay.

So changing my code subsituting O_WRONLY for O_RDWR and now I'm getting the 
error "Writing Error: Device or Resource is busy." It doesn't seem like I 
can use C code to bring a GPIO to the user space. Is there a way around it?

I'll look up the process forking too.

On Wednesday, July 1, 2015 at 5:22:01 PM UTC-4, William Hermans wrote:
>
> Also, as I'm unsure what exporting a pin config will do while the system 
> is running . . . you should make 100% absolutely sure you know what you're 
> doing. So you do not fry your board.
>
> On Wed, Jul 1, 2015 at 2:19 PM, William Hermans <yyr...@gmail.com 
> <javascript:>> wrote:
>
>> debian@beaglebone:~$ *cat /sys/class/gpio/export*
>> cat: /sys/class/gpio/export: *Permission denied*
>> debian@beaglebone:~$ sudo *cat /sys/class/gpio/export*
>> cat: /sys/class/gpio/export: *Permission denied*
>> debian@beaglebone:~$ *sudo su*
>> root@beaglebone:/home/debian# *cat /sys/class/gpio/export*
>> cat: /sys/class/gpio/export: *Permission denied*
>> root@beaglebone:/home/debian# *ls -al /sys/class/gpio/*
>> total 0
>> drwxr-xr-x  2 root root    0 Dec 31  1999 .
>> drwxr-xr-x 59 root root    0 Dec 31  1999 ..
>> *--w-------  *1 root root 4096 Dec 31  1999 export
>> lrwxrwxrwx  1 root root    0 Dec 31  1999 gpiochip0 -> 
>> ../../devices/virtual/gpio/gpiochip0
>> lrwxrwxrwx  1 root root    0 Dec 31  1999 gpiochip32 -> 
>> ../../devices/virtual/gpio/gpiochip32
>> lrwxrwxrwx  1 root root    0 Dec 31  1999 gpiochip64 -> 
>> ../../devices/virtual/gpio/gpiochip64
>> lrwxrwxrwx  1 root root    0 Dec 31  1999 gpiochip96 -> 
>> ../../devices/virtual/gpio/gpiochip96
>> --w-------  1 root root 4096 Dec 31  1999 unexport
>> root@beaglebone:/home/debian# *whoami*
>> root
>>
>> read this post . . 
>>
>>
>> http://unix.stackexchange.com/questions/118716/unable-to-write-to-a-gpio-pin-despite-file-permissions-on-sys-class-gpio-gpio18
>>
>> 3rd post or second answer should fix you up. However do note that what 
>> you're trying to do is "wrong". Meaning: it is insecure. You ( and I too ) 
>> need to read up on process forking. IN short, and perhaps somewhat 
>> incorrect( as I'm not 100% up to speed either ) is that you fork a process, 
>> running privileged commands, and when that command is done, the privileges 
>> are done too . . .
>>
>> Anyway, probably safer to add your regular user to a group that has 
>> limited access to that file.
>>
>>
>> On Wed, Jul 1, 2015 at 8:02 AM, Brendan Merna <bmer...@gmail.com 
>> <javascript:>> wrote:
>>
>>>
>>> I'm trying to manipulate my GPIOs using C code and running into 
>>> "Permission Denied" when running my code and opening the file 
>>> /sys/class/gpio/export. I'm using nano editor, compiling on the Beaglebone 
>>> with gcc, and I'm under root user.
>>>
>>> I would like to do this, so I can set directions and values for the 
>>> GPIOs with my code. I've heard this might be a problem with user and kernel 
>>> space conflicting. I know there are library calls in python and other 
>>> languages to do this that work. Does anyone know what this problem might be 
>>> and our their alternate calls I can do in C?
>>>
>>> I tried to just include the necessary parts of the code.
>>> Code:
>>> #include<fcntl.h>
>>> static const char *GPIO_PATH = "/sys/class/gpio/export";
>>> int main(){
>>>      int file;
>>>      if ((file = open(GPIO_PATH, O_RDWR))<0){
>>>            perror("GPIO: Can't open the device.");
>>>            return -1;
>>>      }
>>>      return 0;
>>> }
>>>
>>> -- 
>>> For more options, visit http://beagleboard.org/discuss
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to beagleboard...@googlegroups.com <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to beagleboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to