您的位置:首页 > 其它

USB基础(杂)

2013-07-24 17:30 267 查看
要完成一个USB设备的开发,仅了解USB协议是不够的,还需要知道USB设备类协议,USB协议与USB设备类协议是相互补充的。为了简化USB总线的开发流程,USB-IF将常用的具有相同或相似功能的设备归为一类,并制定了相关的设备类规范,使得只要依照统一规范标准,不同的厂商开发的USB设备可以使用同样的驱动程序。
USB设备类是个庞大的概念,限于篇幅,简单介绍一下一些常见的类型。USB设备分为两大类:标准型的和非标准型的。标准类型的,比如音频设备、通信设备、打印机设备、H工D设备和存储设备。而非标准类型的,比如USB/RS一232转换器等。其中存储设备 (Mass Storage)类,将结合后面的具体开发,重点讲述。
Massstorage设备类和Bulk一only类传输协议
MassStorage类主要用于为软磁盘接口、硬盘接口及Flash存储器等设备建立的USB接口,类代码(blnterfaceClass字段的值)为0x08。这些不同的数据存储载体接口构成了MaSSStorage类的子类。
这些子类的命令都是各子类所特有的,而与USB没有任何关系,进行USB传输时,将这些命令打包进行传输。实际的开发过程,可以选用不同的子类命令集来实现系统功能,并不必完全受限制于关系定义。而真正与MassStorage传输方式相关的是其传输协议,即blnterfaceProtocol字段表示的内容。
在主动USB接口设计中支持的传输协议,是Bulk一Only传输协议。此协议仅使用Bulk端点来实现数据、命令和状态的传输,而没有使用中断和控制端点。CBW和CSW是一系列包的集合,简称封包。
Massstor。ge的子类命令
严格意义上,支持MassStorage类的USB主机应该全面支持各子类。但是在实际应用中,一方面由于主机系统资源的限制,另一方面由于实际需求要求有针对性,所以通常选用一些基本的命令即可。各子类都支持基本的操作命令,所以可以灵活选用各种子类,如UFI,SCSl及RBC等,具体的命令格式参考相关的命令规范,不再详述,在具体的开发中,会结合项目来介绍相关的命令。
USB主机
传统意义的USB开发,仅仅是对USB外设的开发,USB核心驱动程序和USB主控制器驱动程序都是由操作系统提供。而为了实现USB主机功能,必须设计这两部分驱动程序。USB主机协议描述了USB系统软件(核心驱动程序和主控制器驱动程序)的设计规范。
USB主机的主要功能有:检测USB设备的连接和断开;管理主机和设备间的标准的控制管道;管理主机和设备间的数据流;收集设备的状态,统计总线的活动;控制和管理主机控制器和设备间的电气接口。
USB主机分为三个层次:USB总线接口层、USB系统层、USB用户层


USB作为一种主从总线,就意味着任何USB事务都是由主机引发。USB主机处于主模式,设备处于从模式。在主机中,USB所需要的唯一的系统资源是 USB系统软件所使用的内存空间、USB主控制器所使用的内存地址空间(I/O地址空间)和中断请求(RIQ)线。每一个设备有一些专有寄存器,也就是端点(EndPoint)。在进行数据交换时,应用程序可以通过设备驱动间接访问它。每一个端点支持几种特殊的传输类型,并且有一个唯一的地址和传输方向。不同的是端点0仅用作控制传输,并且其传输可以是双向的。系统上电后,具有PnP特性的USB主机负责检测设备的连接与拆除、初始化设备的列举过程,并根据设备描述表安装设备驱动后自动重新配置系统,收集每个设备的状态信息。设备描述表标识了设备的属性、特征并描述了设备的通信要求。USB主机根据这些信息配置设备、查找驱动,并且与设备通信。典型的USB数据传输是由设备驱动开始的,当主机需要与设备通信时,设备驱动提供内存缓冲区,用来存放设备收到或者即将发送的数据。USB驱动提供USB设备驱动和USB主控制器之间的接口,并将传输请求转化为USB事务,转化时需要与带宽要求及协议结构保持一致。某些传输是由大块数据构成的,这时需要先将它划分为几个事务再进行传输。每一个传输包含一笔或多笔事务(Transaction),而每一笔事务包含一个,两个或是三个信息包(Packet)。每一个信息包包含一个信息包标识符(PacketIdentifier,PID),CRC校验位,以及额外的信息。每一笔事务包含一个令牌(token)信息包,并且可能包含一个数据或联络(Handshake)信息包。USB的规范将事务定义为“将一个服务传送到一个端点”。这里的服务是指主机传送信息给设备,或是主机的要求与从设备接收信息。
USB的设备、USB的主机和USB的互连三个部分共同组成一个USB通信系统。USB设备提供的USB标准接口必须支持对USB协议的运用和对标准 USB操作的反馈,如设置和复位、标准性能的描述性信息。USB规范中定义了两种设备,高速设备和低速设备。Hub能用电子方式区分这两种设备。发生在总线上的通讯通常都是高速的,Hub一般不向低速设备发送数据。操作系统把任何发往低速设备的消息前加上一个前导包,这将使Hub临时降为低速,并完成低速设备的数据发送;USB的主机:在任何USB系统中,只有一个主机。USB和主机系统的接口称作主机控制器,主机控制器可由硬件、固件和软件综合实现。根集线器是由主机系统整合的,用以提供更多的连接点;USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面:总线的拓扑结构 (USB设备与主机之间的各种连接方式);内部层次关系(根据性能叠置,USB的任务被分配到系统的每一个层次);数据流模式(描述了数据在系统中通过 USB从产生方到使用方的流动方式);USB的调度(USB提供了一个共享的连接,对可以使用的连接进行了调度以支持同步数据传输,并且避免了优先级判别的开销)。
USB设备的配置、接口和端点之间的逻辑关系,从设备看配置,每个usB设备可以有一个或多个配置(Configuration),使用多配置的一个原因是对操作系统的支持,例如,系统BIOS可以使用一个简单的配置,而操作系统的驱动程序则使用另一个更复杂的配置。从配置看接口,设备的每个配置中都含有一个或更多的接口(interafce),接口可以有替换设置(alternate settngi)以适应不同的带宽需求,接口指出软件应该怎样访问硬件。从接口看端点,设备的接口露出一个或多个端点(EndPoint),端点是通信管道(pipe)的一个终点。
USB通信模型,主机分客户软件层,USB系统软件层和USB主机控制器。设备分USB总线接口层,USB设备层和功能层。USB系统软件是指在某一操作系统上支持UsB的软件,它独立于USB设备和客户软件;USB主机控制器是主机方的USB接口。从图中可以看出,USB总线接口提供主机和设备之间的物理连接,从逻辑上看,UsB设备层和USB系统软件层相对应,它们完成USB设备一些基本的、共有的工作;功能层和客户软件层相对应,它们实现单个USB 设备特有的功能。与PCI总线的显著差异是在设备访问时,USB客户软件通过系统软件提供的编程接口操作对应的设备,而不是直接通过操作内存或I/O口来实现。在系统软件层和USB设备层之间有一条缺省管道,对应于主机与设备的端点0通信,用于实现一些USB设备的基本控制功能。在客户软件层和功能层有多组通信管道,他们实现UsB设备的特定通信功能。实际的信号物理流程为(以信号从主机流向
设备为例):客户软件经USB传输给系统软件的数据不具有USB通信格式,系统软件对这些数据分帧,实现带宽分配策略,然后交给UsB主机控制器。主机控制器对数据按USB格式打包,实现传输任务,经串行接口引擎(SEI)后,将数据最终转化成符合USB电气特征的差分码,再从USB电缆发往设备。数据到达设备后是一个逆过程,在设备层中将设备解码,发往不同端点的数据包被分开并正确排列,帧结构被拆除,数据成为非USB格式的,最后数据送往各端点,完成通讯。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息