




已阅读5页,还剩84页未读, 继续免费阅读
(计算机应用技术专业论文)基于实时操作系统qnx的usb协议栈的设计和实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
四川大学硕士毕业论文基于实时操作系统q n x 的u s b 协议栈 的设计和实现计算机应用技术研究生 罗彬指导教师 游志胜摘要: 车载式移动查车系统是四川大学图形图像研究所以车牌识别系统为核心开发研制的高科技产品,它主要用于城市交通的各个路段进行流动作业,随时随地进行车辆监控和稽查。该系统是以嵌入式实时操作系统q n x作为支撑平台,并使用触摸屏图形界面和操作者进行交互。在实际应用过程中,当系统识别出车牌号码后,可以在本地进行数据库查询,如发现问题车辆则进行实时处理。而这种与用户数据库交换的方式是通过 u s b存储器来实现的,且每天需要更新的查询数据以及程序更新也需使用 u s b存储器来实现。为了体现系统实时性、可靠性和易用性的特点, q n x 提供对u s b 接口的系统级可靠支持就成了 整个移动查车系统设计的关键。 已 成为p c 标准的通用串行总线u s b 为数据的传输和采集提供了很大的便利,利用u s b 可以实现较传统方式更有效、更经济、点数更多的数据采集。 w i n d o w s操作系统和l i n u x 操作系统都提供了 对u s b 接口的有效支持,但实时操作系统q n x 却没有实现对u s b 接口的有效支持。 由 此本文研究了 基于实时操作系统q n x的u s b 驱动协议栈的设计和实现, 尤其是着重介绍了实时操作系统q n x 下对u s b驱动模块支持的 独特性和u s b 协议栈的 层次和算法实现。 本文的主要内 容大致分为三个部分: 第一部分是对 u s b协议的发展和概况进行介绍,以 及开发 u s b协议栈的 项目 背景和实际应用需求: 第二部分是介绍u s b驱动程序在 w i n d o w s操作系统和l i n u x 操作系统下的具体实现;第三部分是着重研究了q n x 操作系统下设备驱动的独特性以及 u s b 协议栈在 q n x 下的设计思想和具体实现。与传四川大学硕士毕业论文统的u n i x 或w i n d o w s 平台 下开发设备驱动程序不同,由 于q n x 的微内 核结构,q n x 下的系统进程和用户所写的进程没有什么不同, 甚至没有私有的隐藏起来的以至用户不能使用的界面。正是这种结构给 q n x带来了无与伦比的可扩展性,可以在应用程序级上实现u s b 协议栈复杂的 层次结构和逐层调用的实现。关键词:u s b q n x 协议栈驱动程序四川大学硕士毕业论文t h e d e s i g n a n d i m p l e m e n t o f u s b p r o t o c o l b a s e d r e a l - t i m e q n xm对o r : a p p l i e d c o m p u t e rg r a d u a t e : l u o b i n a d v i s o r : y o u z h i s h e n ga b s t r a c t : t h e m o b i l e d e t e c t v e h i c l e s y s t e m ( m d v s ) i s a h i - t e c h p r o d u c t d e v e l o p e db y i n s t i t u t e o f i m a g e&g r a p h i c s , s i c h u a n u n i v e r s i t y , w h i c h i s m a i n l yu s e d f o r v e h i c l e d e t e c t i o n a n d t r a f f i c c o n t r o l . m d v s i s b a s e d o n r e a l - t i m ee m b e d d e d s y s t e m 一 q n x , w h o s e t o u c h s c r e e n a n d g r a p h i c i n t e r f a c e c a n o f f e rg o o d t r a n s a c t i o n f o r u s e r s . o n c e a v e h i c l e - l i c e n s e d - p l a t e i s r e c o g n i z e di n t h e a p p l i c a t i o n o f t h i s s y s t e m , i t s i n f o r m a t i o n i s g o t t e n q u i c k l y f r o ml o c a l d a t a b a s e s o t h a t t h e p r o b l e m c a n b e d e a l t w i t h i n t i m e . f u r t h e rm o r e , d a t a t r a n s f o r m a t i o n o f u s e r d a t a b a s e i s r e a l i z e d i n t h e w a y o f u s bs t o r a g e w h i c h i s a l s o u s e d i n u p d a t i n g d a i l y d a t a n e e d e d b y q u e r y a n dp r o g r a m s . t h e u s b c a n o f f e r m a n y a d v a n t a g e s f o r d a t a t r a n s a c t i o n a n d d a t ac o l l e c t i o n , w h i c h i s m o r e a v a i l a b l e a n d m o r e e c o n o m i c a l t h a n t h et r a d i t i o n a l t r a n s f e r m e t h o d . w i n d o w s o s a n d l i n u x o s c a n s u p p o r t u s be f f e c t i v e l y , b u t r e a l - t i m e q n x s y s t e m c a n n o t s u p p o r t u s b . t h e d e s i g na n d i m p l e m e n t o f u s b p r o t o c o l b a s e d r e a l - t i m e q n x a r e s t u d i e d i n t h e p a p e r .a t t h e s a m e t i m e , t h e s p e c i a l i t i e s o f u s b d r i v e r m o d u l e a n d t h e h i e r a r c h ya n d t h e a l g o r i t h m o f u s b p r o t o c o l a r e i n t r o d u c e d i n d e t a i l . t h e c o n t e n to f p a p e r i n c l u d e s t h r e e p a r t s : f i r s t , t h e d e v e l o p m e n t a n d t h e c o n t e n to f u s b p r o t o c o l , t h e b a c k g r o u n d a n d t h e a c t u a l n e e d o f t h e p r o j e c t a r ei n t r o d u c e d ; s e c o n d , t h e r e a l i z a t i o n o f t h e u s b d r i v e r p r o g r a m o n w i n d o w si s d e s c r i b e d ; t h i r d , t h e s p e c i a l i t i e s o f q n x o s a n d t h e r e a l i z a t i o nt h e u s bk e y w o r d :d r i v e ru s bo n q n x o s a r e d i s c u s s e d .c曰f土n0q n xp r o t o c o l d r i v e rt o四川大学硕士毕业论文1概述1 . 1项目背景 四川大学图形图像研究所以车牌识别系统为核心开发研制了车载式移动查车系统。由于车载式移动查车系统的机动灵活的特点,常常被用于城市交通的各个路段进行流动作业,随时随地进行车辆监控和稽查。如果采用和固定监控系统一样的方式,把监控数据通过网络传输到交通指挥中心的数据库中进行查询比对就有些不太可行。因为不可能在城市公路网的任何地段铺设网络。如果使用无线网络的方式则会增加大幅增加设备成本,而且通讯质量也不能得到保证。而使用u s b 传输方式则成为比较合理的解决方案。在实际的应用过程中,系统识别车牌号码后,可以 在本地进行数据库查询报替,和用户的数据库交换通过u 盘实现。每天需要的更新的查询数据以 及程序更新也需要使用普通u 盘实现。系统工作图如图 1 - 1 所示1 7 i 1矛 到 字自 动更新触摸屏校正触摸屏驱动u盘驱动接口u盘驱动程序视励首 获及车 牌衫 拐ij违章查询图1 - 1 系统框架图四川大学硕士毕业论文 系统是以 嵌入式实时操作系统q n x 作为支撑平台的。 但是q n x 操作系统并没有对包括u s b 接口 存储器在内的u s b 设备的系统级支持 ( 关于q n x 操作系统和设备驱动的关系,会在后面做详细介绍)。需要加载所需设备的驱动程序。例如对于安装了q n x 6 . 1 做为操作系统的p c , 要想使用支持u s b 接口的鼠标, 就必须从q n x 的网 站上 ( h t t p : / / d e v e l o p e r s . q n x . c o m / f i x e s / s o f t w a r e / a r c h i v e / )下载相应的设备驱动程序d e v i - h i r u n 安装到系统的 / u s r / p h o t o n / b i 。 目 录下才行。 我们在q n x 的官方网站上的 硬件支持目 录上发现,只提供了 对u s b 接口 的鼠 标、 键盘以 及网 卡有相应的驱动程序,并没有提供对u s b 存储器的支持。向q n x 软件供应商查询后得知, 支持u s b 存储器的u s b 驱动协议栈是由第三方提供的,要使用必须支出不菲的费用。对于一个还未产品化的项目来说成本太高。于是项目 组就着手设计基于q n x 的u s b 协议栈。1 . 2 u s b 接口概述1 . 2 . 1 u s b 发展历史 过去的二十年中, 个人计算机的外设一直比较简单, 常常用到的是鼠 标、 打印机。 尽管个人计算机由a p p l e i 发展到今天的p e n t i u m 4 , 在计算性能和应用领域方面提升了 许多, 而串口与并口却多少年来一成不变地位于主机箱的背后, 在功能和结构上没有什么变化。 1 9 9 4 年i n t e l , c o m p a q , d i g i t a l , i b m , m i c r o s o f t . n e c , n o r t h e r n t e l e c o m等世界上著名的七家计算机公司和通讯公司成立了u s b 论坛, 于1 9 9 5 年1 1 月正式制定了u s b o . 9 通用串 行总线 ( u n i v e r s a l s e r i a l b u s ) 规范, 而把u s b 接口 真正设计在主板上用了一年的时间。1 9 9 7 年开始有真正符合u s b 技术标准的外设出现.u s b i . 1 是目 前推出的支持u s b的计算机与外设上普遍采用的标准。2 0 0 0年4 月, 正式公布了u s b 2 . 0规范, 该规范的支持者除了 原有的康柏、 i n t e l , 微软和n e c 四个成员外, 还有惠普、朗讯和飞利浦三个新成员。u s b 2 . 0 向下兼容u s b i . 1 , 数据的传输率可以 达到1 2 0 m b p s - 2 4 o m b p s , 支持宽带宽数字摄像设备及下一代扫描仪、打印机及存储设备。四川大学硕士毕业论文 目 前普遍采用的u s b 1 . 1 主要应用在中低速外部设备上, 它提供的传输速度有低速1 . 5 m b p s 和全速1 2 m b p s 两种, 一个u s b 端口可同时支持全速和低速的设备访问。低速的u s b 带宽 ( 1 . 5 m b p s )支持低速设备, 例如显示器、i s d n 电话、调制解调器、键盘、鼠标、游戏手柄、扫描仪、打印机、光驱、磁带机、软驱等。全速的u s b 带宽 ( 1 2 m b p s )将支持大范围的多媒体和电话设备等。 目 前u s b已得到了一个由4 5 0 家技术公司组成的技术联盟的支持, 据d a t a q u e s t 报告: 1 9 9 8 年配有u s b 的p c 数量将增长3 0 0 , 达到1 . 3 6 亿台。到了2 0 0 1 年大约1 0 0 %的台式p c 和9 0 %以上的笔记本计算机中都提供了对u s b的支持。1 9 9 9 年2 月i n t e l 公司宣布了u s b 2 . 0 规范, 它在确保成本没有多大的变化的前提下,将速率从1 2 m b p s 提高至1 2 0 - - 2 4 0 m b p s o1 . 2 . 2 u s b 主要特点1 、使用方便 使用u s b 接口可以连接多个不同的设备, 而过去的串口和并口只能接一个设备, 因此, 从一个设备转而使用另一个设备时不得不关机, 拆 下这个, 安上那个,开机再使用, u s b 则为用户省去了 这些麻烦, 除了可以 把多个设备串 接在一起之外, u s b 还支持热插拔。 在软件方面, u s b 设计的驱动程序和应用软件可以自 动启动, 无需用户做更多的操作: 这同 样为用户带来极大的方便。 u s b 设备也不涉及工 r q 冲突问题。 u s b口单独使用自己的保留中断, 不会同其它设备争用p c 机有限的资源, 同样为用户省去了硬件配置的烦恼。2 、速度够快 速度性能是u s b 技术的突出特点之一。u s b 1 . 0 接口的最高传输率可达每秒1 2 9 b , u s b 2 . 0 将速率从 1 2 m b p : 提高至1 2 0 - - 2 4 0 m b p s 。比串口快了整整 1 0 0 倍,比并口也快了十多倍。3 、连接灵活四川大学硕士毕业论文 u s b 接口 支持多 个不同 设备的串 列连接, 一个u s b 口 理论上可以 连接1 2 7 个u s b 设备。 连接的方式也十分灵活, 既可以 使用串行连接, 也可以使用中 枢转接头( h u b ) , 把多个设备连接在一起, 再同p c 机的u s b 口 相接。 在 u s b 方式下, 所有的外设都在机箱外连接, 连接外设不必再打开机箱;允许外设热插拔, 而不必关闭主机电 源。u s b 采用 “ 级联”方式, 即每个u s b 设备用一个u s b插头连接到一个外设的u s b 插座上, 而其本身又提供一个u s b 插座供下一个u s b 外设连接 用。通过这种类似菊花链式的连接, 一个u s b 控制器可以连接多达 1 2 7 个外设, 而每个外 设间距离( 线缆长度) 可达5 米。u s b 能智能识别u s b 链上外围设备的插入或折卸, u s b 为p c的外设扩充提供了一个很好的解决方案。4 、独立供电 普通的使用串口、 并口 的设备都需要单独的供电系统, 而u s b 设备则不需要,因为u s b 接口 提供了内 置电源。 u s b 电源能向低5 v 电压/ 1 0 0 m a 电 流的供电, 最大可提供5 0 0 m a 的电流, 因此新的设备就不需要专门的交流电 源了 , 从而降低了这些设备的成本并提高了性价比。5 、支持多媒体 u s b 提供了 对电 话的两路数据支持。 u s b 可支持异步以 及等时数据传输, 使电话可与p c集成, 共享语音邮件及其它特性。 u s b 还具有高 保真音频。由 于u s b音频信息生成于计算机外, 因而减小了电子噪音干扰 声音质量的机会,从而使音频系统具有更高的保真度。6 . u s b 存在的问题 尽管在理论上, u s b 可以实现高达1 2 7 个设备的串 列连接, 但是在实际应用中,也许串联3 到4 个设备就可能导致一些设备失效。而且, 实际的u s b 产品中, 只有键盘是有一个输入口、 一个输出口 的设备, 其它的则只有一个输入口 而已 , 根本无法再连接下一个u s b 设备, 所以 当前的u s b 应用中 , 使用h u b 来连接多 个u s b设备是必需的。四川大学硕士毕业论文口 u s b h o s t 通过块数据传输将要显示的数据送给显示器。口 u s b h o s t 通过控制传输更改键盘、鼠标属性。口 u s b h o s t 通过中断传输要求键盘、鼠标输入读入系统。口 u s b h o s t 通过控制传输更改a u d i 。 属性。口 u s b h o s t 通过同步传输与a u d i o 设备传输数据。口 u s b h o s t 通过控制传输更改m o d e m 属性。口 u s b h o s t 通过块数据传输与m o d e m 设备传输数据。在本系统设计中, 由 于u s b 接口的主要功能是实现监控数据的存储和交换,所以u s b h o s t 只实现了块数据传输方式, 大大提高了系统工作效率。1 . 3 作者所做的主要工作 在本系统的开发过程中,作者承担的主要工作是对u s b 体系结构加以 分析,并针对q n x 操作系统对u s b 设备驱动的独特性进行设计和实现。使q n x 操作系统对u s b 协议栈实现可靠的支持,在用户层面上实现对u s b 存储器的支持。 实现用户和 u s b存储器之间的可靠数据操作和尽量降低数据传输延迟是本人工作的重点之一,也是关系整个系统设计能否成功的关键,良 好的需求可减少由于需求分析不明造成的设计缺陷和设计反复造成的成本增加。本人采用了结构化分析方法完成了 对 u s b 协议栈的需求分析和数据接口定义,为系统的设计开发阶段的顺利进行创造了良 好条件。 本人完成系统对u s b 存储器支持的功能实现和调试工作, 其中具有同步关系的监控数据提交线程程序 ( u h c i )调试是该部分的难点和和耗时的工作。本人完成的代码总长度1 1 0 0 0 行 ( 包括注释行) 。在针对用户的应用层上, 本人还完成了对u s b 存储器操作的接口 程序编写, 使用户可以 象操作普通文件一样直接读写u s b 存储器。 通过在最坏情况下对系统功能和可靠性测试, 没有发现数据丢失和系统功能响应时间的延迟。通过理论分析和实际系统的测试表明,可以比较有效地保证任意时刻读写数据的实时性和可靠性。 实际系统的测试证明我们设计的u s b 协议栈对q n x 系统的 支持是稳定可靠的。四川大学硕士毕业论文2 . u s b 设备驱动在不同操作系统下的实现2 . 1 u s b 协议栈的软件实现原理 u s b 提供了在一台主机和若干台附属的u s b 设备之间的通信功能, 从终端用户的角度看到的u s b 系统,可简单地用图2 - 1 表示: 图2 - 1 u s b 主机 / 设备的 简单 模型 但在实际的实现上, 具体的系统要比 这复杂, 不同层次的实现者对u s b 的有不同要求, 这使得我们必须从不同的层次观察u s b 系统。 u s b 系统提出了一些重要的概念和情况来支持现代个人计算机所提出的可靠性要求,所以u s b的分层理解是必须的。 它能使不同层次的实现者只关心u s b 相关层次的特性功能细节,而不必掌握从硬件结构到软件系统的所有细节。u s b的这种层次结构如图 2 - 2所示,主机物理设备客户软件u s b系 统 软件u s b -t q lr $ 4 a) 一二 三 三 t l困 ! .6tf7应 用u s b系 统 软件u s b 总线抉口井=牛 实际通信流叫卜 . 叫卜 逻辑通信流匹二 二二 口 播 实 现 的 区 域图2 - 2 u s b 需实现的区四川大学硕士毕业论文 各层次的具体细节将在以后逐步介绍。 特别地, 有四个层次的实现是较为集中的。 u s b 物理设备( u s b p h y s i c a l d e v i c e ) :u s b 上的一种硬件,可运行一些用户程序。 客户软件( c l i e n t s o f t w a r e ) :为一个特定的u s b 设备而在主机上运行的软件。这种软件由u s b 设备的提供者提供,或由操作系统提供。 u s b 系统软件( u s b s y s t e m s o f t w a r e ) :此软件用于在特定的操作系统中支持u s b ,它由 操作系统提供。与具体的u s b 设备无关,也独立于客户软件。 u s b 主机控制器( u s b h o s t c o n t r o l l e r ) : 总线在主机方面的接口,是软件和硬件的总和。用于支持u s b 设备通过u s b 连到主机上。 这四个u s b 系统的组成部分在功能上存在相互重叠的部分。 为了支持主机与客户之间的坚固可靠的通信,还需要在后面对这些部分进行细节性描述。2 . 2 u s b h o s t 端软件结构及功能u s b h o s t 端软件结构如图2 - 3 所示。r s 映a 食 性 年 合图2 - 3 u s b h o s t 端软件结构2 . 2 . 1 u s b 接口驱动程序四川大学硕士毕业论文u s b 接口 驱动程序需实现以下功能:令 u s b 接口 器件的初始化;令 计算上层数据包的效验和,发送上层的数据包;口 发送 s o f 帧:令 接收从u s b 接口传送来的数据,并检查数据的有效性;口 将接收到的数据送往上层。2 . 2 . 2 u s b 协议栈驱动程序 u s b 协议栈驱动程序需实现以下功能: 口 提供与设备驱动程序的接口; 口 读取并解析u s b 设备描述符,配置描述符; 口 为u s b 设备分配唯一的地址; 口 使用默认的配置来配置设备: 口 支持基本的u s b 命令请求; 口 连接设备与相应的驱动程序; 口 转发设备驱动程序的数据包。2 . 2 . 3 u s b 设备驱动程序 设备驱动程序需实现以下功能: 口 提供与应用程序的接口; 口 读取并解析u s b 设备特有的描述符,获得设备提供的传输通道 口 发送设备特有的和基本的u s b 命令请求; 口 通过设备提供的传输通道与设备进行数据传输; 口 通过u s b 命令请求重新配置设备。2 . 3 u s b 设备驱动在w i n d o w 。 下的实现2 . 3 . 1 w i n d o w s 下u s b 软件框架四川大学硕士毕业论文 作为w i n 9 8 和w 工 n 2 k 推荐的 一项新技术来说, u s b 的驱动程序和以 往的 直接跟硬件打交道的w i n 9 5 的v x d ( v i r t u a l d e v i c e d r i v e r ) 驱动程序不同,它应该是w d m ( w i n d o w s d r i v e r m o d u l e ) 类型的。 w i n 9 8 和w i n 2 0 0 0 均支持该类型的驱动程序。w d m 首先定义了一个基本的核心驱动程序模型,处理所有类型的数据,使驱动程序模型的内核实现更加的固定。 w d m 还是一种分层的程序结构, 可以看作是w i n d o w s n t 驱动程序的改进,w d m 驱动程序支持即插即用、电源管理和w m i ( w i n d o w s m a n a g e m e n t i n s t r u m e n t a t i o n ) 特性。 w i n 9 8 和w i n 2 0 0 0 提供t一系列的系统驱动程序,它们具有许多标准类型设备服务所需的所有基本功能。u s b 的w d m 接口框图如图2 - 4( 这个图可以说是u s b 软件总体框图)o t h e ru s b d r iv e ru 5 日d r iv e ri n t e r f a c ec l i e n t su s b d r iv e r s t a c k图2 - 4 w i n d o w s 下u s b 软件总体框架图 对于h i d 的设备, 就可以采用上图左上边的结构, 其它类的话采用右上的结构, 其实 右 边的 结 构 可以 又 细 分 成 两 层, 一 层 是c l a s s d r i v e r , 一 层 是m i n i p o r td r i v e r 。而倒数第三行的u h c d 和o p e n h c i 分别是由i n t e l 和c o m p a q 两个公司定的一个和硬件有关的底层驱动程序标准,可以根据所需要的选择。四川大学硕士毕业论文 w i n d o w s 提供了u s b 的系统类驱动程序,它处理了u s b 上的所有底层通信,这样其它驱动程序就有了一个定义好的接口 可以使用. u s b h u b . s y s 是u s b 集线器的驱动程序。 u s b d . s y s 是u s b 类驱动程序,它使用图中的u h c d . s y s 或o p e n h c i . s y s 分别驱动两种类型的控制器 u h c i ( u s b h o s t c o n t r o l l e ri n t e r f a c e ), o h c i ( o p e n h o s t c o n t r o l l e r i n t e r f a c e )。当p c i 枚举器发现u s b 主机控制器后, 就会装入相关的驱动程序。 通常一些设备都需要开发者写一个核模式的驱动程序来使硬件正常工作。 在核模式下驱动程序通过i r p ( i / or e q u e s t p a c k e t ) 来组织和操作一些由 其他部分发过来的要求和命令。 而工 即又是通过u r b ( u s b r e q u e s t b l o c k s ) 来实现的。 但对于一些h i d ( h u m a n i n t e r f a c ed e v i c e )的u s b 设备,像键盘、鼠 标和游戏操纵杆之类的设备可以 被操作系统自 动识别并且支持,开发者不需要再另写相关的驱动程序。2 . 3 . 2 w i n d o w s c e 下u s b 设备驱动 w i n d o w s c e是为各种嵌入式系统和产品设计的一种压缩的、具有高效的、可升级的操作系统( o s ) 。 国内采用此操作系统的厂商已经很多了。 现以w i n d o w sc e 为例,简单介绍一下如何开发w i n d o w s c e 下的u s b 驱动程序。 w i n d o w s c e的u s b 系统软件分为两层: u s b c l i e n t 设备驱动程序和底层的w i n d o w s c e 实现的函数层。 u s b 设备驱动程序主要负责利用系统提供的底层接口配置设备, 和设备进行通讯。底层的函数提本身又由两部分组成, 通用串 行总线驱动程序 ( u s b d )模块和较低的主控制器驱动程序 ( h c d )模块。h c d 负责最最底层的处理,u s b d 模块实现较高的u s b d 函数接口。u s b 设备驱动主要利用u s b d 接口函数和他们的外围设备打交道。 u s b 设备驱动程序主要和 u s b d 打交道, 所以我们必须详细的了解 u s b d 提供的函数。主要的传输函数有:c 1 o s e t r a n s f e ri s s u e i n t e r r u p t r a n s f e r四川大学硕士毕业论文g e t l s o c h r e s u l ti s s u e l s o c h t r a n s f e rg e t t r a n s f e r s t a t u s i s t r a n s f e r c o m p l e t e主要的用于打开和关闭u s b d 和u s b 设备之间的通信通道的函 数有:a b o r t p i p e t r a n s f e r sc l o s e p i p ei s d e f a u l t p i p e h a l t e d i s p i p e h a l t e d即e n p i p er e s e t d e f a u l t p i p e相应的打包函数接口 有:g e t f r a m e l e n g t hg e t f r a m e n u m b e rs e t f r a m e l e n g t ht a k e f r a m e l e n g t h c o n t r o l取得设置设备配置函数:g e t s t a t u ss e t d e s c r i p t o rg e t d e s c r i p t o rs e t f e a t u r eg e t i n t e r f a c es e t i n t e r f a c e与u s b 进行交互的实现方法相关的多任务函数:f i n d i n t e r f a c er e g i s t e r c l i e n t d e v i c e i dg e t d e v i c e l n f or e g i s t e r c l i e n t s e t t i n g sg e t u s b d v e r s i o nr e g i s t e r n o t i f i c a t i o n r o u t i n e常见的w i n d o w s c e 下u s b 的设备驱动程序的编写有以下几种方法:1 7四川大学硕士毕业论文流式接口函数 这种驱动程序主要呈现流式函数接口,主要输出x x x _ i n i t , x x x es d e i n i t , x x x o p e n , x x x es c l o s e , x x x _ o p e n , x x x we c l o s e , x x x _ r e a d , xx x w r i t e , x x x _ s e e k , x x x _ i o c o n t r o l , x x x _ p o w e r u p , x x x p o w e r d o w n 等流式接口,注意上述的几个接口一定都要输出,另外x x x 必须为三个字符,否则会出错。但是此类的驱动程序不是通过设备管理接口来加载的,所以必须手工的调用r e g i s t e r d e v i c e( ) 和d e r e g i s t e r d e v i c e( )函数来加载和卸载驱动程序。用户可以将此类的设备作为标准的文件来操作,只要调用相应的文件操作就可以和驱动程序打交道。使用现有的w i n d o w c e 的应用程序接口 此类设备主要是利用w i n d o w s c e 中已经有了现成的函数接口, 例如u s b m a s ss t o r a g e d i s k , 它主要利用现有的w i n d o w s c e 中己经有的可安装文件系统接口,呈现给系统可用的文件系统,对于用户来讲,它是透明的,用户仅仅感觉在操作一个文件夹。创建指定到特定的u s b d 的用户指定的a p i 这种方法在u s b d 呈现设备时不需要任何限制,主要是特制的提供a p i 给用户,一般不太常见。u s b 设备驱动程序必须输出的函数有:u s b d e v i e c a t t a c h 当u s b 设备连接到计算机上时, u s b d 模块就会调用此函数, 这个函数主要用于初始化u s b 设备, 取得u s b 设备信息, 配置u s b 设备,并且申 请必需的资源u s b i n s t a l l d r i v e r四川大学硕士毕业论文 主要用于创建一个驱动程序加载所需的注册表信息, 例如读写超时, 设备名称等。u s b u n i n s t a l l d r i v e r 主要用于释放驱动程序所占 用的资源,以 及删除u s b i n s t a l l d r i v e r 函数创建的注册表等。 上述的三个函数接口是所有的u s b 驱动程序必须提供的,缺一不可。 另外比较重要的是u s b 设备驱动程序的注册表配置,一般的u s b 设备驱动程序的注册表配置在h k e y _ l o c a l ee m a c h i n e d r i v e r s u s b l o a d c l i e n t s 下, 每个驱动程序的子键都有g r o u p l _ i d g r o u p 2 _ i d g r o u p 3 _ i d d r i v e r n a m e 格式, 如果注册表信息与u s b 设备信息符合,u s b d 就会加载此驱动程序。否则设备的子键应该由供应商,设备类和协议信息通过下划线组成。 具体的配置举个例子: 例如对于一个p d a 设备, 它具有一个u s b 接口, 它的供应厂商i d 假设为0 x 0 8 8 8 , 设备i d 为0 x 0 9 9 9 , 没有使用特殊的协议, 那么它的加载注册表应该写为: h k e y es l o c a l es m a c h i n e d r i v e r s u s b l o a d c l i e n t s 2 1 8 4 _ 2 4 5 7 d e f a u l t d e f a u lt p d a d l l = p d a u s b . d l l 需要注意的是注册表构成都是十进制数值来标识的,注意一下十进制和十六进制的转换。 再举个u s b 鼠 标的例子,u s b 鼠 标是标准的h i d 设备, 它的 协议为:i n t e r f a c e c l a s s c o d e 为3 ( h i d 类),i n t e r f a c e s u b c l a s s c o d e 为1 ( 引导接口 类) , i n t e r f a c e p r o t o c o l c o d e 为2 ( 鼠标协议类),所以它的注册如下: h k e y 一 l o c a l ee m a c h i n e d r i v e r s u s b l o a d c l i e n t s d e f a u l t d e f a u l t 3 _ 1 _ 2 u sb m o u s e d l l = u s b m o u s e . d l l 可以看出, 其实驱动开发无非做两件事情, 一件是和硬件交互,另外一件是和操作系统交互。 举个简单的例子,例如:需要开发一个u s b 鼠标驱动程序,就需要了解u s b鼠标硬件上是怎么发送数据的?操作系统怎么才能得到鼠标的控制事件?其实u s b鼠标是有一个中断p i p e 的,用于传送鼠标产生的数据,四川大学硕士毕业论文w i n d w o s c e 中有个接口函数叫做m o u s e - e v e n t ( ) , 专门用于产生鼠 标事件,但是它是不关心具体什么硬件的,甚至在应用程序中调用这个函数都可以实现模拟鼠 标, 对应的 有个k e y b d _ e v e n t ( ) , 用于产生键盘事件, 只要将相 应的 数据转换一下,调用一下m o u s e _ e v e n t( )即可。2 . 3 . 3 w i n d o w s n t 下u s b 设备驱动 n t 驱动程序和一般的d o s / w i n d o w s c 语言程序不一样,它没有m a i n ( ) 或者w i n m a i n ( ) 函数入口。和d l l 类似地,它向 操作系统显露一个名称为d r i v e r e n t r y ( ) 的函数, 在启动驱动程序的时候,操作系统将调用这个入口。d r i v e r e n t r y 除了 做一些必 要的设备初始化工作外. 还初始化一些d i s p a t c h例程入口。我们知道, n t 应用和设备驱动程序打交道主要是通过c r e a t e f i l e ,r e a d f i l e , w r i t e f i l e和d e v i c e l o c o n t r o l 等w i n 3 2 a p i 来进行 的。这些a p i其实都对应着驱动 程序的一些d i s p a t c h 例程。 而驱动程序除了d r i v e r e n t r y 以外,主要就是由这些d i s p a t c h 例 程组成的。 例如调用w i n 3 2 a p i c r e a t e f i l e的时候,操作系统最终转化为对驱动程序i r p 一 we c r e a t e 功能代码所对应的d i s p a t c h 例程的调用,如果驱动程序没有提供该例程, c r e a t e f i l e 调用就会失败。u s b 驱动程序框架 写一个。 r i v e r e n t r y 例程, 在里面调用l o c r e a t e d e v l c e 创建 一个d e v i c e对象。 写一个处理i r p m j _ c r e a t e 请求的d i s p a t c h 例程的基本框架 ( 参见d d kk e r n e l - m o d e d r i v e r s 4 . 4 . 3 描述的一个d i s p a t c h c r e a t e例程所要完成的 最基本工作。当 然写了d i s p a t c h c r e a t e 例程后, 要在d r i v e r e n t r y 例程为i r p m j c r e a t e 初始化例程入口 ) 。 如果驱动程序创建了多于一个d e v i c e 对象,则必须为i r p _ m j _ c l o s e请求写一个例程, 该例程通常情况下可以 和d i s p a t c h c r e a t e 共用一个例程,参见参见d d k k e r n e l - m o d e d r i v e r s 4 . 4 . 3 0四川大学硕士毕业论文编译连接驱动程序。用下面的方法来测试驱动程序。 首先安装好驱动程序。 其次还得为n t 逻辑设备名称和目 标d e v i c e 对象名称之间建立起符号连接,d e v i c e 对象名称对w i n 3 2 用户模式是不可见的,是不能直接通过a p i 来访问的,w i n 3 2 a p i 只能访问n t逻辑设备名称。可以通过修改注册表来建立这两种名称之间的符号连接。运行r e g e d t 3 2 . e x e 在 h k e y 一 l o c a l m a c h i n e s y s t e m c u r r e n t c o n t r o l s e t c o n t r o l s e s s i o nm a n a g e r d o s d e v i c e s 下建立起符号连接( 这种符号连接也可以 在驱动程序里调用函数 i o c r e a t e s y m b o l i c l i n k 来创建) 。 然后重新启动系统。 编写一个简单的测试程序调用w i n 3 2 a p i c r e a t e f i l e 函数以刚才命名的n t逻辑设备名打开这个设备。如果打开成功,那么也就成功地写出了一个简单的驱动程序了。2 . 4 u s b 设备驱动在l i n u x 下的实现2 . 4 . 1 l i n u x 驱动程序简介 设备驱动程序是操作系统内核和机器硬件之间的接口, 为应用程序屏蔽了硬件的细节。应用程序看待硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要完成以下功能:对设备进行初始化:使设备投入运行和退出服务;把数据从内核传送到设备和从设备接受数据;以及检测和处理设备出现的错误等。 l i n u x 系统的设备一般分为字符设备、 块设备和网络设备三种。 字符设备是指存取时没有缓存的设备。块设备的读写都有缓存来支持,并且块设备必须能够随机存取,字符设备则没有这个要求。一个文件系统要安装进入操作系统必须在块设备上。 网络设备在l i n u x 里做专门的处理。 l i n u x 的网络系统主要是基于 b s d u n i x的 s o c k e t机制。在系统和驱动程序之间定义有专门的数据结构( s k _ b u f f ) 进行数据的 传递。 系统里支持对发送数据和接收数据的缓存, 提供流量控制机制,提供对多协议的支持。四川大学硕士毕业论文3基于q n x 的u s b 协议栈的设计及实现3 . 1 q n x 实时操作系统体系结构概述 q n x 是一个多任务、 多用户、 分布式、 可嵌入式符合p o s i x 标准的微内核的主流实时操作系统,广泛用于实时性能、开发灵活性、网络灵活性要求较高的场合, 如电信系统、 医疗仪器、 航空航天、 工业自 动化、 交通运输、 p o s 机、 信息家电等。 提供这样的操作环境的 o s体系结构包括一个实时微内核n u t r r i n o ,周边的一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时物质的量浓度讲课文档
- 内科重点专科汇报
- 胸膜听诊语音讲解
- 2026届贵州省铜仁市石阡县民族中学化学高二第一学期期末联考模拟试题含答案
- 树叶印染工艺技术解析
- 软开度基本功讲解
- 新版反垄断法核心解读
- 信息技术自制信封
- 痛痹中医护理
- 神经系统器官讲解
- 双方签定协议书
- 2024-2025学年八年级数学下册期末培优卷(北师大版)含答案
- 2025福建福州市鼓楼区国有资产投资发展集团有限公司副总经理公开招聘1人笔试参考题库附带答案详解(10套)
- 2025年12345热线考试题库
- 多余物控制管理办法
- 2025年卫生健康行业经济管理领军人才试题
- 河南省洛阳市2024-2025学年高一下学期期末质量检测物理试卷
- 雅思介绍课件
- 《电商直播运营》教案-任务1 直播平台与岗位认知
- 反邪教宣讲课件
- 2025年重庆市高考物理试卷(含答案解析)
评论
0/150
提交评论