刚接触USB开发,总结了这几天的想法,请大虾们多多批评指教 端点组成接口,接口组成逻辑设备(相当于一个功能模块),不同的设备,其端点的性质、数量都是不同的。在客户软件和逻辑设备间形成与端点数目一致的消息管道,逻辑信息可以认为是在这些管道中流动。从开发者角度看,可以认为信息是在主机和端点间传递。
USB定义了四种传输类型(即:控制传输、同步传输、中断传输和批量传输),哪些端点具有哪些传输性能,要根据所使用的USB接口芯片的资料来确定。对于不同的USB设备,对他们的各种描述符都有相应的规定。 USB海量存储设备(Mass Storge)只需支持一个接口即数据(Data)接口,选择默认配置时,此接口及被激活。Mass Storge设备可以使用两种方式来实现与主机通信:Control/Bulk/Interrupt即CBI方式或Bulk_Only方式。Bulk_Only方式USB接口至少支持一个接口,为Bulk_Only Data接口,此接口使用三个端点:控制端点(为每个设备都使用的默认端点,不需定义)、Bulk_In和Bulk_Out。 当设备插入USB后, 1、USB即对设备进行搜索,并要求设备提供相应的描述符;2 2、在USB Host得到上述描述符后,对设备重新设置地址,并完成对设备的配置。 步骤1、2是通过控制端点(即端点0)传输的数据,在这之后不再通过此端点传输任何数据。与端点0对应的是消息管道,在此管道上端点既可作接收也可发送。消息管道上的数据有确定的数据格式。 通过描述符提供的信息,识别出Bulk_Only的Mass Storge设备后进入Bulk_Only传输方式。在此方式下,通过Bulk_In和Bulk_Out来传输设备与USB间的所有数据。Bulk_In和Bulk_Out分别对应与端点1、2,属于流管道。这种管道在一个方向上与一个唯一的设备端点号相对应,即只能单向传递数据。在流管道上的数据没有固定的数据格式。 |