版本:3.7.0.1
大小:4.54 MB
环境:PC端
日期:2018- 11-21
有时候我们需要重装系统或者进入PE系统,我们常用的方法是使用U盘启动盘,前提是你需要有一个U盘和一款U盘启动盘制作工具,怎么制作U盘启动盘?极速小编为你介绍一款国外的U盘启动制作工具(WinUSB),它可以帮你将多个系统例如Win7/Win8/Win10装在你的U盘中,然后随时启动你需要的系统,非常强大。
基本介绍
如果您正在开发需要与PC通话的设备,那么涉及USB的可能性很大。对于每个USB设备,PC分配一个软件驱动程序。 Windows为符合定义的USB类(例如人机界面,打印机或大容量存储)的设备提供驱动程序。如果您的设备不适合定义的类,则可以使用Microsoft的WinUSB驱动程序。
在本文中,我将展示如何编程和访问WinUSB设备。 WinUSB驱动程序要求使用Windows XP SP2或更高版本的PC,包括Windows Vista和Windows 7。
每种用途的传输类型
每个USB数据传输位于PC或其他USB主机与设备端点之间。设备端点是存储接收到的数据或要发送的数据的缓冲区。每个设备必须支持端点零,这是双向的。另外,可选的端点地址每个都有一个数字(1-15)和一个方向(IN或OUT)。
即使端点驻留在设备上,USB规范也会从主机PC的角度定义端点方向。 IN端点向PC发送数据,OUT端点从PC接收数据。在为设备端编写代码时,这种命名约定可能会引起混淆!
USB如此多才多艺的一个原因是它支持四种传输类型,每种类型都有不同的优势。 WinUSB支持控制,批量和中断传输。控制传输使用端点零。其他传输类型可以使用端点1和更高端点。
控制传输提供了一种结构化的方式来发送请求和数据并接收响应。控制转移是唯一一种可以在单一转移中双向传递信息的类型。设备连接后,在一个名为枚举的过程中,主机使用控制传输来了解设备。
WinUSB设备也可以使用控制传输在供应商定义的请求中发送和接收数据。例如,您可以定义设置或读取开关的请求,发送数据以配置设备操作或接收传感器读数。
控制转移有两个或三个阶段。要了解新连接的设备,主机使用控制传输从设备请求称为描述符的数据结构。在安装阶段,主机发送请求。在数据阶段,设备发送请求的描述符。在状态阶段,主机确认接收描述符。主机也可以使用控制传输将信息发送到数据阶段的设备,设备在状态阶段进行确认。有些请求没有数据阶段。
USB主机为控制传输保留一部分总线带宽:低速和全速端点为10%,高速端点为20%。如果总线不忙,控制传输可以使用多于预留带宽。但所有设备必须共享总线,因此在繁忙的总线上,控制权转移可能不得不等待。
其他传输类型不具有多个阶段,可以为任何目的传输数据。在另外一辆闲置的公交车上,批量转运是比较快的。但批量传输没有保证的带宽,所以在繁忙的公交车上,批量传输必须等待。批量传输的常见用途是打印机和扫描仪,快速传输很好,但不是必需的。
对于中断传输,主机保证来自IN端点的数据请求或向OUT端点发送数据的比较大时间间隔。中断传输的常见用途是鼠标和键盘,它们需要将用户输入快速传输到主机。
等时传输具有保证的传输速率,但与其他传输类型不同,等时传输不使用确认,并且接收器没有定义的方式来请求重新传输损坏的数据。等时传输的常见用途是流式音频和视频,用户不会注意到或将容忍一些损坏或丢失的数据包。 WinUSB不支持同步传输。
使用USB框架
我的示例代码是针对Microchip Technology的PIC18F4550单片机和MPLAB C18编译器的。我在Microchip的PICDEM FS-USB开发板上测试了代码。从我的网站上可以找到完整的用于PIC的WinUSB项目以及配套的Visual Basic和Visual C#应用程序。
我的PIC代码使用了Microchip的免费USB框架,它是一组处理低级USB通信的源代码模块。使用框架可以节省很多时间和麻烦。
对于除端点0之外的每个端点,设备都提供端点描述符。此列表显示了每个方向上批量和中断端点的端点描述符: