OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7137|回复: 10

如何在linux应用层上打开某个GPIO

[复制链接]

13

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2017-11-1
在线时间
18 小时
发表于 2020-3-3 22:49:08 | 显示全部楼层 |阅读模式
1金钱
如何在应用层上打开某个GPIO设备,而不用去自已写驱动。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2178
金钱
2178
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-3-4 11:50:53 | 显示全部楼层
本帖最后由 xiaotaotao 于 2020-3-4 11:58 编辑

用户可以通过sys接口去操控开发板的GPIO,/sys/class/gpio也可以通过 /dev/gpiochipxx 这些设备文件进行操作
森罗万象
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-4 12:53:27 | 显示全部楼层
本帖最后由 茂茂2019 于 2020-3-4 12:58 编辑

比如,alpha开发板使用的led管脚是gpio1_3。因为设备树已经配置过了led驱动去使用gpio1_3管脚。所以我们需要在设备树里将led的节点禁用。(已经在被使用的管脚是不允许再在应用层去使用)
  1. status = "disabled"
复制代码

然后我们在文件系统启动后,在应用层使用如下指令就可以打开某个gpio
  1. echo 3 > /sys/class/gpio/export   // 向系统申请要使用的gpio管脚,这里是gpio1_3,也就是(1-1)*32+3
  2. echo out > /sys/class/gpio/gpio3/direction  // 设置这个IO的的方向为 out(输出)
  3. echo 0 > /sys/calss/gpio/gpio3/value      // 输出为低电平,就可以控制led亮了 1为高电平
复制代码



想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-3-4 13:21:51 | 显示全部楼层
茂茂2019 发表于 2020-3-4 12:53
比如,alpha开发板使用的led管脚是gpio1_3。因为设备树已经配置过了led驱动去使用gpio1_3管脚。所以我们需 ...

控制一个connect到GPIO的LED,
用构建shell脚本的方式即“echo  1> /sys/class/gpio/gpio3/value”的方式和
   用open 打开设备驱动文件再用write写入1/0控制的方式
有啥区别?原子的QT实验全是用构建shell脚本的方式实现的,是这种方式有啥优势吗?
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

13

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2017-11-1
在线时间
18 小时
 楼主| 发表于 2020-3-5 11:13:48 | 显示全部楼层
xiaotaotao 发表于 2020-3-4 11:50
用户可以通过sys接口去操控开发板的GPIO,/sys/class/gpio也可以通过 /dev/gpiochipxx 这些设备文件进行操 ...

谢谢你的回复。能不能对某个IO口做下说明
回复

使用道具 举报

13

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2017-11-1
在线时间
18 小时
 楼主| 发表于 2020-3-5 11:17:58 | 显示全部楼层
茂茂2019 发表于 2020-3-4 12:53
比如,alpha开发板使用的led管脚是gpio1_3。因为设备树已经配置过了led驱动去使用gpio1_3管脚。所以我们需 ...

如果我要在应用层中,用open来调用gpio1_3,是要打开哪个设备呢? 感谢你的回复。
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-5 11:27:16 | 显示全部楼层
greentea 发表于 2020-3-5 11:17
如果我要在应用层中,用open来调用gpio1_3,是要打开哪个设备呢? 感谢你的回复。

好的,我看错了,我说的是用户层的了,你说的是应用层
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-3-5 11:32:33 | 显示全部楼层
茂茂2019 发表于 2020-3-4 12:53
比如,alpha开发板使用的led管脚是gpio1_3。因为设备树已经配置过了led驱动去使用gpio1_3管脚。所以我们需 ...

Hi,
控制一个connect到GPIO的LED,
用构建shell脚本的方式即“echo  1> /sys/class/gpio/gpio3/value”的方式和
   用open 打开设备驱动文件再用write写入1/0控制的方式
有啥区别?原子的QT例程中全是用构建shell脚本的方式实现的,是这种方式有啥优势吗?为啥QT例程中不用open驱动文件再write 1/0的方式控制LED?
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-5 11:55:24 | 显示全部楼层
1、是一样的呢,驱动层已经提供了这样的接口。如果我们在用户层使用echo指令去读写这个设备,与在应用层使用open去读写这个设备是一样的。
2、qt可以开启进程直接通过用户层就可以控制io。用open去也打开也是一样的。比open省下很多代码呢。
想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2020-3-5 11:57:50 | 显示全部楼层
greentea 发表于 2020-3-5 11:13
谢谢你的回复。能不能对某个IO口做下说明

你就可以在应用层通过open下面的几个设备文件来申请你的io去控制就可以了。
  1. <div> /sys/class/gpio/export   // 向系统申请要使用的gpio管脚,这里是gpio1_3,也就是(1-1)*32+3</div><div>/sys/class/gpio/gpio3/direction  // 设置这个IO的的方向为 out(输出)</div><div>/sys/calss/gpio/gpio3/value      // 输出为低电平,就可以控制led亮了 1为高电平</div>
复制代码



想思考的时候,有时还可以用屁股,QQ 1252699831
回复

使用道具 举报

26

主题

1538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6379
金钱
6379
注册时间
2015-8-25
在线时间
1004 小时
发表于 2020-3-5 13:07:10 | 显示全部楼层
茂茂2019 发表于 2020-3-5 11:55
1、是一样的呢,驱动层已经提供了这样的接口。如果我们在用户层使用echo指令去读写这个设备,与在应用层使 ...

多谢解惑
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 07:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表