300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux设备树sysfs 迅为-iMX6开发板-设备树内核-sys方式控制GPIO

linux设备树sysfs 迅为-iMX6开发板-设备树内核-sys方式控制GPIO

时间:2022-02-15 12:30:37

相关推荐

linux设备树sysfs 迅为-iMX6开发板-设备树内核-sys方式控制GPIO

本文档主要讲解迅为-iMX6 开发板,通过 sys 文件的方式来控制 GPIO。

要通过 sys 控制 GPIO,需要做以下几步操作:

1 开启内核中的“GPIO_SYSFS”驱动配置;

2 确保 IO 被配置为 GPIO,并且没有驱动调用;

3 计算 GPIO 编号,通过命令或者脚本操作 GPIO。

1 GPIO_SYSFS 配置

如下图所示,可以看到内核中 GPIO_SYSFS 是默认配置的,这个驱动所有原厂 BSP 基本

都会包含,一般情况下是默认配置的。

2 确保 IO 被配置为 GPIO,并且没有驱动调用

这里以 LED 的 GPIO 为例, 将 LED 的驱动去掉,确保没有驱动调用。

Device Drivers --->

Character devices --->

Enable LEDS config ---去掉,并重新编译内核烧写到开发板中。

如下图所示配置 menuconfig。

烧写到开发板中,确保没有 led 的设备节点,默认的内核中是有 led 设备节点的,如下图

所示。

3 计算 GPIO 编号并测试

LED 的网络标号为:KEY_ROW6

LED 对应 GPIO 的 PIN 脚名称为:GPIO_2

GPIO_2 对应的宏定义为:#define MX6QDL_PAD_GPIO_2__GPIO1_IO02

那么 GPIO_2 对应的 GPIO 的 bank[n]为 GPIO1_IO02,也就是 bank 1 的 02 号 GPIO。

GPIO 的编号计算方法为:nr=(P -1)* 32 + N;

nr 为编号,P 为 bank 号,N 为具体 bank 中的编号。

那么 P=1,N=2,通过计算得出 nr=2。

测试命令为:

echo nr > /sys/class/gpio/export

echo out > /sys/class/gpio/gpionr/direction

echo 1 > /sys/class/gpio/gpionr/value ---> 写高电平,小灯亮

echo 0 > /sys/class/gpio/gpionr/value ---> 写低电平,小灯灭

以上 nr 替换成 GPIO 的编号,则命令为:

echo 2 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio2/direction

echo 1 > /sys/class/gpio/gpio2/value --->写高电平,小灯亮

echo 0 > /sys/class/gpio/gpio2/value ---> 写低电平,小灯灭

如下图所示,执行三条命令之后小灯亮。

接着执行 echo 0 > /sys/class/gpio/gpio2/value 小灯灭。

至此,sys 测试 gpio 完成。

另外需要注意的是,本文档没有介绍 LED 对应的管脚是如何配置的,因为 LED 驱动能够

运行,那么肯定在设备树文件中配置了。

如果想要掌握如何配置管脚,可以参考“iTOP-iMX6-设备树内核-IO 配置分析文档

_V1.X”和“iTOP-iMX6-设备树内核-IO 扩展例程_V1.X”文档。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。