Zynq-7000系列之linux开发学习笔记:Linux下的MIO/EMIO GPIO驱动与操作(八)

开发板:Zynq7030数据采集板
PC平台:Ubuntu-18.04 + MobaXterm
开发环境:Xilinx Vivado + SDK -18.3
交叉编译工具:arm-linux-gnueabihf-
学习目标:通过Linux下GPIO驱动控制开发板上的LED灯

一、Zynq Linux的GPIO驱动

在前面文章:Zynq-7000系列之linux开发学习笔记:PS和PL端的GPIO使用(三)中分享了Zynq下GPIO的三种类型,由于使用的硬件关系,只分享EMIO和AXI_GPIO的具体配置流程。由于是在裸机的情况下进行的GPIO操作,需要在Vivado和SDK下对PS和PL端进行配置,还要在SDK里面编写程序,才能通过JTAG的方式下载到板子上运行。
但在Linux系统环境下,操作GPIO是非常方便的事情,一般都是通过驱动程序来进行操作。驱动程序可以通过自己编写来实现,也可以直接采用Linux下的驱动程序。

二、EMIO_GPIO

从前面几篇文章中可知:移植Linaro操作系统的流程中,生成FSBL阶段时配置了一个EMIO连接到PL端的PIN脚。
可以查看一下编译内核的时候,在 ./linux-xlnx-xilinx-v2018.3/arch/arm/configs 路径下的Xilinx Zynq官方配置文件 xilinx_zynq_defconfig ,是否使能了下面内容:

CONFIG_GPIO_SYSFS=y
CONFIG_SYSVIPC=y
CONFIG_GPIO_ZYNQ=y

查看通过SDK生成的设备树文件,包含有下面GPIO内容:

		gpio@e000a000 {
   
   
			compatible = "xlnx,zynq-gpio-1.0";
			#gpio-cells = <0x2>;
			clocks = <0x1 0x2a>;
			gpio-controller;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x14 0x4>;
			reg = <0xe000a000 0x1000>;
			emio-gpio-width = <0x1>;
			gpio-mask-high = <0x0>;
			gpio-mask-low = <0x5600>;
		};

1、Linux下Sysfs方式直接操作GPIO

在多GPIO的系统下,需要确定要控制GPIO口的编号,一种方法就是通过查看./sys/class/gpio路径下的gpiochips编号,它反映了GPIO在系统中的地址。还有一种方法比较麻烦,就不提了0.0.0

root@linaro-ubuntu-desktop:~$ cd /sys/class/gpio/
root@linaro-ubuntu-desktop:/sys/class/gpio$ ls
export  
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Claudedy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值