




已阅读5页,还剩58页未读, 继续免费阅读
(微电子学与固体电子学专业论文)usb系统驱动及固件开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
撼要 摘要 u s b 是一种通用串行总线,具有使用方便、传输速度快以及连接灵活的特点。 对u s 8 设备的操作使用离不开u s b 的驱动程序。d r i v e r s 锄i o 工具的如现极大的 提高了人们开发w d m 驱动程序的效率。使用实时操作系统开发u s b 的固件驱动 程序有效的提高了c p u 的利用率并且大大简化了应用系统的设计。 本课题针对u s b 设备的w d m 驱动程序以及固件驱动程序的原理以及开发过 程进行了探讨。论文从u s b 总线的基本构成开始,逐步分析了u s b 的数据传输 方式,u s b 的枚举过程等u s b 协议的相关重要内容。根据u s b 的w d m 驱动程 序的编程思想,论文以d d k2 0 0 0 中u s b 的w d m 驱动程序的入口例程,即插即 用,电源管理,w m i 等主要需要实现功能为基本原理,较为详细地介绍了u s b 的w d m 驱动程序开发的过程,并在此基础上介绍了u s b 的应用程序和w d m 驱 动程序的通信过程。论文中通过比较两种u s b 固件驱动程序编程思想,即前后台 方式的编程思想和基于丛c o s i i 内核基础上的编程思想,选择了介绍离效的固件 驱动程序开发方式,即用灶c o s i i 内核开发u s b 固件驱动程序。在论文中u s b 驱动程序开发的理论基础上,利用d r i v e r s t u d i o 等开发工具开发了u s b 的w d m 驱动程序以及应用程序,完成应用程序通过驱动程序和u s b 设备通信的目标。 关键词:u s bw d m 驱动固件 a b s l f a c t a b s t r a c t us bi ss h o r t e n e df o 肌o fu n i v e r s a ls e r i a lb u s ,i th a st h ec h a r a c t e r i s t i c so f c o n v e n i e n c e ,h i g h s p e e dt r a n s m i s s i o na n dn e x i b l ec o n n e c t i o n 1 ti sn e c e s s a r yt oh a v e 舭d r i v e ro f 她u s bd e v i c et 。o p e f a t em eu s bd e v 至c e d r i v e r s t u d i og r e a t l yi m p r 0 v e s 龇e 整e i e n c yo fw d m 越v e rd e v e l o p m e n t 。髓ef e 鑫ll i m eo p e r a t e ds y s 铤懋e 鼠c i v e l y e n h a n c e sl l 撑t l s ef a c t o ro fc p u 勰dg r e a t l yp r e d i g e 链st h ed e s i g no fa p p l i c a t e ds y s t e m 1 ks u 场e c ts t u d y st h ew d md r i v e ra n dt l l e 玎n w a r ed r i v e ra b o u tu s b d e v i c e t h et h e s i sa n a l y z e st h eu s bp r o t o c o ls t e pb ys t e p ,s u c ha st h es t r u c t u r eo f u s b ,t h ee n u m e r a t i o np r o c e s so fu s b ,a 1 1 ds oo n a c c o r d i n gt om et h e 、v a yo f p r o g r 猢i n gw d md r i v e r ,t h et h e s i se x p l a i n sm ef u n d 锄e n to ft h e e n t r a n c e p r o g r 锄,t h ep n p ,t h ew m i a n dm ep o 、v e rm a n a g e m e n ta n dt h er e a l i z e dp r o c e s so f t h eu s bw d m d r i v e r b yc o m p a r i n gt w om e t h o d so fp r o g r a m m i n g 矗n n w a r ed r i v e r , n a 擞e l y ,t h ef f o n ta n db a c kp l 越f o 渤p r o g r a 珏凇i n gw a ya n dt h ep r o g r 粼i n gw a yb y u s i 琏gp c o s l lk e 臻e l ,t l 狞t | 羚s i ss e l e c l sl 羚w a y 醢s i n g 玲c o s l lk e m e l 确i e hi s m o 糟e f j 融e t i v e l y o nl h ef o 髓d a t i o 娃o ft h eu s b 出i v e rt h e o t h et h e s i sd e v e l o p 甜 t h ew d md r i v e ra l l dt h ea p p l i c a t i o no fu s b b yu s i n gt h ed r i v e r s t u d i oa n dc o m p l e t e d t h ec o n l m u n i c a t i o nb e t w e e nt h eh o s ta n dt h ed e v i c e k e y w o r d :u s bw d md r i v e rf i r m w a r e 创新性声明 本入声鞠蹰莹交鹩论文趋我个人在导耀指导下进行的研究工作及取褥的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其 也人舞经发表或撰写过的研究成果;也不包括为获褥疆安电子科技大学和 其他教育机构的学镶证书丽使用过的毒孝料。与我一同工作麓同志对本研究所作的 任何贡献均已在论文中作了睨确的说明并表示了谢意。 申请学位论文与资料羲肖不实之处,本久承担一切相关责镊。 本人签名:幽 关于论文使用授权的说明 本人完全了解暇安电子科技大学的有关保留和使用学位论文的靓定,即:研 究生在校攻读学谴期阕论文工作的知识产权单位属西安电子科技大学。本入保涯 毕业离校后,发表论文或使用论文工作成果时署名单位仍然为话安电子科技大学。 学校有权保留送交论文翁复印侔,允许查阅和偌阅论文;学校可以公布论文兹全 部或部分内容,可以允许采爝影印、缩印和其他复制手段保存论文。( 保密论文在 孵密后遵守此觏定) 本学健论文璃予保密在一年解密焉适用本授权书。 本人签名: 导师签名: 隅哩厶堑 醚瓤幽z 厶丛:” 第一章绪论 第一章绪论 信息技术革命是当今时代的主要特征,p c 机在信息技术革会中起到了推波助 澜的作用。p c 外设的日益丰富,扩展了p c 的应用范围,使p c 在军事、工业生 产、教学科研和日常生活中的应用日益普及和深入。但p c 本身只提供高性能的 运算处理等方面的基本功能,当我们将一台p c 应用于某个具体的实际需要时, 往往西晒着对p c 基本功能进行扩展翡难题。在对p c 进行功能扩展时,原则上每 个钤设努须插在一个接黧上,舞采所霄熬接口均被魇上了就只麓通过添翻插卡来 追加接黧了,当然可增搔卡的数量还受到计算撬上撬槽个数的限剃,多功能卡鹃 出现和有些厂家针对囊己的产品露开发的专瘸接叠在很大程度上是势了嫠决多种 设备连接到主机及为提高传输速率恧出现的解决方案。舅前采用添加捶卡的方法 对p c 进行功能扩展时要求必须对计算机很熟悉,而且由予p c 接豳资源有限旦需 要对接潮卡的硬件资源( 地址、内存、中断、d m a ) 进行合理的配置,因此扩 展难度较大。 为了解决功能扩展接瑟插卡最头痛的配置问题,九十年代中期摧溺了即插即 用接疆卡标准p c i 和l s ap 艘) ,塞瑟擂即爝b 0 s 和瑟攒露用操作系统完成对接 口卡资源的盘动配置,以使功麓扩展接盈卡蕊使用变得摆对简单方篌。毽功麓扩 展接口卡仍存在以下闷题:第,接盟卡的配置必须停桃,并需打开p e 枫籍进 行安装和拆卸,这个过程仍需要一定层次的技术支持,即拯即用技术的采用只是 降低了功能扩展卡的技术需要程度,这对p c 这样广泛应用的工具丽言仍显不足; 第二,接口插卡设备驱动程序的安装、调试甚至正常运行的过程仍需要各种技术 支持,特别是接翻插卡作为一种硬件设备插入p c 后,总要占用p c 的各种硬件资 源,霹撬帮惑算法虽能解决绝大多数的瓷源配置,德不能傈证i o o 的解决,因 此,其安装和配嚣过程仍需要久工干预。焉当扩震撬卡较多时,常会爨瑶一块或 多块捶卡因无法合理配置焉不能歪常王作的情猛,严重时可导致系统臻溃;第三, 接口拯卡的质量藏低、兼容性和标准性的程度以及驱动软件的可靠性蛊接影响计 算机的寿命和系统的稳定性及可靠性;第匹,对像笔记本电脑之类的小体积p c 很难用接口插卡进行扩展:第五,p c 插槽中的各种接口卡受到p c 内郝强的射频 辐射干扰,使其性能受到很大影响,除非接口卡是全数字化的。 为了解决以主这些闯题,1 9 9 4 年i n t e i 、c o m p a q 、d i g i t a l 、i b m 、m i c r o s o 代、 套匿c 、n o 越1 髓l e e o 擞这些世界上著名韵计算机公司和通信公司成立了u s b 论坛, 并予1 9 9 4 年l l 胃l l 尽推出了u s 转0 。7 规范,于1 9 9 4 1 2 ,3 0 推出了u s 8 0 8 规范, 于1 9 9 5 。碡+ 1 3 推出了u s b 9 9 嫂范,1 9 9 5 。8 ;2 5 推枣了u s b 0 。斡规范,1 9 蝤。l l 。3 推 2 一 u s b 系统驱动及豳件搿发 潞了u s 嚣1 o 规范,1 9 9 8 8 2 3 摊出了u s b l 1 规范。1 9 9 7 年开始有真正符合u s b 技术标准的外设出现。u s j l l l 1 是霉前推出的支持u s b 的计算枧与外设上普遍采 惩的标准。在1 9 9 9 年2 嚣2 3 曰蕊l 魏t e l 开发者论坛大会上,奔绍了u s 嚣2 o 规范。 在m i c r o s o r 公司与i n t e l 公司推出的p c 9 9 的硬件体系规范和p c 9 9 的软件规范 都包含对u s b 翳支持。a 翔l e 公司的m a e0 s 及m i e s o 袅公司的w i 羚d o w s 冁、 w i n d o w sc e 和w i n d o w s 2 0 0 0 中均全面支持u s b 。 u s b 技术的应用是计算机舛设连接技术的重大变革。露翦在统一的u s b 接 瑟上实现了中低速外设的通用连接,例如键盘、鼠标、游戏杆、显示器、数字音 箱及m o d e m 等。u s b l 0 的数撼传输率达到了1 2 m b 淤,u s b 2 。o 达到了4 8 0 m b p s 。 匿此u s 转可瘸子更多的薪型外设,并可很好地满足视频图象的实时传输要求。 u s b 采用差分传输方式,具有很好的传输可靠性。设备的控制、管理和信怠交换 完全是由系统软件按u s b 协议进行传输,因此不存在设备占焉资源滓突丽导致系 统的紊乱问题。u s b 技术具有开放性,是非赢利性的规范,得到了广泛的工业支 持。丽对于p c 枫用户来说,u s b 实现了真正的即插即用和热插拔,当用户需要 将外设连接到p c 上对其进行功能扩展时,只需要拿起外设的接线将它插入到p c 机懿u s b 接瑟上就可以了,剩余的一切都由操作系统来处理。再多的外设( 只要 不超过i 2 7 个) 通过u s 嚣h u b 就可以实现和计算机的相连。因此,u s b 技术的提 出是基于采用通焉连接技术实现外设的简单快速连接,达劐方便用户、降低成本、 扩展p c 瓿连接外设范黧的蠹的,使p c 枫翡功熊扩震变的菲常简单方便,并能最 大限度地降低用户对计算机技术的需求,使所有的外设均成为“傻瓜”式设备。对 于工业应用来说,u s b 本身就是一种工业级总线标准,其可靠性等级可以很好熬 满足工业现场测量控制系统的要求。另外,由于其所具有的外挂式特点,它可很 好地满足工业测量的环境要求、可容易地实现完全的光电隔离、测量系统的改变 和扩展都很容易和方便。 第二章u s b 驱动设计方式分析 第三章u s b 驱动设计方式分析 u s b 是英文“u n i v e r s a ls e r i a lb u s 的缩写,即通用串行总线,它是应用在微 机领域的新型接口技术。u s b 需要主机硬件、操作系统和外部设备三个方面的支 持才能工作。要通过u s b 接口最终操作硬件,不可避免地要和驱动程序打交道, 在d o s 下对硬件进行访问是很容易的事,因为d o s 程序可以不受限制的访问系 统中的任何资源。蔼在w ;n d o w s 环境下,由于用户态程序运行在用户态( 瓢n 9 3 ) , 它不能直接访问硬件资源,只有通过运行在内核态( 魁n 妁) 的驱动程序才能实现对 硬件的访问。因此,不可避免的要涉及到设备驱动程序。 设备驱动程序是硬件连接到计算机的软件接口,它是操作系统的一个信任部 分,用户应用程序以一种规范的方式访问硬件,而不必考虑硬件的详细原理。驱 动程序使一个物理设备以一个或多个逻辑设备的特征呈现给用户程序,例如:一个 物理硬盘可以看出两个逻辑盘c :和d :。这样极大地简化了用户态程序的工作和可 理解性。在w i n d o w s 下,驱动程序总是使设备以文件的方式呈现给应用程序,可 以和用打开文件相似的方式打开设备的一个旬柄,然后应用程序可以在设备旬柄 关闭之前向驱动程序发出读写请求。本章将从u s b 协议开始,逐步介绍u s b 的 w d m 驱动程序设计思想和u s b 的固件驱动程序设计思想。 2 王u s 8 王。王协议简介 2 1 1u s b 基本系统构成 u s 8 总线出四个主要部分构成:主机和设备,物理均成,逻辑构成以及客声 软件与设备功能接口的关系。图2 1 为u s b 主机设备间的通信模型, u s b 物理设备( u s bp h y s i c a ld e v i c e ) :u s b 上的一种硬件,可运行一些用户程 序。 客户软件( c l i e n ts o r w a r e ) :为一个特定的u s b 设备而在主机上运行的软件。这 种软件由u s b 设备的提供者提供,或由操作系统提供。 u s b 系统软件( u s bs y s t e ms o 酗淄e ) :此软件用于在特定的搡作系统中支持 u s l 3 i ,它由操作系统提供。与具体的u s b 设备无关,也独立于客户软件。 u s b 主机控制器( u s b 醚。或c o 燃o l l 嘲:总线在主机方蟊的接蜀,是软件和硬件 的总和。用予支持u s b 设备通过u s 8 连到主机上。 u s h 系统驱动及m 什开发 h 蚺柱j物卵啦符 ll 7 。一 1 r i一一 “t “t i 样矧 t1 - 缓1 : ! 【 。:_ 呵 。m 。 。犷。一 廿 i n 叭_ _ z 一o i o 0 。_ 五j m ,。,。! 卜j 。 t 。 7 1 i i , 【、l ! i f l l【、b 。,i ? 、i ,汀一。 主机控制器的驱动程序( h c d ) 它位于u s b 主机控制器与u s b 系统软件之间。 主机控制器可以有系列不司的实现,而系统软件独立于任何个具体实现。 一 一 莓; _ ;1 1 _ 黜 蜷三 第二章u s 8 驱动设计方式分析 个驱动程序可以支持不同的控制器,而不必特别了解这个具体的控制器。一个 u s b 控制器的实现者必须提供一个支持它自己的控制器的主机控制器驱动器 ( 壬 c d ) 实现。 u s b 驱动程序( u s 转d ) :u s b 系统软件与客户软件之闻的接口,提供给客户软 件一些方便的使照u s b 设备的功能。 一个u s b 逻辑设备对u s b 系统来说就是一个端点集合。端点可以根据它们 实现的接口来分类。u s b 系统软件通过一个缺省的控制通道来管理设备。而客户 软件用通道束管理接口。通道束的一端为端点,一端为缓冲区。客户软件要求通 信数据在主机上的一个缓冲和u s b 设备上的一个端点之间进行。主机控制器或 u s b 设备( 取决予数据传送方向) 将数据打包后在u s b 上传。由主机控制器( h c ) 协调何时用总线访问在u s b 上传递数据。 2 1 。2u s b 总线的数据传输方式 u s b 总线有以下4 种数据传输方式; ( 1 ) 控制传输:主要用于主机向设备发送命令以及设备返回状态给主机。与端 点0 相对应。 ( 2 ) 中断传输:支持偶然少量数据透信但是服务时间受限刳的设备。如:鼠标, 键盘等。 ( 3 ) 批量传输:用于大量数据传输,无固定的周期,速率,也不占用带宽,但 是保证传输的可靠性,出错时会要求发送方重发。 ( 4 ) 同步传输:以一个恒定的速率传输。此传输要求发送和接受方传输速率匹 配,否则会造成数据丢失。 2 。羔。3u s b 设备的枚举过程 ( 1 ) 设备连接:u s b 设备接入u s b 总线。 ( 2 ) 设备上电:u s b 设备可使用u s b 总线供电也可使用外部电源。 ( 3 ) 主机检测到设备,发出复位。 ( 4 ) 设备默认状态:设备受到复位信号后才对总线操作做出响应并且使用默认 地址( o o h ) 对其进行寻址。 s ) 地址分配:主机收到设备对默认地址的嗡应蜃分配一个空阑地址给设备。 ( 6 ) 读取u s b 设备描述符。 6 一 u s b 系统驱动及固件开发 ( 7 ) 配置设备:主机根据读取的u s b 设备描述符配置设备。 ( 8 ) 挂起:为了节省电源,总线保持空闲状态超过3 m s 以后,设备驱动程序进 入挂起状态。枚举过程中设备不一定要进入此状态。 2 1 4u s b 的标准请求 u s b 的标准请求是焉来完成u s b 设备枚举的命令,u s 转设备必须对标准设 备请求做出响应,不论设备是否已经被分配了一个默认地址或者设备正在被配置。 所有的标准设备请求都是使用默认管道传输的。 u s b 的标准设餐请求由8 个字节组成,如表2 1 所示。 u s b 的标准设备请求有1 1 个命令,对应的代码和说裴如表2 2 所示。 偏移傻字段名称字段长度字段取值说明 o设备请求l 位图请求特性: 类型d 7 :数据传输方向 o :主机到设备 l :设备到主机 d 6 5 :类型 o :标准 l :类型 2 :厂商 3 :保留 d 4 0 :接受方 0 :设备 l :接口 2 :端点 3 :其他 4 3 l :保留 l 设备请求 l 数值u s b 的设备请求 2 值 2 值根据不同的请求以字节为单位 定义 4 索引 2 字段编号根据不同的请求以字节为单位 索引定义 6 长度 2计数 如果传输一组数据,指出要传 输的字节数 表2 。l u s b 设备请求格式 第二章u s 8 驱动设计方式分毫斥 7 一 请求类型 设备请求值( 2 b )索弓| ( 2 b )长度 数据 l 0 0 00 0 0 0 b 设备设备、接 1 0 0 00 0 0 l bg e ts t a t i l s ( o o h )o 接口 2 口或端点 1 0 0 00 0 1 0 b 端点状态 1 0 0 00 0 0 0 b特性选 设备 l o o o0 0 0 l bc l e a rf e a l t 黼( o l h )择符 接口 o 无 l o o oo o l o b 端点 l o o o0 0 0 0 bs o tf e a t u r e ( 0 3 )特性选 设备 l o o oo o o l b择符 接口 o 无 l o o o0 0 1 0 b 端点 0 0 0 00 0 0 0 bs e ta d d r e s s ( 0 5 h ) 设备地 oo 无 址 l o o o0 0 0 0 bg e td e s c r i p t o r ( 0 6 h )描述符描述符 的类型o 或语言长度描述符 和索弓| l d 0 0 0 00 0 0 0 bs e td e s c r i p t o r ( 0 7 h )描述符o 或语言描述符 的类型 i d 长度描述符 和索雩| 1 0 0 00 0 0 0 bg e tc o n 6 9 u r a t i o n ( 0 8 h )ool 配置值 o o o o0 0 0 0 bs e tc o n 蠢g u 斌i o n ( 0 9 ) 配置值 oo 无 1 0 0 00 0 0 0 bg e ti n t e r f a c e ( 0 a h )o 接口 l 可选的接 口 o o o oo o o l bs e ti n t e f 蠡k e ( o b 哟可选设 接弱o无 置 1 0 0 0o o l 0 b s y n c hf r 锄e ( 0 c h ) o 端点 2 帧标号 2 1 5u s b 设备的描述符 表2 2 u s b 标准设备请求 标准u s b 设备有5 种u s b 描述符,分别为设备描述符、配鼹描述符、接口 描述符、端点描述符和字符串描述符。u s b 描述符是通过g e td e s c r i p t o r 来读取。 设备描述符是说骧设备的通用信息,一个设备只有一个设备描述符:配置描述符 定义了设备的配置信息;接口描述符说骥了接口所提供的配置;端点描述符包括 了端点的类型,大小等信息,u s b 的每一个端点都有自己的信息;字符串描述符 是可选的。描述符的关系如图2 2 所示, 8 u s b 系统驱动及固伴舞发 图2 。2 描述符的树状结构 同一个设备可以有几种不同的配置:一个配置结构中,可以知道设备有多少 接嗣;设备中功能相关或相近的一组端点的集合构成了一个接口;设备中可以直 接进行l o 数据流操作的基本单位是端点,端点是单向的,如果要进行双向i o 操 作,必须至少有两个端点。 2 2 1 五层模型 2 2u s b 的w d m 驱动设计思想 ( 1 ) 用户应用程序:用户编写的可直接执行的e x e 程序。 ( 2 ) l o 管理层:由w i n d o w s 管理,负责用户应用程序和驱动程序之间的数据 交换,通过i r p 完成。 ( 3 ) 驱动程序:即需要编写的u s b 的w d m 驱动程序。在驱动程序中,各部分 都是通过l 触来交换数据的。 ( 4 ) h a l ( 硬件抽象层) :w i n d o w s 管理,提供了把同一个驱动程序解释到不 同平台的功能。 ( 5 ) 硬件。 2 2 2 设计思想 在驱动程序中,每个设备都被看成一些设备对象( d e v i e eo 巧e e t ) 。这些设备 对象根据一定的规则组成设备对象堆栈,即驱动程序堆栈。处于最底层的是物理 第三耄u s 8 驱动程寒戆设计与实现 设备对象( p d o ) ,一般由总线生成,驱动程序到达这里时,总线按照标准执行一 些动作,即可完成对设备物理上的操作。一个设备只能有一个p d o ,但是可以有 若予个其缝d 0 。功麓设备对象( 硒0 ) 是盘所编写的驱动程序生成的,负责从 逻辑上操作设备。其匏戆层次设备对象( f i l 瓣d 0 ) 可戳处于f d o 的上面或者下 面,由另外一些驱动程序生成,或者其健系统组件生成,可以记录一些设备扮信 息,但是f i l t e r d o 不是必须的。 由于驱动程序的这种层次结构,我们在编写驱动程序时不露要考虑嚏存分配、 i o 端口配置、d m a 申请等。w i l l d o w s 将资源申请全部由总线自动完成,编写驱 动程序只需要考虑控制设备本身,即只要编写f d 0 部分。图2 3 为个i r p 的流 程。 擎 一 图2 ,3l r p 的流程 一个设备对应了一个设备对象堆栈,每个设备对象对应了驱动程序可以看成 一个个驱动程序堆栈。当一个i r p 从i o 管理器上发下来时,i o 管理器根据堆 栈韵大小分配一个i o 堆栈地址数组。苁堆栈的最顶端经过每层驱动程序的处理, 到达最底层的总线驱动,然后完成实际鹃设备操作。在这个过程中,每个裂动都 可以用b g 醐e u 玳嫩l 攀娆糙鼓忒戳i 鼹来获取爨己对应的1 0 堆栈缝垃。每个驱动程 序都可以设定网调例程,凰调例程的执行顺序与堆栈顺序槌反,从最底层熬殛调 例程开始,然后逐个向上。 2 3u s b 固件驱动编程思想 固体设计麴麓掾是使露佟在u s 鹜上达到最大酶传输速率。本论文以 p d l u s b d l 2 为例子,会绍一下匿件编程的两种方式。 2 3 1 前后台方式的编程思想 p u s b 蚤1 2 是一款带有并行总线和局部d m a 传输能力的高速u s b 接翻 u s 8 系统驱动及尉件开发 器件固件设计的目标就是使p d 砌s b d l 2 在u s b 上达到最大的传输速率。外围 设备,例如:打印机、扫描仪、外部的海量存储器和数码相机都可使用p d i u s b d l 2 在u s b 上传输数据。这些设备的c p u 要忙予处理许多设备控制和数据以及图像 处理等任务。p d l u s b d l 2 的固件设计成完全的中断驱动,当c p u 处理前台任务 时u s b 的传输可在后台进行。这就确保了最佳的传输速率和更好的软件结构,同 时简化了编程和调试。 后台i s r ( 中断服务程序) 和前台主程序循环之间的数据交换通过事件标志 和数据缓冲区来实现。例如:p d i u s b d l 2 的批量输出端点可使用循环的数据缓 冲区。当p d s b d l 2 从u s b 收到一个数据包,那么就对c p u 产生一个中断请 求,c p u 立即响应中断。在l s r 中,固件将数据包从p d 搿s b d l 2 内部缓冲区移 到循环数据缓冲区并在随后清零p d 淞s b d l 2 的内部缓冲区以使麓接收新的数据 包。c p u 可以继续它当前的前台任务,直到完成,例如打印当前页。然属返回到 主循环检查循环缓冲区内是否有新的数据并开始其它的前台任务。如图2 4 所示。 图2 4 前后台工作原理 由于这种结构,主循环不关心数据是来自u s b 、串口还是并口。它只检查循 环缓冲区内需要处理的新数据。这样主循环程序专注于数据的处理,而i s r 能够 以最大可能的速度进行数据的传输。 第二章u s 转鹱动设计方式分褥 f 主循环:发送u s b 请求、处理u s b 事件和用户功能处理等 j l 1rr 中断虢务程| l 囊羹设备请求l 三商请求处 廖 l : , 三土 p d l u s 8 d 1 2 愈令接辽 : 硬件提取屡 圈2 。5 前后台方式驱动结构示意图 相似的,控制端点在数据包处理时采用了同样的概念。l s r 接收和保存数据 缓冲区中的控制传输并设置相应的标志寄存器。主循环向协议处理程序发出请求, 由于所有的标准器件级别和厂商请求都是在协议处理程序中进行处理,i s r 得以 保持它豹效率。而且一量增加新的请求,只需要在协议层进行修改。 蓠震台方式的驱动结构设计如图2 5 所示。 各屡的宠成的功麓如下: ( 1 ) 硬件提取屡:对单片枧的蹬、数据总线等硬件接爨进行操作。 ( 2 ) p d l u s b d l 2 命令接叠:对p d l u s b d l 2 器件进行操作的模块子程孝集。 ( 3 ) 中断服务程序:当p d i u s b d l 2 囱单片机发出中断请求时,读取p d i u s b d l 2 的中断传输来的数据,并设定事件标志和s e t u p 包数据缓冲区传输绘主循环程序。 ( 4 ) 标准设备请求处理:对u s b 的标准设备请求进行处理。 ( 5 ) 厂商请求处理:对用户添加的厂商请求迸行处理。 ( s ) 主循环:发送u s b 请求、处理u s b 事件和用户功能处理等。 王s r 与翦台主循环通过事 孛标志和s e 瓣p 雹数据缓冲区进行通信。 2 3 。2 在壮c o s i i 内核基础上的编程思想 “c 幻s 1 i 嵌入式实时操作系统是j e a n j l a b r o s e 先生开发的个完整的可移 植,萄讫,裁剪的抢先式实时多任务内核。可以应用在从8 位到6 4 位的微处理器 主,曩翦已经在超过碡0 种不弱粲捣麴徽处理器上运行。在应用这个操作系统时, 罴声逶常需要叁邑编写基于心0 s - l ;能终曩器譬# 驱动程穿,以便使外国器件能在 操作系统的协调下更好的为用户任务服务。 1 2 _ 一 u s b 系统驱动及固件开发 1 c o s i i 嵌入式实时操作系统的特点: ( 1 ) 源码开放。 ( 2 ) 可移植性( p o n a b l e ) :p c o s i i 源码绝大部分是用移植性很强的a n s l c 写 的,与处理器相关的部分是用汇编语言写的。“c 0 s i i 可以移植到许许多多微处 理器上,条件是:该微处理器具有堆栈指针,具有c p u 内部寄存器入栈、出栈指 令。另外使用的c 编译器必须支持内嵌汇编( i n l i n e a s e m b l y ) ,或者该c 语言可扩 展和可链接汇编模块,使得关中断和开中断能在c 语言程序中实现“c o s i i 可 以在绝大多数8 位、1 6 位、3 2 位以至6 4 位微处理器、微控制器及数字信号处理 器( d s p ) 上运行。 ( 3 ) 可固化( r o m a b l e ) :“c o s i i 是为嵌入式应用而设计的,也就是说只要具 备合适的系列软件工具( c 编译、汇编、链接及下载固化) ,实际上就可以将 “c o s i i 嵌入到产品中作为产品的一部分 ( 4 ) 可裁剪( s c a l a b l e ) :可以只使用c o s i i 中应用程序需要的系统服务可剥夺 性( p r e m p t i v e ) p c o s i i 是完全可剥夺型的实时内核,即肛c o s - i i 总是运行就绪 条件下优先级最高的任务。 ( 5 ) 多任务:“c o s i i 可以管理6 4 个任务,经过改造后的内核可以支持更多 的任务,赋予每个任务的优先级必须是不相同的,根据优先级进行调度。 ( 6 ) 可确定性:绝大多数“c o s 1 i 的函数调用和服务的执行时间具有可确定 性。也就是说,用户总是能知道“c o s i i 的函数调用与服务执行了多长时间。进 而可以说除了函数o s t i m e t i c k ( ) 和某些时间标志服务,“c o s i i 系统服务的执行 时间不依赖于用户应用程序任务数目的多少。 ( 7 ) 任务栈:每个任务都有自己单独的栈空间。 ( 8 ) 中断管理:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务 被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数 可达2 5 5 层。 ( 9 ) 稳定性和可靠性。 0 0 ) 系统服务:“c o s i i 提供很多系统服务。诸如信号量、互斥型信号量、事 件标志、消息邮箱、消息队列、块大小固定的内存的申请与释放及时间管理函数。 2 在uc 0 s i i 内核基础上的编程思想 为了使软件可移植性强、易维护,采用分层的办法编写p d i u s b d l 2 的驱动 程序。综合考虑u s b 协议、p d i u s b d l 2 硬件接线、uc 0 s i i 的结构来进行分层。 如图2 6 所示u s b 驱动分层结构。 第二章u s b 驱动设计方式分析 图2 6 u s b 驱动分层结构图 图2 6 中,双向线表示实时操作系统uc o s i i 与u s b 驱动程序之间的数 据交换。单向线表示上层软件对下层软件的调用。首先应该实现u s b 设备控制驱 动层,褥实现u s b 接口控制驱动层。在这两个实现的基础上就可以实现u s b 应 用层了。u s b 设备控制驱动层的主要任务是提供初始化p d i u s b d l 2 与为控制器 的连接配置、复位p d i u s b d l 2 ,建立p d l u s b d l 2 与为控制器的通信函数。u s b 接口控制驱动层主要任务是实现p d i u s b d l 2 的各种功能,如地址使能、读取端 点数据,把数据写入端点等。应用层实现p d i u s b d l 2 的所有功能。u s b 设备控 制驱动、u s b 接口控制驱动都在应用层的控制之中。协议层处理标准的u s b 请 求,还有特殊的厂商请求,例如d m a 等。u s b 主机通过标准的u s b 设备请求, 可设定和获取u s b 设备的有关信息,完成u s b 设备的枚举。 u s b 系统驱动及固件开发 第三章u s b 驱动程序的设计与实现 本章将从原理上介绍u s b 的w d m 驱动程序以及u s b 的固件驱动程序的开 发。开发u s b 的w d m 驱动程序可用d d k 直接开发,也可以用d r i v e r s t u d i o 开 发工具生成u s b 驱动的框架后开发。虽然d r i v e r w 6 r k s 所用的类库是在d d k 的 库函数基础上生成的,对于大多数计算机应用程序开发人员来说,时间和效率很 重要,从这方面看,d r i v e r s t u d i o 开发工具开发驱动程序有着无法比拟的优势。 u s b 的固件驱动程序的开发从前面可以看到,有前后台系统的方式和使用实时内 核操作系统的方式。从驱动程序和应用程序的工作效率上考虑,选择了使用实时 内核操作系统开发固件驱动程序以及应用程序,即在uc 0 s i i 内核的基础上开发 固件驱动程序以及应用程序。 3 。lu s b 的w d m 驱动编程的实现 本节先从原理上简单介绍了u s b 的w d m 驱动程序,包括u s bw d m 驱动程 序的入口例程和u s b 的w d m 驱动程序的各个功能函数的实现原理。最后简单介 绍了一下d r i v e r s t u d i o 开发工具开发u s b 的w d m 驱动程序的过程。 3 1 1u s b 驱动程序的入口例程 n t 驱动程序和一般的d o s w i n d o w sc 语言程序不一样,它没有m a i n ( ) 或者 w i 枷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 d ,( ) 除了做 一些必要的初始化工作外,还初始化一些d i s p a t c h 例程入口。 n t s t a t u s d r i v e r e n t r ) ,( r np d r i v e r b j e c td r i v e r o b j e c t , i np u n i c o d e s t r r n gr e g i s t r y p a t h ) l 为r e g i s n y p a m 申请内存并保存驱动程序的注册表键的路径 r e g i s t r ) ,p a t h = & g l o b a i s b u l k u s b i _ r e g i s t r y p a t h ; r e g i s t 妒劬- m a x i m 啪l e n g t h = r e g i s 仃y p a t h 一 l e n g t h 第三章u s 8 驱动程瘩簿设计与实现 望 + s i z e o 坟u n i c o d e j n u l l ) ; l 它g i s 时pa 1 臣p 乙e n g t h r 毒g i s t r y pa :t 孙 l e n g t h ; f e g i 泖p 赫一 b u 瓣f e x 鲇l o c a t e p o 研( p a g e d p o o l , 您菩髓猡p 嚣瞧m 双i 氆瓣l k 髓g 礞) ; i 寰! 糟垂s l 搿p a h 一 b u 蔬岭 。 n t s 【a _ m s s 1 泌忑u s i n s u f f i c l e n t j 迮s o u r c e s ; g o t od r i v e r e n t 吼e x i t ; r 矗e o p y u n i c o d e s t r n g ( & f e g i s t r ) ,p a t h ,r e g i s t r ) ,p a t h ) ;备份r e g i s t r y p a m l 榭s b 各个功链鍪数彘对液的函数实现 蹦v e 国b j e c p m 簿。舞豫e 髓o n 【l 耻l 鼻贬觚弱= 登u l 埘啦s 瓣躐; d f i v e f o 甥e e t 。 m 毒o r f 髓c t i o n 【l r 聊岱l o s e 】= b 珏l k u s b _ e l o s e ; d r i v e r o 场e c t d r i v e r u l l l o a d = 粉u l k u s b ) r i 垤f u 鼓l o a d ; d r i 、,e r o b j e c t 一 m a j o r f u n c t i o n 【i 壬渖- m j d e v i c e 鼻o n t r o l 】 b u l k u s bp r o c e s s l 0 c t l ; 隔v e 囝绣。整醚苟。露u 黼蛀o n f l r 蔓j w 融硼= 1 3 i 毽i 薮u s 每j 瞻i 钯; d 承e 喇e e p m 苟。热n 蘸o n 【l 船j j a 翻2b u l 蹦啦墨嘁 d r i v e f o 场e e t m 苟。一u n c l 埘l 灯j - s y s t e m o n t 购翻 b u l k u s h j r o c e s s s y s c o n t r o l i f p ; d r i v e r o b j e c t 。m 砌o r f u n c t i o n 【i 黜) - m l p o w e r 】= b u l k u s b p r o c e s s p o w e r l r p ; d r i v e r o b j e c t m 萄o r f u i l c t i o n 【i 陵m j _ p n p 】mb u l k u s b _ p r o c e s s p n p i 印; d r i v e r o b e c t d r i v e r e x t e n s i o n a d d d e v i c e 。b u l k u s b - a d d d e v i c e ; d i 瓣蓬鼗奶乙薹x 囊: 愆l 谢麓l 鹱s t a 孙s ; 由以上的d d v e 幽t 搿0 例程可以看出,此驱动支持的功能有: 1 6 u s b 系统驱动及固件开发 i r pm jc r e a t e i i 之pm jc l o s e i r pm js y s t e mc o n t r o l i r pm jp o w e r i r pm jp n p i r pm jd e v i c ec o n t r o l i r pm jr e a d i r pm jw 砌t e a d d d e v i c e d r i v e r u n l o a d 打开设备 关闭设备 w m i 功能实现 电源管理 即插即用功能 对硬件进行的操作控制 从设备获得数据,即读设备 向设备发送数据,即写设备 添加设备 硬件卸载 入口参数r e g i s t r ) ,p a m 指向一个被枚举的u n i c o d e 信息串,此u n i c o d e 信息串 指定了驱动程序的注册表键的路径。该指针在d r i v e r e n t r y ( ) 例程执行完以后便不再 有效,如果在驱动程序中要用到它,就需要备份该注册表项。d r i v e r e n t 拶( ) 例程中 的两个函数 d r i v e r o b j e c t - d r i v e r e x t e n s i o n - a d d d e v i c e = b u l k u s b d d d e v i c e ; d r i v e r o b je c t - d r i v e r u n l o a d = b u l k u s k d r i v e r u n l o a d ; 不在m a j o r f u n c t i o n 数组中,a d d d “i c e 为第一次安装硬件时使用,d r i v e r u n l o a d 为卸载硬件时使用。 1 驱动程序的初始化例程 b u l k u s b - a d d d e v i c e ( i np d r i v e i l o b j e c td r i v e r o b j e c t , i np d e v i c e o b j e c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能合约委托管理合同
- 2025版汽车维修场地租赁合同协议(含售后服务)
- 贵州省修文县2025年上半年事业单位公开遴选试题含答案分析
- 2025版建筑设备监造与施工质量监督合同
- 2025年度养老院清洁护理服务合同范本
- 2025版企业内部市场分析与服务承包合同
- 河北省故城县2025年上半年公开招聘村务工作者试题含答案分析
- 2025二手住宅买卖合同范本:山地别墅
- 2025年标准板材市场推广与销售代理合同
- 2025版公共设施消防栓系统更换与维护服务合同
- 2025贵州省专业技术人员继续教育公需科目考试题库(2025公需课课程)
- 一年级新生家长会课件(共25张课件)
- 高血压病患者的康复护理
- 重庆大学介绍课件
- 《李将军列传》教学教案及同步练习 教案教学设计
- GMP基础知识培训(新员工入职培训)课件
- Scala基础语法课件汇总整本书电子教案全套课件完整版ppt最新教学教程
- 基于Java的网上书城的设计与实现
- 酒店客房验收工程项目检查表(双床房、大床房、套房)
- 开音节闭音节中元音字母的发音规律练习
- 简单二人合伙协议书范本
评论
0/150
提交评论