原文链接:
https://blog.csdn.net/zhaoxinfan/article/details/70233549
1、 硬件配置
要启用GPIO,首先需要硬件支持,在vivado下进行zynq内GPIO控制器的配置。
上图是在Zynq中启用GPIO控制器
上图为配置GPIO引脚,通常采用MIO方式输出。除了软件上面配置外,实际电路图中也需要对引脚进行配置。
2、 devicetree配置
gpio@e000a000{
compatible= “xlnx,zynq-gpio-1.0”;
#gpio-cells= <0x2>;
clocks= <0x1 0x2a>;
gpio-controller;
interrupt-parent= <0x3>;
interrupts= <0x0 0x14 0x4>;
reg= <0xe000a000 0x1000>;
pinctrl-names= “default”;
pinctrl-0= <0xa>;
};
[plain] view plain copy
pinctrl@700{
compatible= “xlnx,pinctrl-zynq”;
reg= <0x700 0x200>;
syscon= <0x8>;
…
gpio0-default{
linux,phandle= <0xa>;
phandle= <0xa>;
mux{
function= "gpio0";
groups= "gpio0_7_grp", "gpio0_46_grp", "gpio0_47_grp";
};
conf{
groups= "gpio0_7_grp", "gpio0_46_grp", "gpio0_47_grp";
slew-rate= <0x0>;
io-standard= <0x1>;
};
conf-pull-up{
pins= "MIO46", "MIO47";
bias-pull-up;
};
conf-pull-none{
pins= "MIO7";
bias-disable;
};
};
…
3、 kernel配置
在kernel中添加/sys/class/gpio文件接口,以及zynq gpio驱动
4、 GPIO测试
Linux启动之后,可以查看到/sys/class文件下有GPIO文件夹
通过命令设置MIO10为GPIO输出
[plain] view plain copy
echo 10 > /sys/class/gpio/export
此时可以看到gpio下多了gpio10这个文件夹。
[plain] view plain copy
echo out > /sys/class/gpio/gpio10/direction
配置gpio10将其作为输出
echo 1 > /sys/class/gpio/gpio10/value
echo 0 > /sys/class/gpio/gpio10/value
通过向gpio10的value写入1或0实现拉高拉低。同时可以查看value中的值。
进一步测试可以使用万用表量电压或通过GPIO控制LED灯的亮灭的方式直观看出GPIO引脚电压的拉高拉低。