请选择 进入手机版 | 继续访问电脑版
[X]关闭
0

LINUX篇 基于debian9系统 CH15_gpio_keys设备树驱动

摘要: 15.1概述 在上一节课中我们学习了gpio_leds设备树驱动,认识了设备树的语法规范、修改方法,执行顺序,在这节课中我们将进一步学习设备树驱动,gpio_keys设备树驱动。15.2 gpio_keys设备树驱动1首先来查看驱动源码 ...

15.1概述

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

15.2 gpio_keys设备树驱动

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

 

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

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

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

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

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

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

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

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

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

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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

本文作者
2019-10-10 08:43
  • 1
    粉丝
  • 2125
    阅读
  • 0
    回复

关注米联客

扫描关注,了解最新资讯

联系人:汤经理
电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼201B
热门评论
排行榜