




已阅读5页,还剩108页未读, 继续免费阅读
(计算机应用技术专业论文)嵌入式系统跨平台统一驱动框架技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 设备驱动程序是一种软件。设备驱动程序通常通过总线或其他通信子系统与连 接的硬件设备进行通讯,并提供了相关能力允许高层的软件( 操作系统或应用程 序) 通过驱动程序来使用硬件的能力。设备驱动程序的开发在系统设计中占据着 非常重要的地位,在嵌入式系统设计中尤其如此。 通常,嵌入式系统中某一种外设的驱动程序因嵌入式操作系统和硬件平台( 包 括嵌入式处理器及其与外设的连接方式等) 的不同而需要定制。设备驱动程序开 发人员除了关心外设本身的工作方式和控制方式以外还不得不关心操作系统和硬 件平台的技术细节。这无疑加重了设备驱动程序开发和维护的负担,特别是在当 前多种嵌入式操作系统和硬件平台并存的情况下。 如果有种在嵌入式环境下开发设备驱动程序的方式,通过这种方式开发的设 各驱动程序能够跨硬件平台和操作系统移植而无需对源代码进行任何修改。这种 开发方式无疑会受到独立设备制造商( i h v ) 的欢迎,因为这样的开发方式能缩短 设备驱动的开发周期并且更快地支持多个平台。同时,这样的开发方式能让设备 驱动程序开发人员将全部的注意力集中到设备本身的功能和特性上,从而有助于 提高设备驱动程序的质量。同时为了支持这种跨平台的设备驱动程序开发方式, 必需要有相应的中间件技术来进行支撑。 本论文就在嵌入式环境下开发跨平台设备驱动程序的方式及支撑这种开发方 式的中间件技术进行了探讨,并提出了自己的解决方案嵌入式系统跨平台统 一驱动框架。该驱动框架具有以下优点: 1 ) 适应于各种嵌入式操作系统,屏蔽操作系统内部细节而为设备驱动程序开发提 供操作系统无关的开发接口 2 ) 适应于各种嵌入式处理器,屏蔽嵌入式处理器的差异而为设备驱动程序开发提 供嵌入式处理器无关的开发接口 3 ) 对多种嵌入式外围设备的广泛适应性 4 ) 统一的缓冲管理机制,减少系统堆的碎片 5 ) 统一的电源管理机制,提升嵌入式设备的电池续航能力 关键词:嵌入式操作系统,设备驱动程序,跨平台,驱动框架,中间件 a b s t r a c t a b s t r a c t d e v i c ed r i v e ri ss u c hs o f t w a r et h a tt a i lc o m m u n i c a t ew i t ht h eh a r d w a r et h r o u g h d e v i c eb u so ro t h e rc o m m u n i c a t i o ns u b - s y s t e m t h eo p e r a t i o ns y s t e mo rt h e a p p l i c a t i o nc a no n l yh a n d l et h eh a r d w a r ev i at h ed e v i c ed r i v e r s ot h ed e v e l o p m e n to f t h ed e v i c ed r i v e rp l a y sa ni m p o r t a n tr o l ei ne m b e d d e ds y s t e md e s i g n u s u a l l y , d e v i c ed r i v e rm u s tb ec u s t o m i z i n gf o rd i f f e r e n te m b e d d e do p e r a t i o n s y s t e ma n de m b e d d e dh a r d w a r ep l a t f o r m ,s u c ha sd i f f e r e n tm i c r o p r o c e s s o r sa n dt h e d i f f e r e n tw a yt oc o m m u n i c a t eb e t w e e nt h ep e r i p h e r a ld e v i c e sa n dm i c r o p r o c e s s o r s 砀e d e v e l o p e r sh a v et oc a r ea b o u tt h ed e t a i l so ft h ed i f f e r e n te m b e d d e do p e r a t i o ns y s t e m a n dt h ee m b e d d e dh a r d w a r ep l a t f o r mb e s i d e st h ep e r i p h e r a ld e v i c ei t s e l f b e c a u s et h e r e a r em a n yd i f f e r e n te m b e d d e do p e r a t i o ns y s t e ma n de m b e d d e dh a r d w a r ep l a t f o r m ,s u c h m a n l i e ro fd e v i c ed r i v e rd e v e l o p m e n ti se f f i c i e n tl e s s i ft h e r e ss u c hk i n do fd e v i c ed r i v e rt h a tc a nb ee a s i l yp o r tt od i f f e r e n te m b e d d e d o p e r a t i o ns y s t e ma n de m b e d d e dh a r d w a r ep l a t f o r mw i t h o u ta n yc h a n g et ot h es o u r c e c o d e ,t h ei n d e p e n d e n th a r d w a r ev e n d o r ( i h v ) w i l lb ev e r ya p p r e c i a t e b e c a u s ei tw i l l l e tt h e i rd e v i c ed r i v e rs u p p o r td i f f e r e n te m b e d d e ds y s t e ms o o n m e a n w h i l e ,t h e d e v e l o p e r sc a nc o n c e n t r a t eo nt h ep o i n tt h a th o wt oh a n d l et h ep e r i p h e r a ld e v i c e c o r r e c t l ya n de f f i c i e n t l y , i tw i l li m p r o v et h eq u a l i t yo ft h ed e v i c ed r i v e r t h e r em u s tb e s o m ek i n do fm i d d l e w a r et e c h n o l o g y , i no r d e rt os u p p o r tt h ec r o s sp l a t f o r md e v i c e d r i v e r t 1 1 i ss u b j e c tf o c u so nt h eq u e s t i o nt h a th o wt od e v e l o pt h ec r o s sp l a t f o r md e v i c e d r i v e ra n dt h em i d d l e w a r et e c h n o l o g yt os u p p o r ti t 。刀砖s o l u t i o ni st h ee m b e d d e d u n i f i e dd r i v e rf r a m e w o r k ( e u d f ) t h ee u d fh a sm a n yf e a t u r e s 11t h ee u d fc a nr u no nd i f f e r e n te m b e d d e do p e r a t i o ns y s t e m t h ee u d fp r o v i d et h e d e v e l o p e r st h eo si n d e p e n d e n t i n t e r f a c et od e v e l o pd e v i c ed r i v e r 2 ) 1 1 1 ee u d fc a nlu l lo nd i f f e r e n te m b e d d e dh a r d w a r ep l a t f o r m t h ee u d fp r o v i d e t h ed e v e l o p e r st h eh a r d w a r ep l a t f o r mi n d e p e n d e n ti n t e r f a c et od e v e l o pd e v i c e d r i v e r 3 ) t 1 1 ee u d f sf r a m e w o r kc a na c c o m m o d a t et od i f f e r e n tp 嘶p h e r a ld e v i c e s i i a b s t r a c t 4 ) t h e e u d fc a np r o v i d et h eu n i f o r mc a c h em a n a g e m e n tf u n c t i o n 5 ) t h ee u d fc a np r o v i d et h eu n i f o r mp o w e rm a n a g e m e n tf u n c t i o n k e y w o r d s :e m b e d d e do p e r a t i o ns y s t e m ,d e v i c ed r i v e r , c r o s sp l a t f o r m ,d e v i c ed r i v e r f r a m e w o r k i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。 签名: 直耄 日期:年月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名: 苞芝。 导师签名: 日期:年月日 第一章前言 1 1 课题背景 第一章前言 当前,手机、移动手持设备、g p s 接收器、零售终端、工业自动化设备、零售 终端等嵌入式设备在人们的生活中占据着越来越重要的地位。嵌入式技术已经在 通信、消费电子、汽车电子、医疗电子等领域占据重要地位。 如今,嵌入式设备已经不再是单一功能设备的代名词。随着微处理器技术和 s o c 技术的发展,人们希望嵌入式设备具有更强大的处理能力以及更多的功能。根 据有关调查显示,2 0 0 7 年桌面p c 的出货量增长为4 ,移动p c 的出货量增长为1 9 , 而消费类智能终端的出货增长量增长则超过5 0 。 随着嵌入式技术的飞速发展,给嵌入式系统开发者提供了更多的选择。例如: 嵌入式操作系统有微软公司的w i n d o w sc e 、风河公司的v x w o r k s 以及嵌入式l i n u x 、 e c o s 等;嵌入式处理器有i n t e l 公司的p x a 系统,德州仪器公司的o m a p 系列,三 星公司的$ 3 c 2 4 1 0 系列等;外围设备有t 兀一l c d 设备、触摸屏设备、c o m p a c tf l a s h c a r d 设备以及s d i oc a r d 设备等等。这对于嵌入式系统开发开发者来说既是机遇, 也是挑战。一方面,嵌入式系统开发者能设计出更灵活,更多功能,形态各异的 设备来;另一方面,传统的嵌入式系统设备驱动程序开发方式要求嵌入式系统开 发者在熟悉外围设备的工作机制和控制方式以外还需要熟悉所选用的嵌入式操作 系统、嵌入式处理器的技术细节。因为当前嵌入式操作系统和嵌入式处理器缺乏 统一的标准,个体之问的差异巨大,这样的设备驱动程序开发方式无疑会拉长嵌 入式设备的研发和稳定周期。并且对于外围设备的制造厂商而言,他们会被迫为 多种嵌入式操作系统、嵌入式处理器维护其设备驱动版本,这样是对他们精力的 一种巨大浪费。 如果能用一种跨平台的方式来开发嵌入式系统设备驱动程序,使其能运行于不 同的嵌入式操作系统和嵌入式处理器之上。相信这样的开发方式能为嵌入式开发 者带来极大的方便。 在桌面电脑领域已经有过相关的尝试,这就是统一设备驱动程序接口项目( u d i p r o j e c t ) 。该项目致力于在p c 上实现与操作系统无关的、独立于硬件平台的、 不依赖于编译器的设备驱动程序开发接口。这实质上是一种中间件技术。 电子科技大学硕士学位论文 1 2 课题综述 论文课题源自电子科技大学嵌入式软件工程中心移动多媒体终端项目,该项目 的目的是开发面向高中低端市场的、从智能手机到p m p 等不同形态的、满足用户 不同层次需求的移动多媒体终端设备,并在此基础上研究跨平台的移动多媒体技 术。在该项目的实施过程中,发现对于某种外设,通常i h v 厂商会提供某个或某 几个嵌入式平台的参考实现,但如果想要在具体的嵌入式平台中使用,却还需要 花费大量的时间和精力来为该平台定制设备驱动程序。结合国内外嵌入式系统以 及桌面电脑领域对设备驱动程序技术的一些探索,特提出将跨平台的设备驱动程 序开发技术和支撑这种开发方式的中间件技术作为移动多媒体终端项目的一个预 研子项目来开展。主要工作内容有: 1 ) 分析研究主流嵌入式操作系统及其驱动框架。 2 ) 分析嵌入式硬件平台及设备驱动程序开发技术。 3 ) 分析当前的嵌入式系统电源管理技术。 4 ) 分析当前嵌入式领域和桌面p c 领域设备驱动技术发展趋势。 5 ) 嵌入式系统跨平台统一驱动框架技术分析与设计。 6 ) 实现嵌入式系统跨平台统一驱动框架对几个有代表性平台的支持。 7 ) s dm e m o r yc a r d s d i oc a r d 系统协议分析。 8 ) 利用嵌入式系统跨平台统一驱动框架为无线数据接收卡实现跨平台的设 备驱动程序。 9 ) 测试。 1 3 论文结构 整个论文的结构安排如下: 第一章说明了课题的背景、来源和内容安排。 第二章分析嵌入式操作系统及其驱动框架 第三章分析嵌入式系统硬件平台与设备驱动程序开发之间的关系 第四章根据前面章节的分析以及借鉴桌面电脑设备驱动程序开发的相关探 索,分析在嵌入式系统中设备驱动程序技术的发展趋势 第五章在前面章节所分析的当前驱动技术的基础上,就如何在嵌入式平台上 用平台无关的方法来开发设备驱动程序展开分析,并提出一种嵌入式 2 第一章前言 系统跨平台统一驱动程序框架的设计方案 第六章介绍嵌入式系统跨平台统一驱动框架的实现方法,以及选取具有代表 性的嵌入式系统说明在不同平台上实现嵌入式系统跨平台统一驱动 框架的异同 第七章以在嵌入式系统中得到广泛应用的s dm e m o r yc a r d & s d i oc a r d 设 备作为嵌入式系统跨平台统一驱动框架的具体应用,详细讲解了如何 在同一驱动框架下实现s d i oc a r d 设备驱动程序 第八章选取嵌入式系统跨平台统一驱动框架在具体平台的实现进行测试,并 对在该驱动框架下实现的s d i oc a r d 设备驱动程序的性能进行测试 电子科技大学硕士学位论文 第二章嵌入式操作系统与设备驱动 2 1w i n d o w sc e 与设备驱动 2 1 1w i n d o w sc e 设备驱动程序模型 w i n d o w sc e 提供了四种设备驱动程序模型,其中两种是本机的设备驱动程序 模型,另外两种来自于其他操作系统。基于w i n d o w sc e 的两种模型是: 本机的设备驱动程序流接口驱动程序两种外部模型分别适用于通用串行总线 ( u s b ) 和网络驱动器接口标准( n d i s ) 的驱动程序。 在这里,需要注意的是设备驱动模型之间的不同是通过它们所支持的软件接口 来区别的,而不是由它们所适用的设备来区别的。 图2 - 1 列出了w i n d o w sc e 的驱动程序模型及基于这些模型的具有代表性的设 备驱动程序。 基于w i n d o w sc e 的驱动 程序模型 上 本机驱动程序流接口驱动程序 上上 g 吧sd e v i c e e x e 显示器 键盘 电源 提示l e d 外部驱动程序模型 p c m c i a 串口 声音 a t a d i s k 图2 - 1w i n d o w sc e 支持的驱动程序模型 基于w i n d o w sc e 驱动程序模型的设备驱动程序,包括本机设备驱动程序和流 4 第二章嵌入式操作系统与设备驱动 接口驱动程序,在另一个层面上又可以分为两种类型: ( 1 ) 单片( m o n o l i t h i c ) 驱动程序 ( 2 ) 分层的( 1 a y e r e d ) 驱动程序 单片驱动程序基于单个码片( s i n g l ep i e c eo fc o d e ) ,该码片直接把硬件设 备的功能性传递给操作系统。与单片驱动程序相比,分层的驱动程序由两个设置 好的层组成:上层是模型设备驱动程序( m d d ) ,下层是依赖平台的驱动程序( p d d ) 。 流接口驱动程序一般为分层的驱动程序。 模型设备驱动程序( m d d ) 是由微软提供的,对不同的硬件平台来讲,m d d 是 通用的,既是源代码又是库。模型设备驱动程序( i d d ) 执行以下任务: ( 1 ) 链接p d d 层并定义它希望调用的函数 ( 2 ) 把不同的函数集提供给操作系统 ( 3 ) 处理像中断处理这样的复杂任务 ( 4 ) 与g w e s 模块和内核通信 p d d 是依赖于硬件平台的驱动程序,直接操纵硬件。 图2 2 标识了单片设备驱动程序、分层驱动程序各自对外的接口。 而习 二亟垂二 图2 - 2w i n d o w sc e 驱动程序模型接口 电子科技大学硕士学位论文 对于本机设备驱动程序来说,设备驱动程序接口( d d i ) 是在m d d 中实现的函 数集,由g w e s 模块调用;设备驱动程序服务提供器接口( d d s i ) 是在p d d 中实现 的函数集并由m d d 调用。如果是单片驱动程序则只需要实现d d i 接口。 对于流接口驱动程序来说,流接口函数是在m d d 中实现的函数集,由设备管理 器( d e v i c e e x e ) 调用。设备驱动程序服务提供器接口( d d s i ) 是在p d d 中实现 的函数集并由m d d 调用。 2 1 2w i n d o w sc e 中断机制 在w i n d o w sc e 系统中绝大多数设备驱动程序都工作在中断方式下,所以操作 系统的中断处理机制与设备驱动程序的开发密切相关。在这里介绍w i n d o w sc e 系 统的中断处理机制。 因为中断处理机制是因平台所选用的嵌入式处理器不同而不同,所以在这里以 i n t e lp x a 2 7 x 为例来进行说明。 i n t e lp x a 2 7 x 有一个中断控制器,允许3 2 个中断源,但是所有的中断源产生 的中断信号都只能通过同一条中断信号线通知处理器。 w i n d o w sc e 不支持嵌套中断,也就是说几个中断不能同时产生,一个中断的 处理结束后方可开始另一个中断。w i n d o w sc e 的中断机制是非向量中断,采用查 询方式来判断中断源,并且采用了两级中断处理方式来满足实时性的要求。 第一级中断处理是i s r ( i n t e r r u p ts e r v i c er o u t i n e ,中断服务例行程序) , i s r 在o a l 中实现。当c p u 收到中断信号时,c p u 出现异常,首先屏蔽所有中断信 号,查硬件向量表,跳转到i s r 中去执行。i s r 查询中断控制器中的寄存器,判断 是哪一个中断源产生了中断,屏蔽该中断源信号,允许其他中断源信号,然后向 系统发相应的中断事件,例如:中断是串口产生的,就向系统发回s y s i n t r s e r i a l 。 第二级中断处理是i s t ( i n t e r r u p ts e r v i c et h r e a d ,中断服务线程) ,i s t 在外围设备驱动程序中实现。外围驱动程序加载时在做了相应的初始化工作后, 创建了相应的中断处理线程,该线程等待相应的中断事件 ( w a i t f o r s i n g l e o b j e c t ) ,然后睡眠。当相应的中断事件发生后,该中断处理线 程被激活,然后进行处理,然后通过调用w i n d o w sc ea p ii n t e r r u p t d o n e ( ) 来 设置中断控制器,重新允许接收该中断源产生的中断。 6 第二章嵌入式操作系统与设备驱动 图2 3w i n d o w sc e 中断方式设备驱动程序工作原理 如图2 - 3 所示,再发生硬件中断后,c p u 进入异常处理程序,然后根据硬件 向量表跳到中断服务例行程序去执行,i s r 通过查询判断中断源,然后向系统发回 相应的中断事件,例如:u s b 产生了中断,则i s r 向系统发回s y s i n t r _ u s b 。 以u s b 的驱动程序为例,驱动程序加载后做一些初始化的操作,然后启动中断 服务线程( i s t ) ,中断服务线程在启动后调用w a i t f o r s i n 9 1 e o b j e c t 函数等待 s y s i n t r u s b 消息。没有消息时,i s t 睡眠,当接收到s y s i n t r u s b 消息时,i s t 被激活,然后通过p o d 层的函数对硬件进行相关的操作。 2 1 3 本机设备驱动程序 常见的本机设备驱动程序有:电池驱动程序,显示器驱动程序,键盘驱动程序, 示警发光二极管( n o t i f i c a t i o nl e d ) ,触摸屏驱动程序。 要把w i n d o w sc e 移植到目标平台上,必须为在平台上已建立的设备提供驱动 程序。一些类型的设备,如键盘、显示器等对操作系统都有一个自定义的接口。 因为这些接口是专门用于w i n d o w sc e 的,所以这类设备的驱动程序口q 做本机设备 驱动程序。 在较低版本的w i n d o w sc e 系统中,要求o e m 厂商把本机设各驱动程序与图形、 7 电子科技大学硕士学位论文 视窗和事件子系统( g w e s ) 链接起来,形成一个g w e s e x e ,而没有设备驱动程序 单独的动态链。 现在的w i n d o w sc e 系统只要求将示警发光二极管( n o t i f i c a t i o nl e d ) 的驱 动程序连接到g w e s e x e 中,而其他本机设备驱动程序,如:键盘,显示器,触摸 屏,电池等的驱动程序都是以单独的动态链的形式存在。现在这些驱动程序需要 暴露流接口函数,让w i n d o w sc e 系统将这些驱动作为文件来管理,但这些驱动程 序仍然要实现d d i 接口,由g w e s 来调用,管理。 电池驱动程序: 电池驱动的主要作用是向w i n d o w sc e 系统提供查询当前电池充电状态、电池 电量的功能,实现的d d i 接口: ( 1 ) b a t t e r y d r v r g e t l e v e l s 获取电池当前电压的采样值。 ( 2 ) b a t t e r y d r v r g e t s t a t u s 根据获取的电池电压采样值和充电情况,向操作系统反馈当前的电池电量和 是否在充电。 ( 3 ) b a t t e r y d r v r s u p p o r t s c h a n g e n o t i f i c a t i o n 是否支持在充电时提示,一般不支持。 示警发光二极管( n o t i f i c a t i o nl e d ) 驱动程序: w i n d o w sc e 系统要求设备支持一个发光二极管,在电池电量低、出现异常、 约会或闹钟到期时发光二极管会闪烁以提示用户。 示警发光二极管的驱动程序不是一个单独的动态链,而是作为静态链链接到了 g w e s e x e 中。 示警发光二级管的驱动程序是分层( 1 a y e r e d ) 的驱动程序,对o e m 厂商来说 只需要实现d d s i 接口,上层的d d i 接口由微软提供的m d d 层来实现。 d d s i 接口: ( 1 ) n l e d d r i v e r d l l e n t r y 一个形式上的动态链入口或出口,永远返回t r u e 就行。 ( 2 ) n 1 e d d r i v e r i n i t i a l i z e 初始化示警发光二极管驱动所需的全局变量及硬件。 ( 3 ) n l e d d r i v e r p o w e r d o w n 示警发光二极管驱动的p o w e r h a n d l e r 。 ( 4 ) n 1 e d d r i v e r s e t d e v i c e r 第二章嵌入式操作系统与设备驱动 设置示警发光二极管的参数,如:功能,灯的数量,震动器等 ( 5 ) n l e d d r i v e r g e t d e v i c e i n f o 取回示警发光二极管的参数。 d d i 接口: ( 1 ) c e c l e a r u s e r n o t i f i c a t i o n ( 2 ) c e h a n d l e a p p n o t i f i c a t i o n ( 3 ) c e r u n a p p a t e v e n t ( 4 ) c e r u n a p p a t t i m e ( 5 ) e e s e t u s e r n o tif ic a tio n 触摸屏驱动程序: 触摸屏的驱动程序也是分层的驱动程序,其中d d s i 要求o e m 厂商实现,d d i 是在微软提供m d d 中实现。 d d s i 接口: ( 1 ) d d s i t o u c h p a n e l a t t a c h 当触摸屏驱动收到d l l p r o c e s s a t t a c h 消息时, 际的功能,永远返回o 。 ( 2 ) d d si t o u c h p a n e l d e t a c h 当触摸屏驱动收到d l l p r o c e s s d e t a c h 消息时, 际的功能,永远返回0 。 ( 3 ) d d s i t o u c h p a n e l d is a b l e 禁止触摸屏采样,给触摸屏设备断电。 ( 4 ) d d s i t o u c h p a n e l e n a b l e 给触摸屏设备上电,做初始化操作。 ( 5 ) d d s i t o u c h p a n e l g e t d e v i c e c a p s 由m d d 调用,询问触摸屏设备的采样能力。 ( 6 ) d d s i t o u c h p a n e l g e t p o i n t 返回最近点的采样值,填充到指定数据结构中。 ( 7 ) d d s i t o u c h p a n e l p o w e r h a n d l e r 在系统o n o f f 时调用,进行上下电处理。 ( 8 ) d d si t o u c h p a n e ls e t m o d e 设置触摸屏工作模式。 键盘驱动: 9 m d d 就调用该函数,没有实 m d d 就调用该函数,没有实 电子科技大学硕七学位论文 键盘驱动程序把键盘输入转换为输入系统的键盘事件,然后驱动程序生成这些 键盘事件的统一代码符。 d d s i 接口: ( 1 ) k e y b d p d d _ g e t e v e n t 收到按键事件,进行相应的处理 ( 2 ) k e y b d p d d _ i n i t i a l i z e d r i v e r e x 没有实际的用处,永远返回t r u e ( 3 ) k e y b d p d d p o w e r h a n d l e r 在系统o n o f f 时调用,进行上下电处理 d d i 接口: ( 1 ) k e y b d d r i v e r g e t i n f o 获取键盘的相关信息。 ( 2 ) k e y b d d r iv e r s e t m o d e 设置键盘的相关信息。 ( 3 ) k e y b d d r i v e r i n i t i m i z e e x 在键盘驱动初始化时执行一次。 ( 4 ) k e y b d d riv e r v k e y t o u nic o d e 将虚拟键码转化为统一代码符 ( 5 ) k e y b d d r i v e r i n i t s t a t e s 设置键盘的s t a t e ,通常没有实现。 ( 6 ) k e y b d d r iv e r p o w e r h a n d le r 在系统o n o f f 时调用,会去调用k e y b d p d d p o w e r h a n d l e r 进行具体的上下电 处理。 显示器驱动: 显示器设备驱动程序比较特殊,大部分w i n d o w sc e 的显示器驱动程序都使用 一套称作图形原始引擎( g r a p h i c sp r i m i t i v ee n g i n e ,g p e ) 的c + + 类。g p e 相当 于是显示器驱动的m d d 层。 显示器驱动作为一个单独的动态链而存在,这个动态链只暴露一个函数 d r v e n a b i e d r i v e r ,该函数向被调用者( g w e s e x e ) 返回一个指针,该指针指向由 2 7 个函数地址组成的数组,g w e s 通过调用这些函数来控制显示。o e m 厂商就需要 实现这2 7 个函数,其中的3 个专用于打印机驱动。 图2 4 显示了w i n d o w sc e 图形系统的架构。 1 0 第二章嵌入式操作系统与设备驱动 图2 - 4w i n d o w sc e 图形系统架构 在o e m 要实现的函数中,只有d r v e n a b l e d r i v e r 的名字是严格定义的,因为 g w e s 要调用该函数,而其他的函数因为g w e s 是通过函数地址表来调用的,所以并 没有严格的命名规则,但是,函数的原型必需要符合在w i n d d i h 中的定义。 o e m 厂商需要实现的函数: ( 1 ) d r v e n a b l e d r i v e r ( 2 ) d r v a n y b i t ( 3 ) d r v b i t b i t ( 4 ) d r v c o n t r a s t c o n t r 0 1 ( 5 ) d r v c o p y b it s ( 6 ) d r v c r e a t e d e v i c e b it m a p ( 7 ) d r v d e l e t e d e v i c e b i t m a p ( 8 ) d r v d i s a b l e d r i v e r ( 9 ) d r v d i s a b l e p d e v ( 1 0 ) d r v d i s a b l e s u r f a c e ( 11 ) d r v e n a b l e p d e v ( 1 2 ) d r v e n a b l e s u r f a c e ( 1 3 ) d r v e n d o o c 电子科技大学硕士学位论文 ( 1 4 ) d r v e s c a p e ( 1 5 ) d r v f i l i p a t h ( 1 6 ) d r v g e t m a s k s ( 17 ) d r v g e t m o d e s ( 1 8 ) d r v m o v e p o i n t e r ( 1 9 ) d r v p a i n t ( 2 0 ) d r v p o w e r h a n dle r ( 21 ) d r v q u e r y f o n t ( 2 2 ) d r v r e a liz e b r u s h ( 2 3 ) d r v r e a liz e c olo r ( 2 4 ) d r v s e t p a l e t t e ( 2 5 ) d r v s e t p o in t e r s h a p e ( 2 6 ) d r v s t a r t d o c ( 2 7 ) d r v s t a r t p a g e ( 2 8 ) d r v st r o k e p a t h ( 2 9 ) d r v t r a n s p a r e n b l t ( 3 0 ) d r v u n r e a liz e c o l o r 2 1 4 流接口驱动程序 流接口驱动程序是动态链接库,由一个叫设备管理程序的特殊应用程序加载、 管理和卸载。与具有单独目的接口的本机设备驱动程序相比,所有的流接口驱动 程序使用同一个接口并调用同一个函数集流接口函数集。 任何有产生数据、接收数据的设备,不管它是何种类型的设备,都可以使用流 接口函数集。以下情况的两种设备通常使用流接口函数集: ( 1 ) 连接到w i n d o w sc e 平台的外围设备( 可安装的外围设备) 这些外围设备包括调制解调器、打印机、p c 卡等。所有这些外围设备都必需 通过外部连接器,如:串口或p c 卡插槽等连接w i n d o w sc e 平台。因此,外围设 备的驱动程序就像桌面计算机的打印机驱动程序一样,都当作用户模式的程序来 运行。 ( 2 ) 一些本机设备 这些本机设备包括串口设备,音频设备。( 因为这两种设备驱动程序采用流接 1 2 第二章嵌入式操作系统与设备驱动 口函数集,所以在这里把它们归为流接口驱动程序) 。 在这里以本机设各为代表来说明流接口驱动程序。 图2 5 本机设备( 使用流接口函数集) 驱动程序架构 如图2 - 5 所示,本机设备( 使用流接口函数集) 驱动程序是在启动时由设备管 理器加载。流接口驱动程序既可以通过设备管理器接收k e r n e l 发出的命令,又可 以通过文件系统调用( f i l es y s t e mi o c t l s ) 接收应用程序发出的命令。 w i n d o w sc e 文件系统将流接口驱动设备当作文件来管理。如果一个文件,其 文件名是由三个大写字母、一个数字、一个冒号组成,文件系统就把该文件识别 为特殊设备文件,这个格式是沿袭了微软m s - d o s 操作系统中定义串口和并口的习 惯,如c o m l :,p g r 7 :,g p s o :等,都是合法的设备文件名。 设备文件名前缀,前缀由三个大写字母组成,这三个字母用来识别与特殊流接 口驱动程序相对应的特殊设备文件名。文件名前缀存储在注册表中名为p r e f i x 的 键值中,p r e f i x 位于驱动程序的子键中。下面是音频驱动程序子键的例子: h k e y _ l o c a l m a c h i n e d r i v e r s b u i l t i n w a v e d e v ”p r e f ix ”= ”w a y ” 设备文件名前缀 ”d l l ”= w a v e d e v d 1 1 ” 指明设备驱动程序文件 ”i n d e x ”= d w o r d :1 索引值,指明文件设备名中的数字, 这里音频设备的文件名就是w a v l : 电子科技大学硕士学位论文 ”o r d e r ”= d w o r d :0 设备驱动程序的加载顺序 在生成流接口驱动程序时,就要指定这三个前缀字母。它可以是任意三个字母, 如果驱动程序和w i n d o w sc e 平台上已经存在的其他驱动程序是一类的话就应该使 用同一个共同前缀。例如,串行设备的驱动程序就可以使用共同的前缀c o m ,不同 的串行设备可以根据不同的索引值来区分开。 以下是流接口函数集: x x x c l o s e ( 其中x x x 是设备文件名前缀,例如,音频驱动就可以是w a vc l o s e ) x x xd e i n i t x x x i n i t x x x i o c o n t r o l x x x _ o p e n x x x p o w e r d o w n x x x _ p o w e r u p x x x r e a d x x x s e e k x x xw r i t e 这样文件系统就可以把使用流接口驱动程序的设备当作一个文件来管理,例 如,对一个音频设备,可以先用c r e a t e f i l e ( ”w a v i ”,) 来获得文件句柄, 然后利用这个句柄可以调用d e v i c e i o c o n t r o l 来向驱动程序发命令,也可以调用 普通的文件操作a p i 来上驱动程序做出某种操作。 音频驱动程序 因为音频驱动程序工作原理比较复杂,所以o e m 厂商一般都对音频驱动程序分 层,采用微软提供的m d d 库一a v e m d d d l l ,由m d d 来实现流接口函数集。而o e m 厂商实现与m d d 层适应的p d d 层,利用d d s i 接口把实际的音频硬件设备和m d d 层 连接起来。 音频驱动的d d s i 接口 ( 1 ) p d d _ a u d i o d e i n i t i a li z e ( 2 ) p d d a u d i o g e t i n t e r r u p t t y p e ( 3 ) p d d _ a u d i o i n i t i a l i z e ( 4 ) p d da u d io m e s s a g e ( 5 ) p d da u d i o p o w e r h a n d l e r 1 4 第二章嵌入式操作系统与设备驱动 ( 6 ) p d dw a v p r o c 2 1 5n d i s 驱动 网络驱动程序规范( n d i s ) 是w i n d o w sc e 籍以支持网络连接的一种方法。n d i s 提供了两个抽象层,用来把网络驱动程序与协议栈,例如把t c p i p 与红外数据协 会标准( i r d a ) 相连,或者把t c p i p 与以太网卡相连。n d i s 给网络驱动程序的编 写者提供了两组应用程序接口,一组是用于网络协议栈的,另一组是用于网络接 口卡( n i c ) 。 2 1 6u s b 驱动 u s b 系统软件由两层组成,较高的u s b 设备驱动程序层与较低的由w i n d o w sc e 实现的u s b 函数层。u s b 设备驱动程序使用u s b 函数来建立与它们所控制设备的连 接并对这些设备进行配置和通信。较低的u s b 函数层执行一些内部关联的任务: ( 1 ) 管理所有u s b 设备驱动程序和主机的内建u s b 根集成器之间的通信 ( 2 ) 在适当的时间加载和卸载u s b 设备驱动程序 ( 3 ) 进行从数据到u s b 协议框架和打包格式的双向转换 ( 4 ) 通过建立与所有u s b 设备上的通用端点的通信,执行一般的配置和与状态相关 的任务。 较低的u s b 函数本身又由两部分组成:较高的通用串行总线驱动程序( u s b d ) 模块和较低的主控制器驱动( h c d ) 模块。 u s b d 模块利用h c d 模块提供的功能来实现高层的u s b d 接口函数。u s b 设备驱 动程序使用u s b d 接口函数与它们的外围设备进行通讯。 i h v 和u s b 设备制造商应该利用u s b d 模块提供的函数来实现他们的u s b 设备 的驱动程序。o e m 负责给他们w i n d o w sc e 平台提供h c d 模块,这样他们的硬件才 能与u s b d 模块进行交互。 图2 6 说明了主机和外围设备的u s b 硬软件分层。 电子科技大学硕士学位论文 外设主机和软件 专用驱动 物理设备 程序通道 u s b 设备 驱动程序 专用设备通信 函数调用 l 谔据汾客+ 缺省管道 u s b d 模块 u s b 型! 据框架 h c d 模块 l b u s 接口 u s b 电缆。 u s b 娄! 据框架 r u s b 适配器 控制器 图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店客房员工协议合同书
- 多人股东参股合同协议书
- 码头集装箱知识培训内容课件
- 同时怎样写两个合同范本
- 货车驾驶员劳动合同范本
- 农村村集体用工合同范本
- ktv股份转让协议合同
- 入境新加坡劳务合同范本
- 租凭公司与司机合同范本
- 通信合同范本2025
- 2025年广东省中考历史试卷(含解析)
- 心电监护技术操作并发症的预防与处理
- 指挥部安保方案(3篇)
- 钳工(中级) 课件项目7-10 液压传动机构的装配与调试-机械设备保养与维修
- 银行独立授信审批官工作手册模板
- Unit 8 Let's Communicate!Section A(1a-1d)同步练习(含答案)2025-2026学年人教版(2024)八年级英语上册
- DB65∕T 4791-2024 水工隧洞敞开式TBM施工技术规范
- 工行金库资产管理办法
- 小岗位大作用班会课件
- GB/T 22080-2025网络安全技术信息安全管理体系要求
- 认证产品一致性管理办法
评论
0/150
提交评论