王彦为

聚沙成塔
  1. 首页
  2. 嵌入式
  3. 正文

玩转DragronBoard 410c系列之三:使用Shell控制GPIO

2020-09-19 5410点热度 3人点赞 4条评论

点亮LED

遵循由易入难的原则,在介绍控制GPIO之前,我们先讲讲点亮LED的操作。下表是在Boot阶段四个LED灯的状态描述,在系统运行后,只有LED1是被占用的,其余的3个灯都可以使用,我们以LED4来说明。

LED状态描述
LED1HeartbeatProcessor watchdog heartbeat
LED2eMMCeMMC data transfer
LED3SDSD-card data transfer
LED4UnusedN/A

在Linux系统设备管理中,一个很重要的概念就是设备就是文件,对设备的操作就是对文件的操作,这一点与Windows设备管理有很大的不同。理解到这一层后,我们控制起来就简单多了。

# 切换到root用户
sudo su
# 切换到led4目录
cd /sys/class/leds/apq8016-sbc:green:user4
# 点亮LED灯
echo 1 > brightness
# 熄灭LED灯
echo 0 > brightness
# 查看LED状态
cat brightness

控制GPIO

控制GPIO的结果不容易观察,需要借助面包板和LED灯(不是上面文章提到的LED,是需要额外购买),我这里没有这些设备,直接使用万用表测量电压,操作时也要慎重,防止短路。下图是Dragron Board 410c的物理引脚示意图,其中有12个GPIO引脚。

上图只能得到GPIO的物理引脚号,Linux内核为不同的开发板导出GPIO引脚,在使用过程中,我们用的是Linux内核下的GPIO引脚,下表是Dragron Board 410c物理引脚号与Linux导出引脚对应的关系。

名称物理引脚Linux导出引脚
GPIO-A2336
GPIO-B2412
GPIO-C2513
GPIO-D2669
GPIO-E26115
GPIO-F284
GPIO-G2924
GPIO-H3025
GPIO-I3135
GPIO-J3234
GPIO-K3328
GPIO-L3433

得到Linux导出引脚号后,我们对GPIO-A进行操作,即导出引脚号为36,操作代码如下:

sudo su
# 切换到gpio目录
cd /sys/class/gpio
# 导出gpio,成功后会生成gpio36文件夹,这里的36就是对应的导出引脚号
echo 36 > export
# 上一步执行成功后会在gpio文件夹下生成gpio36文件夹
cd gpio36
# 修改gpio的方向,是输入还是输出,本文章验证的是输入
echo in > direction
# 闭合
echo 1 > value
# 断开
echo 0 > value

测试闭合和断开的效果时,用万用表测量GPIO-A和Ground之间的电压,闭合时电压应该是±1.8V,断开时电压应该是0V。万用表探针较粗,测量引脚旁边的焊点即可,注意GPIO-A和GPIO-B的位置,别搞反了。

如果在执行“echo 36 > export”时报错“bash: echo: write error: Invalid argument”,这个说明36不合法。这个问题我也纠结了很久,也查不到相关的资料,后来尝试加390进行测试,意外的事情发生了,居然成功控制了GPIO-A。

sudo su
# 切换到gpio目录
cd /sys/class/gpio
# 导出gpio,成功后会生成gpio426文件夹
echo 426 > export
# 上一步执行成功后会在gpio文件夹下生成gpio426文件夹
cd gpio426
# 修改gpio的方向,是输入还是输出,本文章验证的是输入
echo in > direction
# 闭合
echo 1 > value
# 断开
echo 0 > value

那么为何需要加390呢?我们看下面一段代码:

图中是获取/sys/class/gpio下所有的文件信息,发现有几个gpio开头的文件夹,并且数值比较大。我也是刚学Linux,对此不太了解,不敢妄下结论,所以如果你也遇到同样的问题,可以加那个最大的数值试试。

总结

这篇文章中讲述了使用Shell命令去点亮LED灯和控制GPIO,控制外设的基本原理就是操作对应的文件,注意要使用root权限。后面的文章会介绍使用代码控制GPIO,有了Shell控制基础后,相信使用代码也是一件非常简单的事情了。

标签: 暂无
最后更新:2022-03-31

王彦为

新生代农民工,十年医疗器械行业从业经验,现居苏州。爱生活,爱做梦。

打赏 点赞
< 上一篇
下一篇 >

文章评论

  • Aaron1857

    Good <a href="https://shorturl.fm/j3kEj">https://shorturl.fm/j3kEj</a&gt;

    2025-05-24
    回复
  • Dale756

    Cool partnership <a href="https://shorturl.fm/a0B2m">https://shorturl.fm/a0B2m</a&gt;

    2025-05-24
    回复
  • Alistair2115

    Very good partnership <a href="https://shorturl.fm/68Y8V">https://shorturl.fm/68Y8V</a&gt;

    2025-05-24
    回复
  • Geoff4666

    Super <a href="https://shorturl.fm/6539m">https://shorturl.fm/6539m</a&gt;

    2025-05-24
    回复
  • 取消回复

    COPYRIGHT © 2022 王彦为. ALL RIGHTS RESERVED.

    苏ICP备16063331号-1

    苏公网安备32050702011313号