Arturete Arturete - 1 month ago 22
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:

CONFIG_GPIO_SYSFS=y
CONFIG_SYSFS=y
CONFIG_GPIO_XILINX=y


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

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