Linux从设备树取gpio号,LINUX篇 基于debian9系统 CH15_gpio_keys设备树驱动

15.1概述

在上一节课中我们学习了gpio_leds设备树驱动,认识了设备树的语法规范、修改方法,执行顺序,在这节课中我们将进一步学习设备树驱动,gpio_keys设备树驱动。

15.2 gpio_keys设备树驱动

1>首先来查看驱动源码,在/mnt/workspace/osrc-lab/source/drivers/input/keyboard/gpio_keys_polled.c,我们可以看到驱动的源码并不大,大家可以自己仔细阅读,对开发驱动会有很大的好处。

8e76dadf05aa506a9090f643da18d4b2.png

2> 在这个驱动源码里我们可以看到设备树的驱动就是根据“gpio-keys-polled“进行匹配的,当我们设备树里的compatible对应的名字和驱动源码里的名字匹配时,Bus总线上就会触发gpio_keys_polled_probe函数,其他部分的内容,我们可以通过百度去查找理解。

590ddb789d57e4f7117dcca6c4ed6963.png

3>接下来我们把CH05_gpio_keys文件里的所有设备树内容拷贝到如下路径。

cf956b7a775a73288ab17e5f30168050.png

7>通过create_image.sh脚本产生image文件。

81010d3459677e5e2a000a0f8ad525b2.png

8>如果我们的开机系统本身就是debian9的,我们可以只替换boot内的内容,替换文件的路径如下,如果不是,还需要执行分区和烧录工作。

d5679f7be1f9425116b325e59140b896.png

9> 退出SD卡,插入开发板中,上电启动,打开putty软件,我们使用ssh工具远程连接开发板,这里我们提出一个注意事项如果在开发板上sudo  ifconfig命令无效时,我们需要安装net-tools工具,使用命令apt-get install net-tools。

4d76ac4ee2607a34f9a821169f2c83a4.png

10>使用scp  -r命令复制我们的本节课的程序。

1bf4b6661f429af4a5b46dc28e36f3d5.png

11>进入/sys/class/input,查看是否已经添加了event驱动,event是用来判断是否有按键触发的。

298b3aaa9ae4ead8a712a3678c58effb.png

12>进入本节课代码,使用vi命令进行查看,我们可以看到程序里面开启了一个线程,我们程序通过这个线程去判断哪个按键被按下,否则按键就要用死循环去判断。

8c019d6552bf138a86159ec13bad5da3.png

13>使用gcc工具编译,提示没有pthread,它是用来创建线程的工具,使用pthread_create()创建线程时,需要链接该库。

08ed5ceb4052303650f73eab39eaa260.png

14>我们进入管理员模式,执行gcc gpio_keys.c –o gpio_keys –pthread。

13b7c16b15f7d5b773aca14af6354bcc.png

15>执行gpio_keys,操作开发板,SW1按下,LED左移,SW2按下,按键右移则正常。

3ee2c0106b434ca50a5517ffdfc974a3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值