2009-05-29 18:52:53     GPIO and PFlags

Document created by Aaronwu Employee on Aug 15, 2013
Version 1Show Document
  • View in full screen mode

2009-05-29 18:52:53     GPIO and PFlags


Message: 74792   


I just upgraded from uclinux 2006R2 to 2008R1.5. I am not familiar with the new GPIO interface and the new dynamic device node creation. Can anyone tell me how do I configure GPIO so that I can access the PF0 and PF9 in my user-space application code?


A step by step instructions on how to make my system create the necessary device nodes and a simple example showing how to access the Pflags would be highly appreciated. Thanks a lot.




2009-05-29 18:58:23     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 74793   


if you use the 2008R1 SVN branch rather than the release, the simple-gpio driver will be integrated for you




2009-05-29 19:49:23     Re: GPIO and PFlags


Message: 74794   


I know there is a GPIO option in the menuconfig. But my question was:


How to do access the /dev/PF* in my application code? How do I setup the dynamic device nodes?


Please do not assume that I am an expert. If Analog Device wants to sell more Bfins, I think you really need to improve your support. If you are lazy replying, please do not reply. If you do reply, please be more specific or direct me to the correct documentations!!!




2009-05-29 20:14:13     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 74795   


if you actually described the software you were using instead of asking general questions, you'd probably get better answers


dynamic device nodes are handled for you by default


if you want to know how to use the simple gpio driver, try reading the documentation:





2009-06-01 13:19:26     Re: GPIO and PFlags


Message: 74925   


No, dynamic device nodes are not handled "by default" as you said in uclinux 2008R1.5RC3 - I did not see those /dev/gpio* nodes. After hours of googling, I found that this release use the mdev script at boot time to setup the nodes. I wish Analog Device did a better job putting together the documentation and better support!


I still do not know how to access the PFlags in the new release. In the 2006RC2, I used the device nodes /dev/pf* to manipulate them. In 2008R1.5, I see /dev/gpio0 to /dev/gpio15, but writing to them seems does not change the PFlags. To be more specific, I want to access PF0/SPISS and PF9, how do I do this with the GPIO driver in 2008R1.5RC3? Thanks.




2009-06-01 14:13:41     Re: GPIO and PFlags


Message: 74929   




It _is_ handled by default if you are using one on the ADI platforms - if you upgraded - and didn't upgrade your vendor files properly - there isn't much we can do about the problems that you are imposing on yourself...


Rather than go down rat holes - can you describe why you are trying to do? Is it just wiggle (output) the pins? or as input? or use them as SPI select?






2009-06-01 15:29:03     Re: GPIO and PFlags


Message: 74932   


I did use one of the ADI platform - Venders: Analog Devices: BF533-Stamp. If you check the rc file in this vendor tree of 2008R1.5RC3, you will find it does not use the mdev script to setup the nodes. It tooks me hours if not days to figure out how to add the mdev into the rc file to setup the device nodes - not with the help of your documentations but of some article that I googled on the Internet. If only you could put this on your web site or be more specific and detailed in answering questions from users who are not familar with the new release like me!


I have a custom board that use a BF532 CPU that closely resembles the BF533 stamp board. What I want to do is to use the SPI driver with PF0/SPISS as its chip select and PF9 as a control line to talk to our front panel. The SPI is used as a half-duplex interface so that:


1. When the BF SPI writes, our firmware sets the control line PF9 to 0.


2. When the BF SPI reads, our firmware sets the control line PF9 to 1.


3. PF0/SPISS acts as the SPI chip select.


In 2006RC2, I used to the PFlag driver to control PF0 and PF9. In the new release, I do not know how to do this with the GPIO driver - I was told by Mike that the PFlag driver was integrated into the new GPIO driver. But I tried to write to /dev/gpio0 and /dev/gpi09 without success. What should I do?


I believe this should be a pretty simple problem, but I could not find the right way to do it on your web site. The pflag-test program comes with the 2008R1.5 release is not working since it tries to acces /dev/pf* that do not exist any more in the new release. I suggest you remove it if its out of date - broken programs bring more confuse to users.




2009-06-01 16:26:57     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 74934   


the default BF533-STAMP rc file looks just fine to me:



the documentation already clearly covers device management (and mdev):



did you actually read the simple-gpio documentation i already pointed you to ?




2009-06-01 17:03:52     Re: GPIO and PFlags


Message: 74935   


Yes, I read the gpio documentation. But it does not mention the map between /dev/pf* and /dev/gpio*. I IMPLY that /dev/gpio# is the same as /dev/pf#. Is this true?


As I mentioned, I could not set the PF0 and PF9 via /dev/gpio0 and /dev/gpio9. For example, I did:


1.) echo -n O > /dev/gpio9


2.) echo -n 1 > /dev/gpio9


But the above commands did not set PF9 to high.




2009-06-01 17:11:34     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 74936   


the GPIOs are freed when the device is closed.  so you'll have to make sure to not close the fd if you want to keep the settings stable.  ive added a note to the documentation about this.


the P?## to GPIO## binding is a linear map with PF0 starting at 0.  you can review the interrupts page for the binding:





2009-06-02 18:26:15     Re: GPIO and PFlags


Message: 75043   


This seems to be a bug to me: if I do


echo -n "O1" > /dev/gpio9,


it actually changes the direction of PF9 to input in the FIO_DIR register (bit 9 is set to 0). I think I will write my own driver to control the PFlags.




2009-06-02 18:39:46     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 75044   


no it doesnt.  the GPIO was freed after the echo finished just like i said and like the documentation states.




2009-06-02 19:48:23     Re: GPIO and PFlags


Message: 75045   


I actually read the FIO_DIR register before and after writing "O1" to gpio0 and gpio9 w/ the GPIO driver. The result was that the corresponding bits were cleared. It seems to me that it has nothing to do with whether the fd is released or not.




2009-06-02 19:55:35     Re: GPIO and PFlags

Mike Frysinger (UNITED STATES)

Message: 75046   


if you want to purpose that course, that's your business