嵌入式系统多功能按键底层驱动设计
2012-05-15 16:44
519 查看
一.Linux原有驱动分析:
1、 Linux 现有按键驱动运行机制:
图1 linux按键驱动运行机制图
2、 Repeat 函数工作机制:
图2 按键repeat工作机制图
3、 说明:
这种驱动检测了按键的整个过程,包括按键的按下、抬起。但是没有实现比这更多的功能,比如单击键、双击键、延时键等。其实这类键完全可以由linux 现有驱动的这种按键事件(按下、抬起)组合而成,鼠标的双击就是这样实现的,而这部工作一般不在驱动层来做,这就好比AD转换一样,驱动只完成AD转换,而这个转换来的数据到底是什么电压值,准确不准确,那是上层的事了。
二、新按键驱动设计与分析:
1、设计思路:
主要采用了一键多码的设计思路,也就是说,物理按键只有一个,但是向上层提交code的时候,会根据按键效果提交不同的键码。
2、具体实现方案如下:
图3 新按键驱动方案图
整个过程需要一个timer 和 一个超时检测work队列,主要用于区分单击和双击、检测增量键。
这个timer一定会在 1 处打开,并设置为检测增量键的时间(4.5s),也一定会在2 处关闭。
3、 工作流程:
在1处,打开timer ,设置4.5s .
If(timer=open && time >= 4.5s)
{
上报 增量键按下
}
在2处,关闭timer ,开启超时work(200ms)。
If(X>t2 – t1>X)延时键按下、抬起。
If(不是 延时键)上报 增量键 抬起。
200ms 后Work
If (t2-t1<X&& key = 1)上报单击按下,抬起。
If (t2-t1<X&& key = 0)上报双击按下,抬起。设置标志,在second间断不报单击和延时。
4、 缺点:
单击键反应会有延迟。
单击、双击、延时不在区分按键按下和抬起。
驱动负担会加重。
5、 优点:
简化上层设计。上层不用再设计按键功能,直接检测按键code码,辨别多功能按键。
1、 Linux 现有按键驱动运行机制:
图1 linux按键驱动运行机制图
2、 Repeat 函数工作机制:
图2 按键repeat工作机制图
3、 说明:
这种驱动检测了按键的整个过程,包括按键的按下、抬起。但是没有实现比这更多的功能,比如单击键、双击键、延时键等。其实这类键完全可以由linux 现有驱动的这种按键事件(按下、抬起)组合而成,鼠标的双击就是这样实现的,而这部工作一般不在驱动层来做,这就好比AD转换一样,驱动只完成AD转换,而这个转换来的数据到底是什么电压值,准确不准确,那是上层的事了。
二、新按键驱动设计与分析:
1、设计思路:
主要采用了一键多码的设计思路,也就是说,物理按键只有一个,但是向上层提交code的时候,会根据按键效果提交不同的键码。
2、具体实现方案如下:
图3 新按键驱动方案图
整个过程需要一个timer 和 一个超时检测work队列,主要用于区分单击和双击、检测增量键。
这个timer一定会在 1 处打开,并设置为检测增量键的时间(4.5s),也一定会在2 处关闭。
3、 工作流程:
在1处,打开timer ,设置4.5s .
If(timer=open && time >= 4.5s)
{
上报 增量键按下
}
在2处,关闭timer ,开启超时work(200ms)。
If(X>t2 – t1>X)延时键按下、抬起。
If(不是 延时键)上报 增量键 抬起。
200ms 后Work
If (t2-t1<X&& key = 1)上报单击按下,抬起。
If (t2-t1<X&& key = 0)上报双击按下,抬起。设置标志,在second间断不报单击和延时。
4、 缺点:
单击键反应会有延迟。
单击、双击、延时不在区分按键按下和抬起。
驱动负担会加重。
5、 优点:
简化上层设计。上层不用再设计按键功能,直接检测按键code码,辨别多功能按键。
相关文章推荐
- 嵌入式Linux编译系统的设计——Bootloader, 内核,驱动,文件系统,升级镜像等自动化编译打包
- 嵌入式Linux系统下MPEG-4专用编码器驱动设计
- 嵌入式Linux系统中I2C总线设备的驱动设计
- 有限状态机的嵌入式Linux按键驱动设计
- 基于嵌入式wince平台的GPS手持终端设备系统及驱动设计
- 有限状态机的嵌入式Linux按键驱动设计(转载)
- 关于嵌入式Linux系统flash分区设计及文件系统格式选择的一些浅见
- 嵌入式Linux系统的设计与应用
- 嵌入式linux驱动开发之给linux系统添加温度传感器模块
- 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
- 基于ARM的嵌入式MPEG-4远程网络监控系统的设计与实现
- 驱动设计ARM(6410)-按键驱动0基础知识点
- 有5个窍门是每一个嵌入式驱动开发者设计前都应该了解的!
- 嵌入式学习-驱动开发-lesson4-按键混杂设备驱动
- 内核驱动进阶班-2-1(嵌入式linux系统架构)
- 基于NOR FLASH存储器的嵌入式文件系统的设计
- 基于platform总线的中断(按键)字符设备驱动设计
- 基于Winodws CE的嵌入式网络监控系统的设计与实现
- android系统移植之按键驱动篇
- 嵌入式视频监控毕业设计过程中保存的标签。。。嵌入式系统视频信号接收、显示 与存储程序设计与实现