VxWorks下的USB驱动程序原理与分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VxWorks下的USB驱动程序原理与分析

VxWorks下的USB驱动程序原理与分析 问题的提出 通用串行总线(USB)作为一种中高速的数据方式,已经很普遍地应用于外设与主机的通信中。VxWorks是当今十分流行的实时操作系统,在通信、国防、工业控制、医疗设备等嵌入式实时应用领域。很多VxWorks系统中都有USB设备,可是关于USB的驱动实现并没有相关的资料可以参考,给实际工作带来了难题。本文通过详细地分析VxWorks下的USB驱动栈,具体提出了其实际应用的方法,为USB在应用VxWorks的嵌入式系统的开发扫清了技术障碍。 2、VxWorks简介 VxWorks是WindRiver公司开发的具有工业领导地位的高性能实时操作系统(Real Tim Operation System,RTOS)内核,具有先进的网络功能。VxWorks的开放式结构和对工业标准的支持,使得开发人员易于设计高效的嵌入式系统,并可以很小的工作量移植到其它不同的处理器上。 作为一种先进的实时操作系统,它具有以下特点: 可裁剪微内核结构。 高效的任务管理: ① 多任务,具有256个优先级。 ② 具有优先级排队和循环调度。 ③ 快速的、确定性的上下文切换。 灵活的任务间通讯: ① 三种信号灯:二进制、计数、有优先级继承特性的互斥信号灯。 ② 消息队列。 ③ 套接字(Socket)。 ④ 共享内存。 ⑤ 信号(Signals) 微秒级的中断处理。 支持POSIX 1003.1b实时扩展标准。 支持多种物理介质及标准的、完整的TCPIP网络协议。 灵活的引导方式。支持从ROM、flash、本地盘(软盘或硬盘)或网络引导。 支持多处理器并行处理。 快速灵活的l/O系统。 支持MS-DOS和RT-11文件系统。 支持本地盘,flash,CD-ROM 的使用。 完全符合ANSI C标准。 多个系统调用。 3、USB驱动程序的结构概述 图1提供了一个USB主驱动栈结构的简单概括。图2显示了USB主驱动栈的各模块之间的功能联系。 在栈的最底部是USB主控制器(USB HC, 即USB Host Controller), 这是主系统中控制每一个USB设备的硬件部分。 目前,市场上主要有两大类USB主控制器,一种是支持由ime1公司最先提出的通用主控制器接口(Universal Host Controller Interface,简称UHCI),另一种是支持由微软、康柏和国家半导体公司联合设计提出的开放主控制器接口(Open Host Controller Interface,简称OHCI)。硬件厂商一般根据这两个规范设计他们的USB主控制器。 对于每一类型的主控制器都有一个与硬件独立的USB主控制器驱动(Host Controller Driver,简称HCD)。WindRiver提供了两个驱动:usbHcdUhciLib (UHCI 主控制器库)和usbHedOheiLib (OHCI主控制器库)。USB主驱动(USB host driver,简称USBD)和HCD之间的接口允许一个或超过一个的底层主控制器。而且,WindRiver的USBD能够同时连接多个USB HCD。这样的设计特点可以使开发者建立复杂的USB系统。 USBD是在HCD之上的与硬件独立的模块。USBD管理每一个与主机相连的USB设备, 向更高层次提供了可与USB设备通信的路径。它还负责自动处理USB电力管理以及USB带宽管理。而且,USBD还管理USB hub,Hub功能是一个驱动能否对USB正确操作的评价之一。因此WindRiver的USBD设计者要使USBD透明地处理hub的功能。这意味着,USBD 还能处理USB hub和设备的动态插拔。 USB Client模块在USB主驱动栈的顶端。USB类驱动(USB Class Driver)是Client模块的典型例子。USB类驱动负责管理连接到USB上的不同类型的设备; 它们依靠USBD来提供与每个设备的通信路径。USB client模块的其他例子就是那些利用USBD与USB设备通信的应用程序。 4、 USBD驱动详解 这一部分将要描述USBD(USB Host Driver)的典型应用。例如初始化,client注册,动态连接注册,设备配置,数据传输,同时还探讨了USBD内部设计的关键特性。这部分是VxWorks下USB驱动的核心。 4.1 初始化USBD:分为两步 (1)必须至少调用一次函数usbdInitialize()。在一个给定的系统中,usbdlnifialize()初始化内部USBD数据结构,并依次调用其它USB驱动栈模块的入口。usbdinitialize()可以在启动时调用一次,也可以对每一个设备各调用一次。USBD 自己记录了

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档