USB设备的配置过程
- 格式:doc
- 大小:38.50 KB
- 文档页数:3
USB协议详解第30讲(USB枚举过程详解及抓包分析)USB(Universal Serial Bus)是一种用于连接计算机和外部设备的通信协议和接口标准。
USB枚举过程是指在设备连接到计算机上时,计算机通过与设备之间的通信来识别设备并建立通信。
USB枚举过程分为设备插入、USB设备识别和USB配置三个阶段:1.设备插入:当设备被插入计算机的USB接口时,计算机会感知到设备的插入,并触发枚举过程。
2. USB设备识别:计算机会发送一个特殊的reset信号给设备,以重置设备的状态。
然后计算机会发送一个设备描述符请求给设备,以获取设备的基本信息,如设备的供应商、产品ID等。
设备会回复一个设备描述符给计算机。
B配置:计算机会发送配置描述符请求给设备,以获取设备的详细配置信息。
设备会回复一个或多个配置描述符,以及相关的接口和端点信息。
然后计算机会选择一个合适的配置,并将其发送给设备。
设备收到配置信息后,会根据配置信息进行相应的初始化操作。
之后计算机会发送一些设备请求给设备,如获取设备状态、设置设备参数等。
在USB枚举过程中,计算机和设备之间的通信是基于USB传输层协议进行的。
USB传输层协议定义了几种不同类型的传输方式,如控制传输、批量传输、中断传输和等时传输。
在USB枚举过程中,主要使用控制传输。
USB枚举过程的抓包分析可以通过使用USB抓包工具,如Wireshark来进行。
通过抓包可以查看计算机和设备之间的通信过程,以及传输的数据包内容。
抓包可以帮助我们分析USB设备的插入和识别过程,以及在配置阶段的通信和数据传输。
抓包分析可以实现以下目的:1.查看设备的设备描述符和配置描述符,了解设备的供应商信息、产品信息和接口信息等。
2.分析计算机和设备之间的控制传输,了解计算机和设备之间的通信流程。
3.分析数据传输,查看数据包内容,了解数据的格式和结构。
4.分析设备和计算机之间的异常情况,如错误响应、超时等,帮助排除故障。
如何在Mac中快速打开USB设备设置Mac电脑因其高效稳定的性能和简洁友好的用户界面而备受欢迎。
然而,有时我们需要连接外部USB设备,如打印机、外置硬盘等,并进行相应的设置。
本文将介绍如何在Mac中快速打开USB设备设置,以便更方便地使用外部设备。
步骤一:连接USB设备首先,确保USB设备已正确连接到Mac电脑。
插入USB设备后,我们可以通过右上角的菜单栏来检查设备是否已连接成功。
如果设备已连接,您将看到一个“断开”选项。
如果该设备没有连接成功,您可以尝试重新连接或更换USB端口。
步骤二:打开“系统偏好设置”要对USB设备进行设置,我们需要打开Mac的“系统偏好设置”。
您可以通过以下两种方式来实现:1. 点击屏幕左上角的Apple图标,选择“系统偏好设置”。
2. 通过Dock栏中的“系统偏好设置”图标来打开。
步骤三:进入“系统偏好设置”中的“设备”一旦打开“系统偏好设置”,您将看到不同的选项。
请注意,这些选项可能因Mac操作系统的版本而有所不同。
在这里,我们将选择“设备”选项来设置USB设备。
步骤四:选择要设置的USB设备在“设备”界面中,您将看到连接到Mac电脑的各种设备列表。
请仔细查看列表,并选择您想要进行设置的USB设备。
步骤五:调整设备设置一旦选择了要设置的USB设备,您将看到该设备的配置选项。
根据设备类型的不同,选项可能会有所变化。
例如,对于打印机,您可以更改默认打印机和打印纸张大小等设置;对于外置硬盘,您可以更改文件系统格式和电源管理等设置。
步骤六:保存更改在完成对USB设备的设置后,确保您点击“保存”按钮以保存更改。
这样,您的设置将得到应用并生效。
如果您想撤消某些更改,可以点击“撤消”按钮。
步骤七:关闭“系统偏好设置”一旦完成所有的设置,您可以关闭“系统偏好设置”窗口。
您可以直接点击窗口左上角的“红色关闭”按钮或使用键盘快捷键“Command + Q”来退出该窗口。
总结在这篇文章中,我们介绍了如何在Mac中快速打开USB设备设置。
USB工作原理USB(Universal Serial Bus,通用串行总线)是一种用于连接计算机与外部设备的通信接口标准。
它是一种高速、可靠、简单、低成本的接口,广泛应用于计算机、手机、相机、打印机、键盘、鼠标等各类设备。
USB接口采用了四根线缆,分别是VCC(电源正极)、D+(数据正极)、D-(数据负极)和GND(地线),其中VCC提供电源,D+和D-传输数据,GND提供接地。
USB工作原理如下:1. 插入设备:当用户将USB设备插入计算机的USB接口时,计算机会检测到设备的插入,并为设备提供电源。
2. 电源供应:计算机通过VCC线为设备提供电源,确保设备正常工作。
3. 设备识别:计算机通过D+和D-线发送一系列的电信号给设备,设备通过解读这些信号来识别自己的类型和功能。
4. 配置设备:一旦设备被识别,计算机会自动加载相应的驱动程序,并配置设备与计算机之间的通信参数。
5. 数据传输:设备与计算机之间的数据传输是通过D+和D-线进行的。
在传输数据之前,计算机会发送一系列的同步信号给设备,以确保双方的数据传输速度一致。
6. 数据交互:一旦数据传输开始,设备和计算机可以通过USB接口进行双向的数据交互。
设备可以向计算机发送数据,也可以接收计算机发送的数据。
7. 数据结束:当数据传输完成后,设备和计算机会发送一系列的结束信号,以表示数据传输的结束。
8. 设备移除:当用户拔出USB设备时,计算机会检测到设备的移除,并停止为设备供电。
总结起来,USB工作原理是通过四根线缆实现设备与计算机之间的电源供应和数据传输。
计算机通过发送电信号和加载驱动程序来识别设备并配置通信参数,然后通过D+和D-线进行数据传输和交互。
USB接口的简单性、可靠性和高速性使其成为了各类设备的主要通信接口之一。
实例讲解USB的枚举(配置)过程所需要工具•USB Monitor2.26•优盘一个网上大量介绍用bus hound作监控软件,我们为什么不选bus hound而选USB Monitor 呢,因为bus hound在WindowsXP环境不能监控USB枚举(配置)过程,它只有在Windows2000下才能实现这个功能。
不过用bus hound做除枚举以外的数据分析还是比较好用的。
USB Monitor的唯一缺点是找不到它的破解版,只能试用大约一个月的时间。
USB Monitor的安装下载USB Monitor2.26,安装一路next下去即可,安装完成后将会提示您重新启动系统。
启动您的USB Monitor1、运行安装好后的USB Monitor,点击“File”→“New Session”2、在弹出的对话框中点“下一步”3、在“Monitoring Session Type”对话框中选择“USB Monitor”后点下一步4、在“Configurating the USB Monitor”对话框中提示您选择哪一个USB设备需要监视,如果这时您还没有将任何USB设备插入主,将显示如下界面,我们怎么知道应该选择哪一项呢?请看第5步﹍5、将您需要监控的USB设备插入主机USB端口,这时将会在某在项后面多出一些内容,如下图所示,我这里选择“USB Mass Storage”。
小技巧:当我们要监控我们自己开发的设备时,可以先用一个优盘插入其中一个USB端口,在此步中选择我们插入的优盘,在实际监测过程中将我们开发的USB设备插入这个USB插口即可。
6、在“Configure Data Processing”对话框中选择“Request View”并点下一步7、弹出您的优盘,然后在USB Monitor主界面里点“Edit”->“Clear View”,如下图所示8、插入您的优盘,记得一定要插在同一USB插口哟!此时USB Monitor会检测许多的数据流,我们切换到Complete标签,如下图所示:分析USB设备的枚举过程通过以上的操作后,我们现在可以对USB Monitor监测到的数据进行分析了。
如何正确安装和配置计算机的USB接口计算机的USB接口在现代科技中发挥着非常重要的作用,它不仅实现了计算机与外部设备的连接,还可以用于数据传输和充电等功能。
正确安装和配置计算机的USB接口对于保证设备的正常使用非常重要。
本文将介绍如何正确地安装和配置计算机的USB接口,以帮助读者们更好地使用计算机。
一、硬件准备在开始安装和配置计算机的USB接口之前,我们需要做好一些硬件准备工作。
首先,确保计算机已经关闭,并断开电源。
接下来,准备一根合适的USB数据线和需要连接的外部设备,确保数据线和设备均符合USB接口的规格和要求。
此外,还可以准备一些必要的工具,如螺丝刀、扳手等,以便在必要时进行调整和固定。
二、安装USB接口安装USB接口的方式主要取决于计算机的类型和型号。
一般来说,计算机的前后面板都会预留一个或多个USB接口的插槽。
在进行安装之前,我们需要先插上USB接口卡。
首先,找到计算机主机箱的开启按钮或螺丝,将其打开。
然后,根据主板的插槽类型选择合适的USB接口卡,将其插入到相应的插槽中。
插入USB接口卡之后,需要使用螺丝刀或者其他工具将其固定在主板上。
注意,在固定过程中要保证USB接口卡与主板之间的连线能够正常连接,且固定牢固。
完成固定后,可以将主机箱的盖板重新安装好,并将计算机连接到电源。
三、配置USB接口配置USB接口主要涉及计算机的操作系统设置以及外部设备的适配和安装。
在计算机启动之后,进入操作系统界面。
对于Windows操作系统,我们需要打开"设备管理器"。
在设备管理器中,可以找到"通用串行总线控制器"选项,展开后即可看到计算机上所有已安装的和连接的USB接口设备。
在设备管理器中,通过右键点击USB接口设备,我们可以选择"属性"选项,进入设备配置页面。
在这里,我们可以进行一些基本的设置,如调整传输速率、电流强度和电源管理等。
需要特别注意的是,在进行任何修改之前,一定要确保了解和理解这些设置对于设备和计算机的影响,以免造成不必要的问题。
USB工作原理USB(Universal Serial Bus)是一种常见的计算机外部设备连接标准,它提供了一种简单、快速、可靠的方式来连接各种外部设备,如打印机、键盘、鼠标、摄像头等。
USB工作原理是指USB设备如何与计算机进行通信和数据传输的过程。
USB工作原理的基本原理是通过USB接口进行数据传输和电力供应。
USB接口通常由一个类型A插头和一个类型B插头组成,其中类型A插头连接到计算机的USB端口,类型B插头连接到USB设备。
USB接口还包括四个数据线(D+、D-、VCC、GND)和两个电源线(VCC、GND)。
USB设备和计算机之间的通信是通过数据线进行的。
在数据传输之前,USB设备和计算机会进行一次握手过程,以确定设备的类型和功能。
握手过程包括发送设备描述符和配置描述符,以及确认设备是否支持所需的功能和速度。
一旦握手过程完成,USB设备和计算机就可以开始进行数据传输。
数据传输可以是单向的,也可以是双向的。
在单向传输中,数据从计算机传输到USB设备或者从USB设备传输到计算机。
在双向传输中,数据可以同时在两个方向上进行传输。
USB数据传输的速度可以是全速(12 Mbps)、高速(480 Mbps)或者超高速(5 Gbps)。
数据传输的速度取决于USB设备和计算机的性能以及所使用的USB 版本。
USB 2.0是目前最常用的版本,它支持高速传输。
USB 3.0和USB 3.1是更快的版本,支持超高速传输。
除了数据传输,USB接口还可以提供电力供应。
USB设备可以通过USB接口从计算机获取所需的电力,这使得许多USB设备不需要额外的电源适配器。
USB 接口还可以提供不同功率等级的电力,以满足不同设备的需求。
总之,USB工作原理涉及USB设备和计算机之间的通信和数据传输过程。
通过USB接口,USB设备可以与计算机进行快速、可靠的数据传输,并且可以通过USB接口获取所需的电力。
这使得USB成为一种广泛应用于各种外部设备连接的标准。
usb同步通信建立流程
USB(Universal Serial Bus)同步通信是指通过USB接口进行
数据传输和通信的过程。
USB通信建立的流程通常包括以下步骤:
1. 插入设备,首先,用户将USB设备插入计算机的USB接口中。
设备可能是存储设备、打印机、摄像头或其他外围设备。
2. 设备检测,一旦设备被插入,计算机会检测到新的USB设备
的连接。
操作系统会尝试识别设备并加载相应的驱动程序。
3. 驱动程序加载,操作系统会检查设备的硬件ID,并尝试匹
配已安装驱动程序的设备。
如果找到匹配的驱动程序,系统会加载
该驱动程序以便与设备进行通信。
4. 配置设备,一旦驱动程序加载完成,操作系统会配置设备并
为其分配资源,如内存地址、中断等。
5. 建立通信,设备与计算机之间的通信协议会被建立。
这可能
涉及到协商通信速率、数据格式、命令和响应等。
6. 数据传输,一旦通信建立,设备和计算机可以开始进行数据
传输。
这可能是从设备读取数据到计算机,或者从计算机发送数据
到设备。
总的来说,USB同步通信建立的流程涉及设备的插入、驱动程
序加载、设备配置和通信协议的建立,最终实现数据的传输和通信。
这些步骤确保了设备与计算机之间的稳定和可靠的通信。
USB协议-设备识别过程USB协议一枚举过程:◆用户将一个USB设备插入USB端口,主机为端口供电,设备此时处于上电状态。
◆主机检测设备。
◆集线器使用中断通道将事件报告给主机。
◆主机发送Get_Port_Status(读端口状态)请求,以获取更多的设备信息。
◆集线器检测设备是低速运行还是高速运行,并将此信息送给主机,这是对Get_Port_Status请求的响应。
◆主机发送Set_Port_Feature(写端口状态)请求给集线器,要求它复位端口。
◆集线器对设备复位。
◆主机使用Chirp K信号来了解全速设备是否支持高速运行。
◆主机发送另一个Get_Port_Status请求,确定设备是否已经从复位状态退出。
◆设备此时处于缺省状态,且已准备好在零端点通过缺省通道响应主机控制传输。
缺省地址为00h,设备能从总线获取高达100mA的电流。
◆主机发送Get_Deor(读设备描述符)报文,以便确定最大数据包大小。
设备描述符的八个字节是bMaxPacketSize。
◆通过发送Set_Address(写地址)请求,主机分配地址,设备此时处于地址状态。
◆主机发送Get_Deor报文,以获取更多的设备信息。
主机通过发送描述符响应设备请求,随后发送全部的次级描述符。
◆主机分配并加载设备驱动程序。
◆通过发送Set_Configuration(写配置)请求,主机的设备驱动程序选择一个有效配置,设备此时处于配置状态。
◆主机为复合设备接口分配驱动程序。
◆如果集线器检测到有过流现象,或者主机要求集线器关闭电源,则USB总线切断设备供电电源。
在这种情况下,设备与主机无法通信,但设备处于连接状态。
◆如果在3毫秒内设备在总线上未见任何动作,则它将进入挂起状态,在挂起状态设备消耗的总线电能最少。
如下:1)集线器检测新设备主机集线器监视着每个端口的信号电压,当有新设备接入时便可觉察。
(集线器端口的两根信号线的每一根都有15kΩ的下拉电阻,而每一个设备在D+都有一个1.5kΩ的上拉电阻。
USB的结构及工作原理USB(Universal Serial Bus,通用串行总线)是一种用于连接计算机与外部设备的接口标准。
它是由英特尔、微软、康柏、NEC和IBM等公司于1996年共同开发,并在同一年推出。
USB接口的设计初衷是为了取代传统的串口、并口、PS/2接口等,提供更高的传输速度和更方便的插拔功能。
USB接口的结构:USB接口由电缆、连接器和协议组成。
1.电缆:USB电缆是一根用于传输数据和供电的线缆,通常采用双绞线结构。
USB2.0及之前的标准使用4根导线,分别是两根用于数据传输的数据线(D+和D-),一根用于供电的VCC线,一根用于地线的GND。
USB3.0及之后的标准引入了多根用于数据传输的超高速差分传输线。
2.连接器:USB连接器有多种类型,分别用于不同的设备。
常见的连接器有标准型A型和B型,小型型A型和B型,迷你型A型和B型等。
USB连接器的设计兼容性强,可以插入任意方向而无需区分正反面。
3.协议:USB协议规定了数据传输的格式和顺序。
USB传输使用基于主机—设备模式的异步通信方式,主机在需要的时候发起数据传输请求,设备响应并传输数据。
USB协议支持多种传输模式,包括控制传输、批量传输、中断传输和等时传输。
USB接口的工作原理:USB接口的工作原理涉及到主机和设备之间的通信过程。
1.枚举:当一个设备连接到USB接口时,主机会对其进行枚举,即识别设备并分配一个唯一的地址。
枚举过程包括设备插入检测、速度检测、地址分配和配置。
2.控制传输:控制传输用于主机和设备之间的命令和控制信息交换。
主机通过发送请求包来向设备发送命令,设备通过发送响应包来回应。
控制传输用于设备的配置和管理。
3.批量传输:批量传输用于较大数据量的传输,如打印机的数据传输。
批量传输允许出错和重传,保证数据的可靠传输。
4.中断传输:中断传输用于传输时间敏感的数据,如鼠标和键盘的输入数据。
中断传输具有较低的延迟和较高的数据传输率。
linux usb设备节点产生过程在Linux操作系统中,USB设备节点的生成过程是通过USB核心驱动程序来完成的。
当插入USB设备后,操作系统会检测到新的USB设备并自动加载相应的驱动程序。
下面将详细介绍USB设备节点生成的过程。
1.检测USB设备:当USB设备插入计算机的USB接口时,USB控制器会向主处理器发送中断信号,通知操作系统有新的设备连接。
操作系统通过USB核心驱动程序监听该中断信号,并开始检测新连接的设备。
2.加载USB驱动程序:操作系统会检查存在的USB驱动程序库,并根据USB设备的硬件标识信息(Vendor ID和Product ID)来匹配合适的驱动程序。
如果找到了匹配的驱动程序,操作系统就会加载该驱动程序,以便对USB 设备进行操作。
3.创建设备节点:一旦合适的USB驱动程序被加载,操作系统就会为该USB设备创建设备节点。
设备节点是Linux中与设备交互的接口,通过该节点可以对设备进行读写操作。
每个USB设备在系统中都有一个唯一的设备节点。
4.创建udev规则:udev是Linux内核中的一个设备管理机制,它负责监听系统中设备的插入、移除和属性变化等事件,并根据预定义的规则进行相应的处理。
当系统检测到新的设备时,udev会根据配置文件中的规则来创建设备节点。
这些规则指定了如何命名设备节点、设置设备权限等。
5.设备节点命名:udev会根据其配置文件中的规则为USB设备节点命名。
设备节点的命名通常遵循一定的规则,例如使用/dev/usb开头或者以设备类型为前缀。
这样可以使得设备节点易于识别和管理。
6.设置设备权限:udev还负责为USB设备节点设置权限。
这些权限规定了哪些用户或组可以对设备进行读写操作,以确保系统的安全性。
默认情况下,udev会根据规则设置设备节点的权限,但用户也可以根据需要自行配置设备的权限。
通过以上步骤,USB设备节点在Linux系统中成功生成。
一旦设备节点生成,用户就可以使用相应的命令和API对USB设备进行访问和操作。
实例讲解USB的枚举(配置)过程启动您的USB Monitor1、运行安装好后的USB Monitor,点击“File”→“New Session”2、在弹出的对话框中点“下一步”3、在“Monitoring Session Type”对话框中选择“USB Monitor”后点下一步4、在“Configurating the USB Monitor”对话框中提示您选择哪一个USB设备需要监视,如果这时您还没有将任何USB设备插入主,将显示如下界面,我们怎么知道应该选择哪一项呢?请看第5步﹍5、将您需要监控的USB设备插入主机USB端口,这时将会在某在项后面多出一些内容,如下图所示,我这里选择“USB Mass Storage”。
小技巧:当我们要监控我们自己开发的设备时,可以先用一个优盘插入其中一个USB端口,在此步中选择我们插入的优盘,在实际监测过程中将我们开发的USB设备插入这个USB插口即可。
6、在“Configure Data Processing”对话框中选择“Request View”并点下一步7、弹出您的优盘,然后在USB Monitor主界面里点“Edit”->“Clear View”,如下图所示8、插入您的优盘,记得一定要插在同一USB插口哟!此时USB Monitor会检测许多的数据流,我们切换到Complete标签,如下图所示:分析USB设备的枚举过程通过以上的操作后,我们现在可以对USB Monitor监测到的数据进行分析了。
1、按“Ctrl + F”,查找第一个“Descriptor Request”,从这里开始是对我们有用的信息。
2、对USB Monitor显示的数据结构进行分析:①序列号,可理解为一个上行或下行数据流标号,无实际意义②命令类型,括号里的“Down”代表输出数据,即主机到设备③命令数据流,出现“Setup Packet”后面,十六进制④对命令数据的简单分析⑤传输类型,括号里的UP代表输入数据,即设备到主机⑥设备返回的数据流,十六进制⑦对命令(请求)数据的详略分析(其中对“Request”的分析应该有BUG,0x6应为Get_Descriptor,而USB Monitor解释为Get_Configuration)以上没有看到对上行数据(设备返回的数据)的分析,我们只要将鼠标停留在设备返回数据流处(上图所示标记⑥),就会弹出对上行数据的分析画面,如下图所示:3、枚举过程分析1)、主机第一次发出请求描述符命令,数据流为:80 06 00 02 00 00 09 00,bRequest的值为0x06,代表Get_Descriptor命令,但为什么描述符呢?wValue的高字节表示了描述符的类型,此处wValue的值为0x0100,所以高字节为0x01,代表设备描述符(见《USB开发基础--USB命令(请求)和USB描述符》中表5);设备返回的数据为:12 01 00 02 00 00 00 40 51 09 0E 16 00 02 01 02 03 01,bLenght的值为0x12,表示此描述符的长度。
usb同步通信建立流程全文共四篇示例,供读者参考第一篇示例:USB同步通信建立流程是指在USB设备与主机之间建立通信连接的过程。
USB同步通信是指USB设备与主机之间进行双向数据传输时采用同步传输方式,数据包按照固定的时钟信号进行传输,确保数据的准确性和稳定性。
下面我们将详细介绍USB同步通信建立流程。
USB同步通信建立流程包括以下步骤:1. USB设备的连接:用户需要将USB设备连接到主机的USB接口上。
主机会自动检测到USB设备的连接,并为其分配一个地址。
2. USB设备的识别:主机会通过发送一个特定的命令来识别USB 设备的类型和功能。
USB设备在接收到这个命令后会做出相应的回应。
这样主机就能确定USB设备的身份以及支持的通信协议。
3. USB设备的配置:主机在确定了USB设备的类型和功能后,会向USB设备发送配置信息,包括数据传输的模式、速率等参数。
USB 设备在接收到配置信息后会进行设置,确保设备与主机之间的通信参数一致。
4. USB设备的就绪:USB设备在完成配置后会向主机发送一个就绪信号,表示设备已经准备好开始数据传输了。
5. 数据传输:当USB设备和主机之间建立了通信连接并且设备处于就绪状态时,数据传输就可以开始了。
主机会发送数据包给USB设备,USB设备接收到数据包后会做出响应。
6. 数据确认:在数据传输完成后,USB设备会向主机发送一个确认信号,表示数据包已经成功接收。
如果数据传输出现错误,USB设备会向主机发送一个错误信号,要求重新发送数据包。
第二篇示例:USB同步通信是一种通过USB接口进行数据传输和通信的方法,它广泛应用于各种设备之间的数据同步和通信。
在建立USB同步通信的流程中,涉及到多个步骤和环节,需要确保每一个环节都正确执行,以保证通信的顺利进行。
本文将介绍USB同步通信的建立流程,并详细描述每一个步骤的要点和注意事项。
一、准备工作在进行USB同步通信之前,首先需要准备好相应的硬件和软件设备。
usb 工作原理
USB(Universal Serial Bus,通用串行总线)是一种常见的电
脑外部设备连接标准。
它的工作原理如下:
1. 物理连接:USB使用四根线(VCC,GND,D+,D-)进行
连接。
VCC提供电源,GND是地线,D+和D-是差分信号传
输的两根线。
2. 握手协议:当设备插入到电脑的USB接口上时,电脑会向
设备发送一个信号,设备会做出响应,称为握手。
3. 配置和识别:电脑和设备在握手之后会进行配置和识别的过程。
电脑会向设备发送一个请求,要求设备提供自己的信息,如设备ID,供应商ID等。
设备通过在D+和D-上发送特定的
电信号来回应请求。
4. 数据传输:一旦设备被识别并配置成功,数据传输可以开始。
传输数据的过程中,D+和D-上的电信号通过差分信号传输以
提高抗干扰能力。
数据可以在两种传输模式下进行:控制传输模式和批量传输模式。
5. 供电:除了传输数据,USB接口还可以为连接的设备提供
电源。
VCC线提供电源,设备可以通过接口从电脑获得所需
的电能。
6. USB控制器和驱动程序:为了实现USB的工作,操作系统
需要安装适当的USB控制器和驱动程序。
这些程序负责管理
USB接口和设备之间的通信,使得设备能够在电脑上正常工作。
总的来说,USB的工作原理是通过握手协议进行设备识别和配置,利用差分信号传输数据,在提供电源的同时实现数据传输和设备控制。
这使得USB成为一种方便、高效的设备连接方式。
LibUSB-Win32是一个用于Windows操作系统(Win98SE、WinME、Win2k和WinXP、Vista、Win7等)上的通用USB设备驱动程序。
该驱动程序允许使用者在不写任何一行核心驱动程序代码的情况下,可以访问Windows系统上的任意一个USB设备,具有以下特点: 能够与任意一个已安装的USB设备进行通信可被用作自己开发的USB设备的驱动程序支持批量和中断传输支持USB规范中定义的所有标准设备请求支持USB设备制造商的自定义请求通过使用几个函数,就可以与USB设备进行简单通信了,通信的主要流程可分为以下四步:1) 调用usb_init函数,进行初始化。
2) 打开要进行通信的USB设备的句柄。
首先依次调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数,获得已找到的USB总线序列;然后通过链表遍历所有的USB设备,根据已知的要打开USB设备的ID(VID/PID),找到相应的USB设备;最后调用usb_open函数打开该USB设备(在这里假设总线上没有相同VID和PID的USB设备。
如果总线上存在着相同VID和PID的设备,还需要进行其他条件判断,比如设备名称,以保证是打开的是期望的USB设备)。
3) 与USB设备进行通信。
使用usb_control_msg函数,向USB设备读取数据或写入数据。
4) 关闭USB设备。
完成所有操作后,调用usb_close函数关闭已经打开的USB设备。
编译工具:VS2010和WINDDK,可以去官网上直接下载源码,地址是/projects/libusb-win32/files/,下载的最新版本为libusb-win32-src-1.2.6.0。
VS2010用来编译libusb-win32的动态链接库、相关工具和DEMO程序的。
我们还需要WINDDK来编译驱动,即生成libusb0.sys文件。
linux usb id匹配原理Linux USB ID匹配原理在Linux系统中,USB设备的识别和驱动加载是通过USB ID匹配来实现的。
USB ID是一种用于唯一标识USB设备的编号,它由厂商ID(Vendor ID)和产品ID(Product ID)组成。
本文将详细介绍Linux USB ID匹配的原理和过程。
1. USB ID的获取在Linux系统中,USB ID信息存储在一个名为usb.ids的文件中,该文件位于/usr/share/usb目录下。
这个文件包含了大量USB设备的厂商ID和产品ID信息。
当新的USB设备连接到Linux系统时,系统会自动从设备中读取厂商ID和产品ID,并将其与usb.ids文件中的信息进行匹配。
2. USB设备的识别当USB设备插入Linux系统时,系统会自动加载相应的USB驱动程序。
USB设备的识别过程可以分为以下几个步骤:a. 系统通过USB控制器检测到新的USB设备插入。
b. 系统读取USB设备的描述符信息,其中包括厂商ID和产品ID。
c. 系统根据USB ID匹配的原理,将厂商ID和产品ID与usb.ids 文件中的信息进行匹配。
d. 如果匹配成功,系统会加载相应的USB驱动程序,并为设备分配一个唯一的设备文件,如/dev/sda。
e. 如果匹配失败,系统会试图加载一个通用的USB驱动程序,以便对设备进行基本的操作。
3. USB ID匹配原理USB ID匹配的原理是根据厂商ID和产品ID来识别USB设备。
厂商ID由USB实施者论坛(USB Implementers Forum)分配,它用于标识USB设备的制造商。
产品ID是由制造商根据自己的需要分配的,用于标识其不同型号的USB设备。
在usb.ids文件中,每个USB设备的厂商ID和产品ID都对应着一个设备描述符,其中包含了设备的详细信息,如设备的类别、子类别、协议等。
通过匹配设备描述符,系统可以确定设备所需的驱动程序,并加载相应的模块。
MW150U详细配置指南声明Copyright © 2011 深圳市美科星通信技术有限公司版权所有,保留所有权利未经深圳市美科星通信技术有限公司明确书面许可,任何单位或个人不得擅自仿制、复制、誊抄或转译本书部分或全部内容。
不得以任何形式或任何方式(电子、机械、影印、录制或其他可能的方式)进行商品传播或用于任何商业、赢利目的。
为深圳市美科星通信技术有限公司注册商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
本手册所提到的产品规格和资讯仅供参考,如有内容更新,恕不另行通知。
除非有特殊约定,本手册仅作为使用指导,本手册中的所有陈述、信息等均不构成任何形式的担保。
联系方式网址:技术支持热线:400-8810-500技术支持E-mail:fae@物品清单小心打开包装盒,检查包装盒里面应有以下配件:¾一块 150M无线USB网卡¾一本快速安装指南¾一张保修卡¾一张包含驱动程序和管理软件的光盘注意:如果发现有配件短缺或损坏的情况,请及时和当地经销商联系。
目 录第一章产品概述 (1)1.1产品特性 (1)1.2指示灯状态 (1)1.3安全警示 (2)第二章安装指南 (3)2.1硬件安装 (3)2.2软件安装 (3)第三章连入无线网络 (8)3.1通过配置软件连接 (8)3.2通过WPS功能连接 (10)3.2.1WPS设置方法一 (10)3.2.2WPS设置方法二 (12)3.2.3WPS设置方法三 (13)3.3通过Windows配置工具连接 (16)3.3.1Windows 7系统下 (16)3.3.2Windows Vista系统下 (18)3.3.3Windows XP系统下 (20)第四章配置文件管理 (22)4.1添加和修改配置文件 (22)4.2删除和激活配置文件 (26)4.3导出和导入配置文件 (26)第五章高级设置 (28)第六章SoftAP模式 (29)第七章相关信息查看 (34)7.1查看无线网络连接状态 (34)7.2查看软件信息 (35)附录A 卸载网卡 (36)附录B 规格参数 (37)第一章产品概述MW150U 150M无线USB网卡适用于台式电脑、笔记本等设备进行无线连接,可以提供方便、快捷的无线上网方式。
驱动程序中USB设备的配置过程(参考Windows XP DDK)
DDK驱动程序写得很规范,USB初始化、数据传输的过程写的很清楚。
通过阅读DDK驱动程序,我对原来USB驱动程序中许多不理解的地方有了更清楚的理解.下面就参照DDK提供的iso_usb例子对USB设备的配置过程进行总结。
1.驱动程序加载后首先执行DriverEntry入口函数。
该函数设定了对各个IRP 进行处理的派遣函数。
2.DriverEntry函数执行完成后,开始执行AddDevice函数。
这个函数创建设备对象把设备对象连接到设备堆栈上,清除DO_DEVICE_INITIALIZING标志。
然后配置管理器向驱动程序发送一个即插即用请求IRP_MN_START_DEVICE,而调用下面的HandleStartDevice函数。
3. 在HandleStartDevice函数中完成了USB设备的配置过程:首先为设备选择一个配置(大多数设备仅有一种配置)。
选定了某种配置后,接着应该选择配置中的一个或多个接口。
然后向总线驱动程序发送配置选择URB,总线驱动程序接收到该URB后向设备发出命令使用选定的配置和接口。
(1)为设备选择配置的过程其实就是获取设备的配置描述符的过程。
Iso_usb 中使用了两个URB来读取配置描述符。
//首先获取固定大小的配置描述符,这时,此描述符不包含接口描述符和端点描述符。
siz = sizeof(USB_CONFIGURATION_DESCRIPTOR);
configurationDescriptor = ExAllocatePool(NonPagedPool, siz);
if(configurationDescriptor) {
//UsbBuildGetDescriptorRequest函数构造指定类型的urb
UsbBuildGetDescriptorRequest(
urb,
(USHORT) sizeof(struct
_URB_CONTROL_DESCRIPTOR_REQUEST),
USB_CONFIGURATION_DESCRIPTOR_TYPE,
0,
0,
configurationDescriptor,
NULL,
sizeof(USB_CONFIGURATION_DESCRIPTOR),
NULL);
//CallUSBD函数负责把urb转发到底层总线驱动程序
ntStatus = CallUSBD(DeviceObject, urb);
……
}
……
//然后获取全部的配置描述符,包括接口描述符和端点描述符
siz = configurationDescriptor->wTotalLength;
ExFreePool(configurationDescriptor);
configurationDescriptor = ExAllocatePool(NonPagedPool, siz);
if(configurationDescriptor) {
UsbBuildGetDescriptorRequest(
urb,
(USHORT)sizeof(struct
_URB_CONTROL_DESCRIPTOR_REQUEST),
USB_CONFIGURATION_DESCRIPTOR_TYPE,
0,
0,
configurationDescriptor,
NULL,
siz,
NULL);
ntStatus = CallUSBD(DeviceObject, urb);
……
}
(2)从配置描述符中提取感兴趣的接口描述符,总线驱动程序提供了函数USBD_ParseConfigurationDescriptorEx以简化这个过程。
interfaceDescriptor =USBD_ParseConfigurationDescriptorEx(
ConfigurationDescriptor,
ConfigurationDescriptor,
interfaceindex,
0,
-1, -1, -1);
该函数各个参数的含义是:第一个参数是上一步获取的完整的配置描述符;第二个参数是描述符内部开始搜索的地址,如果从头开始搜索,需要设置和第一个参数相同;剩下的五个参数是和感兴趣的接口相关搜索关键字,分别是InterfaceNumber, AlternateSetting, InterfaceC lass, InterfaceSubClass, InterfaceProtoco。
但相关的关键字不需要的时候,可以设置成-1。
由于配置描述符中可能包含多个接口,所以驱动程序需要将上述函数返回的接口描述符保存在USBD_INTERFACE_LIST_ENTRY类型的数组中。
iso_usb程序首先使用ExAllocatePool函数为接口描述符分配足够的内存。
interfaceList =ExAllocatePool(
NonPagedPool,
sizeof(USBD_INTERFACE_LIST_ENTRY) * (numberOfInterfaces + 1));
然后通过循环使用USBD_ParseConfigurationDescriptorEx函数获取的接口描述符对数组进行初始化。
初始化时,应该把接口描述符地址赋给
USBD_INTERFACE_LIST_ENTRY结构的InterfaceDescriptor成员,并把Interface 成员置NULL。
最后需要将数组的最后一个元素的两个成员全部置为NULL。
(3)初始化接口。
首先调用USBD_CreateConfigurationRequestEx函数创建一个urb。
然后需要对接口中的管道进行相应的初始化,最后将这个urb传递给底层驱动程序,由底层总线驱动程序完成接口的初始化。
urb = USBD_CreateConfigurationRequestEx(ConfigurationDescriptor, tmp);
Interface = &urb->UrbSelectConfiguration.Interface;
//需要初始化管道的MaximumTransferSize成员。
它代表单一URB能携带的最大数据量
for(i=0; i<Interface->NumberOfPipes; i++) {
Interface->Pipes[i].MaximumTransferSize = <constant>
}
ntStatus = CallUSBD(DeviceObject, urb);
(4)但USB设备配置完成之后,应该将一些句柄保存到设备扩展中供以后使用。
ØURB成员UrbSelectConfiguration.ConfigurationHandle返回配置句柄;
ØUSBD_INTERFACE_INFORMATION结构中InterfaceHandle返回接口句柄;
Ø每个USBD_PIPE_INFORMATION结构中都含有与端点对应的管道句柄PipeHandle
(5)关闭设备。
当驱动程序接到一个IRP_MN_STOP_DEVICE请求时,应该把设备置成为配置状态,创建并传递一个含有NULL配置指针的配置选择URB 可以达到这个目的。
siz = sizeof(struct _URB_SELECT_CONFIGURATION);
urb = ExAllocatePool(NonPagedPool, siz);
UsbBuildSelectConfigurationRequest(urb, (USHORT)siz, NULL);
ntStatus = CallUSBD(DeviceObject, urb);。