没有合适的资源?快使用搜索试试~ 我知道了~
Linux设备驱动的分层设计思想.doc 输入设备驱动
需积分: 50 17 下载量 116 浏览量
2010-12-14
22:55:54
上传
评论
收藏 209KB DOC 举报
温馨提示
试读
14页
Linux设备驱动的分层设计思想.doc 输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸等动作发送时产生一个中断(或驱动通过timer 定时查询),然后CPU通过SPI、I2 C或外部存储器总线读取键值、坐标等数据,放入1个缓冲区,字符设备驱动管理该缓冲区,而驱动的read()接口让用户可以读取键值、坐标等数据。
资源推荐
资源详情
资源评论
设备驱动的分层设计思想
1.1 设备驱动核心层和例化
在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的
函数。如果对于继承的这个事物而言,其某函数的实现与基类一致,那它就可以直接继承基类的函数;相
反,它可以重载之。这种面向对象的设计思想极大地提高了代码的可重用能力,是对现实世界事物间关系
的一种良好呈现。
Linux 内核完全由 C 语言和汇编语言写成,但是却频繁用到了面向对象的设计思想。在设
备驱动方面,往往为同类的设备设计了一个框架,而框架中的核心层则实现了该设备通用
的一些功能。同样的,如果具体的设备不想使用核心层的函数,它可以重载之。举个例子:
核心层通用的 代码
!
上述 的实现中,会检查底层设备是否重载了 ,如果重载了,就调用底层的代码,否
则,直接使用通用层的。这样做的好处是,核心层的代码可以处理绝大多数该类设备的 对应的功
能,只有少数特殊设备需要重新实现 。
再看一个例子:
通用的步骤代码 "
#
通用的步骤代码 $
#
通用的步骤代码 %
#&
!
上述代码假定为了实现 ,对于同类设备而言,操作流程一致,都要经过“通用代码 "、底层
#、通用代码 $、底层 #、通用代码 %、底层 #&'这几步,分层设计明显带来的好处是,对于通
用代码 "、$、%,具体的底层驱动不需要再实现,而仅仅只关心其底层的操作 #、 #、#&。
图 明确反映了设备驱动的核心层与具体设备驱动的关系,实际上,这种分层可能只有 层(图 的
),也可能是多层的(图 的 )。
图 设备驱动的分层
这样的分层化设计在 的 、()%、*)+、,
%、-.,、))/、0-$ 等诸多设备驱动类型中屡见
不鲜。下面的 节以 和 ()% 为例先行进行一番说明,当然,后续的章节会对几个大的设备类型对
应驱动的层次进行更详细的分析
1.2 输入设备驱动
输入设备(如按键、键盘、触摸屏、鼠标等)是典型的字符设备,其一般的工作机理是底层在按键、触摸
等动作发送时产生一个中断(或驱动通过 定时查询),然后 %.0 通过 -.,、,
C 或外部存储器
总线读取键值、坐标等数据,放入 1 个缓冲区,字符设备驱动管理该缓冲区,而驱动的
read()接口让用户可以读取键值、坐标等数据。
显然,在这些工作中,只是中断、读值是设备相关的,而输入事件的缓冲区管理以及字符设备驱动的
12# 接口则对输入设备是通用的。基于此,内核设计了输入子系统,由核心层处理公共的工
作。 内核输入子系统的框架如图 所示。
剩余13页未读,继续阅读
资源评论
zhenwenxian
- 粉丝: 797
- 资源: 773
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功