要完成一个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用户层。 |
|