gpt4 book ai didi

linux - 同步 USB 传输困惑

转载 作者:太空狗 更新时间:2023-10-29 11:45:20 25 4
gpt4 key购买 nike

  1. 同步端点只是一种方式。但是单个同步 IN 传输在各种来源(例如此处 http://www.beyondlogic.org/usbnutshell/usb4.shtml#Isochronous)中被描述为一个 IN token 数据包(从主机到设备)后跟一个 DATA 数据包(从设备到主机)。所以我在这里看到了双向的交流。来自主机的 token 数据包是否由同一个 IN 同步端点接收,然后发送数据?
  2. 什么是同步?这里:http://wiki.osdev.org/Universal_Serial_Bus#Supporting_Isochronous_Transfers我们读到:“由于特定于应用程序的采样率、不同的硬件时钟设计、操作系统中的调度策略,甚至是物理异常,主机和同步设备可能会失去同步。”但是怎么办?我理解这样的事件顺序:设备用数据填充其传出缓冲区,并等待 token (可能有一些中断)。主机发送 token 包,并等待数据包,(我认为)应该立即到达。每帧重复序列 (@F.S.),每个人都很开心。 token 包不是同步设备的回复吗?
  3. 在这里 http://wiki.osdev.org/Universal_Serial_Bus#SYNC_Field我们读到:“所有 USB 数据包都以 SYNC 字段开头,毫不奇怪,它用作接收方和发送方之间的同步机制。”所以我再一次问:为什么要用另一种方式同步同步传输?

最佳答案

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

  2. 以 USB 麦克风为例:它使用非常特定的采样率记录音频数据,该采样率基于设备的本地振荡器。主持人和麦克风的时钟会漂移只是时间问题。几分钟后,数据中会出现间隙(或会发生缓冲区溢出),因为麦克风正在以与 USB 期望的速度(来自设备的配置描述符)略有不同的速度记录数据。所以他们需要某种同步。

  3. SYNC 字段位于最低层。它仅用于位同步,不应与等时端点的同步混淆 (2.)

你可能想看看官方USB 2.0 Specification (usb_20.pdf) 而不是让您感到困惑的所有第三方维基。

关于linux - 同步 USB 传输困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19593420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com