3 USB On-The-Go设备类型
OTG有两种设备:两用OTG设备和外设式OTG设备。两用OTG设备可以作为USB外设或者USB OTG主机,并且可为总线提供8mA电流。而外设式OTG设备不具备主机性能,它必须在向两用设备(主机)的请求获准后才能通信。两用OTG设备必须能以全速方式运行,而高速运行的方式是可选的。外设型OTG设备可以设计在高速、全速和低速中的任意一种方式下工作。
3.1 两用OTG设备(dual-role device)
两用OTG设备都有一个Mini-AB插槽,所以一个Mini-A至Mini-B电缆可以直接将两个两用OTG设备连接在一起,而此时用户不会觉察到两个设备的不同,也不知道它们的默认主从配置。
A-device(主机)必须在事务传输过程中提供总线电源,这是A-device和B-device的主要不同,同时也说明了两个设备的连接的非对等关系。A-device负责为总线供电因此它控制通信发生的时机,B-device只有通过SRP协议向“主机”请求传输。
设计一个两用设备是比较困难的,因为它要具备:有限的主机能力、可作为一个全速的外设(可选的高速方式)、OTG目标设备的列表、目标设备的驱动程序、支持SRP、支持HNP、一个Mini-AB插座、VBUS上不小于8mA的电流输出、与用户通信的方式。
3.2 外设式OTG设备(Peripheral-only OTG device)
外设式OTG设备是普通的USB外设。它有一个OTG功能描述符说明其支持事务请求协议SRP而且它不是两用OTG设备。此外,外设式OTG设备只能配置Mini-B型插座或者必须有一个带Mini-A插头的附属电缆,而不能使用Mini-AB型插座。
SRP是B-device(此处指外设式设备)向A-device请求传输事务时必须使用的协议。它由前面提到的数据线脉冲调制和VBUS脉冲调制(B-device产生)两种方法构成。A-device必须能检测这两种方法之一的信号,并开始一个相应的传输事务。除了固件(firmware)略有增加外,B-device同时可产生两种信号的成本并没有增加成本,而且还使实现A- device更加简单(只需根据实际情况提供其中一种方式的检测)。
一个OTG设备不必实现OTG的所有性能。例如,一个外设式OTG设备可能只需支持SRP和一个小于等于8mA的默认电流消耗配置。其实,添加对SRP支持也较简单:在VBUS上接一个驱动电阻并增加一些简单的逻辑,从而产生VBUS脉冲调制信号。
另外,无论是两用OTG设备还是外设式OTG设备,都可以和通用的许机相连,只不过两用OTG设备具有一定的主机能力(可以驱动特定的一组OTG设备工作)。
4 驱动程序
与PC主机不同,便携式设备没有便捷的方式和足够的空间装载新的驱动程序。因此,OTG规范要求每个两用OTG设备有一个支持的外设式OTG目标设备的列表,列表中包括设备的类型和制造商等信息。USB IF正计划定义“OTG Type”规范。对于符合此规范的设备,OTG主机只需提供一个驱动程序即可,这将使OTG主机无需为每个设备提供单独的驱动程序,从而支持尽量多的OTG外设。
与PC机不同,OTG两用设备的驱动程序栈由USB主机栈和USB设备栈构成以满足两种工作方式的需要,见图3。OTG驱动程序通过连接器的不同或者不否有NHP交换设备的工作方式来决定使用USB主机栈还是USB设备栈。
当OTG两用设备以主机方式工作时,USB主机栈工作。其中的主机控制器驱程序负责USB 主机栈与硬件端点的数据交换,USB驱动程序枚举并保存设备的信息,目标外设主机类驱动程序支持目标设备列表里的设备。主机类驱动程序由芯片制造商提供,同时,OTG提供通用的主机类驱动程序(可以修改以用于非通用设备)。
当OTG两用设备以从机方式工作时,USB设备栈工作。其中的设备控制器驱动程序负责USB设备栈与硬件端点的数据交换,USB协议层负责处理USB协议规范,设备类驱动程序的功能取决于该两用设备的功能(如数码照相机、存储设备、打印机等)。
OTG驱动程序负责处理两用OTG设备的工作方式转换,同时,它还可以返回其结果(如设备是否支持HNP)并处理总线错误。应用层程序通过OTG驱动程序开始或者结束一个传输事务,通过USB主机栈或设备栈与硬件层交换数据。OTG两用设备的驱动程序栈配置见图3。
5 数据流模型
OTG主机和设备被划分为功能层、USB设备层和USB接口层三个不同层次,见图4。
USB接口层为OTG主机和OTG设备提供物理连接,USB系统软件使用主机控制器来管理主机与USB设备的数据传输。USB系统软件相对于主机控制器而言,处理的是以客户角度观察的数据传输及客户与设备的交互。USB设备层为USB主机系统软件提供一个可用的逻辑设备。主机通过与之功能匹配的客户软件实现其各种功能。
OTG设备与以往的USB设备一样的两种通道:数据流通道和消息通道。数据流通道没有定义好的结果,而消息通道则有固定的结构。但是,每个通道都有一定的带宽、传输类型、传输方向和缓冲区大小。自供电设备配置一个默认的控制通道,由它提供该设备的配置和状态等信息。
USB OTG规范是USB2.0规范的补充而不是替代品。PC主机和标准外设并没有被取代,因为新的OTG仅适用于需要具有主机功能和更小体积的便携式设备。OTG在这些外设间引入了点对点的(point-to-point)通信方式,这使得便携式仪器的发展有了更加广阔的空间。USB OTG已受到Cypress等芯片供应商、软件开发商和设备制造商的广泛支持,OTG不久将会成为新一代的“移动计算”解决方案。