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按下,按键右移则正常。 |
扫描关注,了解最新资讯