2013-10-25 52 views
2
  1. 同步端点是单向的。但是单个同步IN传输在各种源(例如,这里为http://www.beyondlogic.org/usbnutshell/usb4.shtml#Isochronous)中被描述为一个IN令牌分组(从主机到设备),随后是一个DATA分组(从设备到主机)。所以我在这里看到两个方向的沟通。来自主机的令牌包是否由相同的IN等时端点接收到,然后发送的数据?
  2. 什么是同步?这里:http://wiki.osdev.org/Universal_Serial_Bus#Supporting_Isochronous_Transfers我们阅读:“由于应用特定的采样率,不同的硬件时钟设计,操作系统中的调度策略甚至物理异常,主机和等时设备可能会失去同步。”但是如何?我理解这样的事件序列:设备使用数据填充它的传出缓冲区,并等待令牌(可能有一些中断)。主机发送令牌包,并等待数据包,这(我认为)应该立即到达。序列每帧重复(@ F.S。),每个人都很开心。令牌数据包是否不同步来自设备的回复?
  3. Here http://wiki.osdev.org/Universal_Serial_Bus#SYNC_Field我们读到:“所有的USB数据包都以一个SYNC字段开头,SYNC字段作为接收者和发送者之间的同步机制服务,不出所料。所以我再次问:为什么要以另一种方式同步等时传输?

回答

4
  1. 所有的USB交易总是由主机发起。例如。对于同步IN事务,主机将首先向设备请求下一条数据。这当然是设备的数据流,但是在较低的协议级别(令牌包)上。因此,一种控制数据被发送到设备,但有意义的数据(数据包)仅从设备发送(IN方向)。当您为设备开发软件时,通常可以抽象出总线协议细节,因为它们是在硬件(USB设备外设)中处理的。低级别消息不会进入端点。端点位于较高层。

  2. 考虑一个USB麦克风:它以基于本地振荡器的特定采样率记录音频数据。主机和麦克风的时钟会漂移只是时间问题。几分钟后,数据中会出现间隙(或缓冲区溢出),因为麦克风以稍微不同的速度记录数据,然后USB会从设备的配置描述符中获取数据。所以他们需要某种同步。

  3. SYNC字段位于最底层。这是唯一的位同步,不应与同步端点同步(2)

你可能想看看官方USB 2.0 Specification(usb_20.pdf),而不是所有的第三方混淆维基是哪种让你困惑的。