转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/23946487
研究按键驱动已经有几天了,尽管是0基础的驱动,可是当中包括的知识确实不少。接下来的几篇文章我会分别从浅入深的分析按键驱动。希望能对大家有所帮助。因为屌丝博主也是初学,当中出现错误在所难免,希望大家批评指正。一起交流。
按键驱动属于字符型设备驱动,至于具体什么是字符型设备驱动和基础知识云云的我就不具体介绍了,大家也能够看我之前写的LED驱动那篇介绍的比較具体一点。
这里主要说下接下来几篇要将的内容:
1.按键驱动的恩恩怨怨之查询方式
查询法不用多说,当年玩单片机的时候最经常使用的一种方法。话说当年用的还挺顺手(亲还记得当年那个大while(1)循环吗?),可是当你用查询法写驱动的时候你会发现,资源浪费。CPU资源严重浪费。
2.按键驱动的恩恩怨怨之中断方式
相比于中断方式的按键驱动,要比查询法好的多。由于在CPU没有检測到按键的时候CPU会进入休眠状态(嘛叫休眠?为啥休眠?不休眠行不行?)非常多问题将在这节里面解答。
3.按键驱动的恩恩怨怨之poll方式
poll方式又是一种新的方式,他的目的就是一句话:指定时间查询是否有按键,没有就返回。刚接触概念机制又一大堆。没关系这节我们将从内核中寻找答案。
4.按键驱动的恩恩怨怨之异步通知
说起异步通知,简单点的理解就是:曾经都是应用程序主动看按键是否按下云云的。。。这回应用程序架子大了。说老子才不去呢。把任务给了驱动。然后驱动发现按键按下,屁颠屁颠的去通知应用程序。
5.按键驱动的恩恩怨怨之同步相互排斥堵塞
这篇里面涉及的新的概念可能有点多,一时半会可能消化不了,没关系慢慢来。举个样例,当你打开一个文件的时候,还有还有一个人要打开文件。而且你没打开完。因为内核是抢占式的,所以将先服务还有一个人,然后再服务你。你感觉非常不爽。明明老子先要打开的,你凭啥服务后来的那个小子。所以就引出了本篇的原子操作与信号量。本篇还将介绍堵塞操作。
6.按键驱动的恩恩怨怨之防抖动
防抖动这个词,对于玩过单片机的小伙伴们并不陌生。当年第一次写单片机的时候可定会发生这样的情况。你明明按下去一次,但是却像是按下去了好多次。当年的解决防抖动的办法就是延时。如今玩嵌入式了也一样。仅仅只是更加高级了。我们用的是定时器延时操作,具体怎么解决具体分析见文章。
结尾:这个系列和韦东山的第一期视频文件夹吻合。当中部分也有些參考。本系列还參考了LDD3。和互联网上的其它的一些资料。详细參考我会在结尾进行注明。