USB Driver的结构
赶个时髦,学习一下USB驱动
USB驱动结构是啥样的?
手里面的BSP好像把MDD和PDD build成了一个Dll,为啥呢?
另外USB Host Controller中的OHCI和UHCI啥差别呀?
还有USB Driver中的SCSI啥玩意儿?
参与就有分,讨论一下,^_^,系统只能挂100分,等给分的时候再加
[解决办法]
你的什么BSP啊?把MDD和PDD build成了一个Dll
[解决办法]
如果是自己写个简单的USB驱动话就不需要那么复杂了
[解决办法]
为了实现USB主机功能的统一,提高系统的可靠性与可移植性,上游芯片生产厂家在确定USB标准的同时,也确定了相应的主机规范。现在用得比较广泛的有三种,其中的用于USB2.0高速设备的EHCI (Enhanced Host Control Interface增强主机控制接口)规范是INTEL用于USB2.0高速主机的。而同是INTEL推出的UHCI(Universal Host Control Interface 通用主机)与前Compaq 、Microsoft等推出的OHCI (Open Host Control Interface开放主机控制接口)可用于全速与低速USB系统中,硬件的要求与系统性能、软件复杂的要求相对较低,也能够满足大部分的具有USB接口嵌入式系统的要求。而在UHCI与OHCI的对比中,UHCI对硬件的要求相对较少,但对系统的处理能力与软件的开发要求相对要高(PC机就较多地采用了UHCI);OHCI则把较多的功能定义在硬件中,软件需要处理的内容就相对容易,对系统的处理能力和系统资源的要求就低。因此,在嵌入式的USB HOST功能中,较多地选用了遵循OHCI的规范的硬件,从而简化了系统的设计。
[解决办法]
" 首先,USB分为主设备和从设备,在CE上分别较USB Host和USB Function。而在这两端,又都分别有两种驱动,一种是Controller驱动,就是硬件的控制器驱动程序,例如OHCI,UHCI啥的。另外一种是Client驱动,就是上层的具体功能驱动,例如USB鼠标,USB摄像头。所以,其实在CE上跟USB相关的驱动至少有四类:Host Controller, Host Client, Function Controller, Function Client。不知道您说的是哪一类。
这四类驱动在MSDN上都有文档介绍,不过比较含糊不清,倒是public目录下都提供了完整的源代码。比较有参考价值。 "
[解决办法]
研华的BSP就是不给源码,尽弄DLL.
[解决办法]
粘贴一个连接,是有关HOST CONTROL INTERFACE标准的简单介绍,起始上面huabinsir也提到了
http://blog.sina.com.cn/s/blog_4c52e9e20100d1qu.html
[解决办法]
好
[解决办法]
看看了!
[解决办法]
应用程序
| |
| |
设备类驱动 设备自定义驱动
| |
| |
根集线器驱动程序 ---------usbhub.sys
|
|
USB驱动程序 ---------usbd.sys
|
|
主机控制器驱动程序 --------openhci.sys或uhci.sys
|
|
PCI枚举
|
|
USB总线
[解决办法]
问题4:
SCSI是一种转接卡,SCSI(Small Computer System Interface,小型计算机系统接口)是一种连结主机和外围设备的接口,支持包括磁盘驱动器、磁带机、光驱、扫描仪在内的多种设备。它由SCSI控制器进行数据操作,SCSI控制器相当于一块小型CPU,有自己的命令集和缓存。目前存储设备的接口有五大类:IDE、SCSI、USB,并行口,串口,其中,最主要的就是IDE,usb,SCSI。IDE(Integrated Drive Electronics,电子集成驱动器)凭着其高速的传输和平常的价格,受到普通用户的欢迎,而usb设备大有后来者居上之势,至于SCSI (Small Computer System Interface,小型计算机系统接口),速度、性能和稳定性都比IDE要好,一向被认为是昂贵且高不可攀的存储设备,不仅本身价位高于IDE硬盘很多,而且必须另外选择SCSI接口卡,主要面向服务器和工作站市场,也就是本文要介绍的对象。
[解决办法]
学习了
[解决办法]
谢谢提供!学习了
[解决办法]
源码
[解决办法]
受教了
[解决办法]
dskjfasddddxxdsdd
[解决办法]
dsdddsssdd
[解决办法]
積分不夠下載資源了
[解决办法]
thank you very much
[解决办法]
yes i am,tks~~
[解决办法]
能否详细些
[解决办法]
好像网上有很多相关点子书籍,不是很难。
[解决办法]
学习!
[解决办法]
very nb!
[解决办法]
一点都不懂咯
[解决办法]
希望大家都好好学习,我们大家共同进步
[解决办法]
祝福你,一定会成为高手。。
[解决办法]
占个位, 学习!
[解决办法]
学习中
[解决办法]
太强了,我喜欢
[解决办法]
asdfsdfsdfsfsdsdsdf
[解决办法]
能否详细些?最好有具体的例子介绍。
[解决办法]
好啊
[解决办法]
学习
[解决办法]
hbiyrtrxctx
[解决办法]
学习下。
[解决办法]
长知识
[解决办法]
赶个时髦, 大家评论的好!!!
[解决办法]
学习
[解决办法]
值得学习
[解决办法]
study
[解决办法]
可以通过这样给我点积分么?我急用,谢谢了
[解决办法]
关注一下
[解决办法]
up
[解决办法]
驱动开发没有干过
[解决办法]
学习了,学习了。
[解决办法]
驱动开发
[解决办法]
好东西 ,还没弄过这方面的东西,正想在学习一下
[解决办法]
顶一下
[解决办法]
顶一下
[解决办法]
学习了 谢谢~
[解决办法]
USB 1.x(包括1.0,1.1):使用全速模式(FS:12Mb/s)和低速模式(LS:1.5Mb/s)。
例如鼠标、键盘就是低速设备运行,而打印机、扫描仪就使用全速设备模式运行存在12M的传输速度瓶颈.
USB 2.0将设备之间的数据传输速度增加到了480Mbps,快过USB 1.x的40倍,但是最初的USB2.0的速度只是定义为240Mbps,后通过努力,把速度提高到了480Mbps。
USB 2.0非常类似USB 1.x,但是拥有更高的带宽。USB 2.0可以使用原来USB定义中同样规格的线缆,接头的的规格也完全相同。而且新的符合USB 2.0规格的设备不会和USB 1.x设备在共同使用的时候发生任何冲突。现在已经开始出现USB 2.0规格的产品,包括8X4X32 CDRW和新的USB硬盘,新的VIA芯片组和INTEL、AMD、SIS、ALI都已经在第二季度的新产品中加入了对USB 2.0的支持。INTEL B-Setp的芯片组传闻将会有USB 2.0的支持,可是到了现在还没有样品出现,看样子只有到ICH3中才会加入USB 2.0的规格。大家必须注意的是,除了硬件上有特意的设计的兼容硬件,USB 2.0的产品就算设计为低速产品也不能在USB 1.X规格的接口上运行,相反USB 2.0接口是向下兼容的,可以完全应付各种USB 1.x的产品。
系统winxpsp2 主板865PE 装过主板驱动(INF) USB2.0驱动
Intel(R) 82801EB USB Universal Host Controller -24D2
Intel(R) 82801EB USB Universal Host Controller -24D4
Intel(R) 82801EB USB Universal Host Controller -24D7
Intel(R) 82801EB USB Universal Host Controller -24DE
Intel(R) 82801EB USB2 Enhanced Host Controller -24DD
USB 2.0 Root Hub
USB Root Hub
USB Root Hub
USB Root Hub
USB Root Hub
[解决办法]
xuexi
[解决办法]
学习了 不错不错
[解决办法]
不太懂,不过很不错,值得学习啊!
[解决办法]
ding
[解决办法]
应用程序
| |
| |
设备类驱动 设备自定义驱动
| |
| |
根集线器驱动程序 ---------usbhub.sys
|
|
USB驱动程序 ---------usbd.sys
|
|
主机控制器驱动程序 --------openhci.sys或uhci.sys
|
|
PCI枚举
|
|
USB总线
[解决办法]
UP
[解决办法]
nihao
挣点分
[解决办法]
路过,学习一把!
[解决办法]
学习学习
[解决办法]
我是新手 不怎么懂 但长见识了!!!谢谢各位大虾!
[解决办法]
MARK!
------解决方案--------------------
学习
[解决办法]
Thank You share
[解决办法]
ho
[解决办法]
dingdingding
[解决办法]
学习了,谢谢
[解决办法]
转一个帖
USB的结构与工作原理
1.1物理结构
USB的物理拓扑结构如图1所示。在USB2.0中,高速方式下Hub使全速和低速方式的信令环境独立出来,图2中显示了高速方式下Hub的作用。
通过使用集线器(Hub)扩展可外接多达127个外设。USB的电缆有四根线,两根传送的是5V的电源,另外的两根是数据线。功率不大的外围设备可以直接通过USB总线供电,而不必外接电源。USB总线最大可以提供5V 500mA电流,并支持节约能源的挂机和唤醒模式。
1.2 USB设备逻辑结构
USB的设备可以分成多个不同类型,同类型的设备可以拥有一些共同的行为特征和工作协议,这样可以使设备驱动程序的编写变得简单一些。USB Forum在USB类规范2中定义了USB的设备类型,比如音频、通信、HID、HUB等设备类。
每一个USB设备会有一个或者多个的逻辑连接点在里面每个连接点叫端点。在USB的规范中用4位地址标识端点地址,每个设备最多有16个端点。端点0都被用来传送配置和控制信息。在NS公司的USB接口芯片USBN96024中有7个端点。
管道实现了在主机的一个内存缓冲区和设备的端点之间的数据传输,连接端点0的叫做缺省管道。管道是具有多个特征的信道,如带宽分配,包大小,管道类别以及数据流向。管道有两种类型分别是流管道(stream pipe)和消息管道(messagepipe)。流管道传输的数据包的内容不具有USB要求的结构,它是单向传输的;流管道支持批量、等时和中断传输方式。而消息管道与流管道具有不同的行为。首先,由主机发请求给USB设备,然后在适当的方向上传输数据,最后是到达一个状态阶段。为了保证三个阶段的数据传输,消息管道定义了一个数据结构使命令可靠地被识别和传输。消息管道是双向的,它只支持控制传输方式。
对于同样性质的一组端点的组合叫做接口,如果一个设备包含不止一个接口就可以称之为复合设备(见图1)。
对于同样类型接口的组合可以称之为配置。但是每次只能有一个配置是可用的,而一旦该配置被激活,里面的接口和端点就都同时可以使用。主机从设备发过来的描述字中来判断用的是哪个配置哪个接口等等而这些描述字通常是在端点0中传送的。
1.3 USB通信分层模型
一台主机到设备的连接需要许多层与实体之间的相互作用。USB总线接口层提供了主机和设备之间的物理/信令/包的连接。在系统软件看来,USB设备层执行的是一般的USB操作。功能接口层提供和应用软件层相对应的附加功能。分层模型如图3所示,虽然逻辑上USB设备层和功能层各自与主机上的相应层通信,但物理上都是通过USB总线接口层实现数据传输的。
1.4 四种传输方式
USB提供了四种传输方式,以适应各种设备的需要。这四种传输方式分别是:
控制传输方式:控制传输是双向传输,数据量通常较小,主要用来进行查询、配置和给USB设备发送通用的命令。控制传输主要用在主计算机和USB外设中端点0之间。
等时传输方式:等时传输提供了确定的带宽和间隔时间。它被用于时间严格并具有较强容错性的流数据传输,或者用于要求恒定的数据传送率的即时应用中。例如进行语音业务传输时,使用等时传输方式是很好的选择。
中断传输方式:中断方式传送是单向的并且对于主机来说只有输入的方式。中断传输方式主要用于定时查询设备是否有中断数据要传送,该传输方式应用在少量的、分散的、不可预测的数据传输。键盘、游戏杆和鼠标就属于这一类型。
大量传输方式:主要应用在没有带宽和间隔时间要求的大量数据的传送和接收,它要求保证传输。打印机和扫描仪属于这种类型。
在开发USB设备时通过设置接口芯片中相应的寄存器使端点处于不同的工作方式。
1.5 USB通信协议
USB的物理协议规定了在总线上传输的数据格式,一个全速的数据帧有1500字节,而对于低速的帧有187字节。帧的作用是分配带宽给不同的数据传送方式。
在USB2.0中又增加了几种类型的包以满足高速传输的需要。其中data类型增加了DATA2和MDATA,handshake类型增加了NYET,special类型则增加了ERR,SPLIT,PING,Reserved。
事务是在主机和设备之间不连续地数据交换。一个事务通常由主机开始,一般分三个阶段,第一阶段发送token包,第二阶段发送是data包(可以向上也可以向下),在数据包传送完之后,就会由设备返回一个handshake包。
当客户端程序通过一个USB管道发送或接收数据时,它首先会调用Win32API,API会发送一个IRP到USB设备驱动程序。USB设备驱动程序的任务就是把客户端的请求通过一个管道发送到外设合适的端点。为了实现这个任务,USB设备驱动程序会递交请求给总线驱动程序,总线驱动程序可以把这些请求转变成事务,然后将这些事务组合成帧在总线上传输。
1.6 USB带宽分析举例
在USB1.1标准中将其有效的带宽分成帧,每帧通常是1ms长。但由于USB2.0的传输速率可高达480Mbps,因此在USB2.0增加了一种微帧,它只有原来帧的1/8,这使得在传输数据时使用更小的缓冲。在完成了系统的配置信息和连接之后,USB的主机就会对不同的端点和传输方式做一个统筹安排,用来适应它的带宽。对全速和低速的端点,系统为等时和中断方式的传输保留整个带宽的90%,即占每个帧时间的90%,剩下的就安排给控制方式传送数据。在USB2.0中,对于高速的端点,则为等时和中断方式的传输保留每个微帧的80%。
以等时传输为例,在某个配置中作为一个等时传输管道的端点,定义了它能传输的数据有效负载的长度。USB系统软件用这个长度限制去保证足够的总线时间使每帧的内容能容纳最多的数据有效负载。如果有足够的总线时间,配置才会建立。每个等时管道的数据有效负载可以是1,2,4,...,512,1023字节。
例如,当数据包最大有效负载为512个字节时,一个全速帧(1500字节)最多可以传输2个这样的包。除去协议开销的18个字节,剩余458个字节可以用于其他事务的传输。因此每帧有效字节数为2个包的字节即1024字节,因此最大带宽为1.024Mbyte/s,每个包的有效字节占整个帧的35%。同样可推算,数据有效负载长度为64、128或256时其最大带宽值最大,为1.28Mbyte/s。
在USB2.0高速工作方式下,每个等时管道的数据有效负载可以是1,2,4,...,2048,3072字节。当数据有效负载长度为1024时其最大带宽值最大,为5.7344Mbyte/s,每个包的有效字节占整个微帧的14%。
2 Windows USB驱动程序接口
USB的驱动程序和以往的直接跟硬件打交道的Win95的VxD(Virtual DeviceDriver)驱动程序不同,它属于WDM(Windows DriverModel)类型的,Win98、Win2000等操作系统均支持该类型的驱动程序。WDM首先定义了一个基本的核心驱动程序模型,处理所有类型的数据,使驱动程序模型的内核实现更加的固定。WDM驱动程序还是一种分层的程序结构,可以看做是WindowsNT驱动程序的改进,WDM驱动程序支持即插即用、电源管理和WMI(Windows ManagementInstrumentation)特性。Win98和Win2000提供了一系列的系统驱动程序,它们具有为许多标准类型设备服务所需的所有基本功能。
Windows提供了USB的系统类驱动程序,它处理USB上的所有底层通信,这样其他驱动程序就有了一个定义好的接口可以使用。USBHub.sys是USB集线器的驱动程序。USBD.sys是USB类驱动程序,它使用图4中UHCD.sys或OpenHCI.sys分别驱动两种类型的控制器UHCI(USB Host Controller Driver),OHCI(Open Host ControllerInterface)。当PCI枚举器发现USB主机控制器后,就会装入相关的驱动程序。
通常一些设备都需要开发者写一个核模式的驱动程序来使硬件正常工作。在核模式下驱动程序通过IRP(I/O Request Packet)来组织和操作一些由其他部分发过来的要求和命令。而IRP又是通过URB(USB Request Blocks)来实现的。但对于一些HID(Human Interface Device)的USB设备,象键盘、鼠标和游戏操纵杆之类的设备可以被操作系统自动识别并且支持,开发者不需要再另写驱动程序。
3 USB接口10M以太网卡的实现
3.1 选择器件
目前市场上USB的接口产品有两种,一种是集成了USB接口的单片机,另一种是不带单片机的USB接口芯片。由于前者需要专用的开发机故开发成本较高,本文将介绍一种使用廉价USB接口芯片USBN9602(NS公司)加高速的51单片机实现10M以太网卡的方案。
在做设计之前一定要计算好外设所要求的带宽和USB的速度是否匹配。一个USB以太网卡应该包括USB通信接口(USBN9602)、8051单片机以及IEEE802.3的MAC层和物理层。USBN9602在全速工作方式下可以达到12Mbit/s,采用USBN9602基本可以满足10M以太网的带宽需求。为达到较高的传输速率,USBN9602还应该用DMA方式与单片机通信。电路框图如图5所示。
3.2 设计单片机控制程序
对于单片机控制程序,目前没有任何厂商提供自动生成微码(firmware)的工具。USB单片机控制程序通常由三部分组成,第一、初始化单片机和所有的外围电路(包括USBN9602);第二、主循环部分,其任务是可以中断;第三、中断句柄,其任务是对时间敏感的,必须马上执行。
3.3 开发USB网卡驱动程序
开发USB设备驱动程序通常采用WindowsDDK来实现,但现在有许多第三方软件厂商提供了各种各样的生成工具,象Compuware的Driver Works,BlueWaters的DriverWizard等软件能够方便地生成高质量的USB的驱动程序。没有DDK或WDM基础的开发人员可使用KRFTech公司的开发软件WinDriver,它的最新版本4.32已经支持USB驱动程序的开发。最后的驱动程序调试工作可以使用Compuware的Softice或Microsoft的Windows Debugger来进行。
Windows下的网卡驱动程序需符合NDIS规范(Network Driver Interface Specification)。网络驱动程序不直接调用操作系统的例程,而是通过NDIS进行系统调用,NDIS还根据需要调用了驱动程序提供的例程,共同完成网卡的功能。
USB网卡驱动程序可分为NDIS中间介质小端口驱动程序和USB驱动程序两部分,然后将两部分驱动程序动态连接。如果USB设备未连接和被禁止,使USB驱动不可用,那么NDIS驱动会返回一个NOT_AVAILABLE的状态。这种实现方法可以保证用户不必重新安装NDIS或重启就可以连接或拔掉USB设备。
参考资料:http://www.mcublog.com/blog/user1/6950/archives/2006/9808.html
[解决办法]
一点都不懂usb。。。学习了
[解决办法]
学习一下,支持啊
[解决办法]
不错啊,学习一下啊
[解决办法]
关注!
[解决办法]
自己写驱动,学习.
[解决办法]
好东西值得一看
[解决办法]
顶
[解决办法]
我现在同样碰到usb的问题,大家多数可能对开发usb设备的驱动比较熟悉,
不同板子的bsp不同,它的usb低层驱动就不一样。
我现在想问一下,不同的芯片比如amd+cs5536与intel+852gm+ich4的板子,
usb的低层驱动如何修改,主要改那些文件?
因为我在使用usb鼠标时有的板子可以用,有的不可以用?我想应该是低层
的驱动有问题。hcd文件夹是不是低层的驱动文件了?
[解决办法]
值得学习!
[解决办法]
顶
[解决办法]
好东西啊,不错啊.
[解决办法]
你的艺术水平太高了
[解决办法]
好东西值得一看
[解决办法]
呵呵 希望如此啊