【ZYNQ_LINUX】如何使用GPIO

在嵌入式设备中对GPIO的操作是最基本的操作。一般的做法是写一个单独驱动程序,网上大多数的例子都是这样的。其实linux下面有一个通用的GPIO操作接口,就是  “/sys/class/gpio” 方式。

参考 Xilinx ZYNQ-7000 AP SOC 开发实用指南

http://xilinx.eetrend.com/blog/4908

http://www.wiki.xilinx.com/Linux+GPIO+Driver

这是自己的一些想法,可能不对,后面在改正。我之前非常犯愁的就是怎么在Linux  下使用GPIO:mio 和 emio,尤其在sdk 下需要很多的头文件,但是Linux下的应用程序,没有这些头文件应该怎么做,思考之后应该是在 Linux 不用把GPIO 一点一点配置,相反它是一个已经安装好的设备,就像pc 的鼠标和键盘一样,直接打开设备调用就行,至于这个GPIO 设备是怎么安装在Linux 系统里的,其实应该是xilinx 公司已经移植好的, 就像联想写了鼠标的接口,插上就能用一样。所以,我想使用 一个gpio 引脚,就先去使用打开 GPIO 的设备,然后再找一个引脚来用。如果我想用很多gpio 的引脚,可能就有两种做法,一种是一个一个gpio 的引脚来配置然后用,还有一个就是把这些gpio 的引脚写成一个单独的设备,然后在linux启动之后就可以用。

下面先介绍怎么用一个引脚的。

首先gpio 的驱动有没有被导出来,位置在 /sys/class/gpio

ls /sys/class/gpio

【ZYNQ_LINUX】如何使用GPIO

然后我们配置一个引脚 网上和书上用的microzed 开发板,gpio 文件夹下是 gpiochip0 ,例子用的 MIO47引脚,输出命令是 echo 47>/sys/class/gpio/export,但是使用这条命令在我的开发板上就会出错,这里我的引脚是从 906开始的,这里xilinx 的wiki 是有介绍的。

【ZYNQ_LINUX】如何使用GPIO

所以我的开发板的gpio 引脚也是从 906 到1023

下面是对引脚的操作

【ZYNQ_LINUX】如何使用GPIO

这里将上面的编号改成 GPIO 909 就是 mio4


echo 909 > /sys/class/gpio/export
ls /sys/class/gpio/gpio909/
cat /sys/class/gpio/gpio909/direction
cat /sys/class/gpio/gpio909/value
ls /sys/class/gpio/gpio909 
echo out > /sys/class/gpio/gpio909/direction
echo 1 > /sys/class/gpio/gpio909/value
【ZYNQ_LINUX】如何使用GPIO

这里可能和实际电路的连接有关。

【ZYNQ_LINUX】如何使用GPIO

下面继续按照 xilinx  wiki 上做 led 和  key 的设置。