Arturete Arturete - 11 months ago 74
Linux Question

SysFs interface. I can't export gpio pins in a Zybo Board

Using a linux-kernel compiled as it is described here, I'm trying to make a led blinking following this wiki: Linux GPIO Driver. I'm working with a Zybo-board of Xilinx.

I enabled the kernel options:


I checked that I have mounted in /sys the SysFs

I want to configure the pin 7 of the MIO port because it is attached to the led LD4 in the board. So I used this expression:

echo 7 > /sys/class/gpio/export

And I always obtain this error:

export_store: invalid GPIO 7
ash: write error: Invalid argument

I have also tried to export the values
145 (138+7)
because of the explanation I found here: forum_link and 86 because this guy got the things working basic_example. But I always obtained the same error.

Could you give me some help? Maybe a I have to use other offset? Or is it more related with permission configuration??

Answer Source

I faced the same problem. The solusion is to add 906 as a "base" of the "address-gpio". For example, if you want to manage the link of the PS connected to MIO 7 you should do something like this:

zynq> echo 913 > /sys/class/gpio/export
zynq> echo out > /sys/class/gpio/gpio913/direction
zynq> echo 1 > /sys/class/gpio/gpio913/value

(where 906+7=913 of course).

Or, if you want to switch it off:

 zynq> echo 0 > /sys/class/gpio/gpio913/value

How do I find this value? Well, in my case I was just lucky: if you have a look in

ls /sys/class/gpio

you can see that it already exists gpiochip906. Go inside this directory and have a look inside the file base (using "less" for example): there is only the value 906 of course