原文链接: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引脚电压的拉高拉低。

Logo

更多推荐