【问题标题】:Reporting Status Results for Control Transfers报告控制转移的状态结果
【发布时间】:2018-08-17 03:46:34
【问题描述】:

考虑USB 2.0 specification 的第 8.5.3.1 节:

控制写入传输在状态阶段事务的数据阶段返回状态信息。

对于控制写入,主机向控制管道发送一个 IN 令牌以启动状态阶段。功能 以握手或零长度数据包进行响应以指示其当前状态。

在 IN 事务中,握手是由主机而不是设备完成的!

问题是:设备如何为 IN 交易发送握手?

【问题讨论】:

    标签: usb


    【解决方案1】:

    在 IN 事务中,握手是由主机而不是设备完成的!

    我相信有一些误解。

    设备在 IN 事务(控制写入)的握手阶段发送 NAK/STALL 如果在状态阶段没有数据包。

    如果有来自函数的数据包对应于IN令牌,该函数在发送数据包后期望来自主机的ACK握手。

    状态阶段的数据包是零长度包。

    这是问题中的场景说明:

    参见 cmets 中的链接。

    【讨论】:

    • 你知道设备可以向IN令牌发送握手的USB规范中的什么地方吗?设备可能只为 IN 令牌发送握手,还是也为 OUT 令牌发送握手? (似乎 SETUP 令牌必须始终具有数据阶段,但同样,在答案中引用 USB 规范会很棒......)
    • @IgorLiferenko 您的问题引用了规范。 “主机向控制管道发送一个 IN 令牌以启动状态阶段。该函数以握手响应”
    • 设备必须向 OUT 令牌发送握手。对于 IN 令牌,设备可以选择发送长度为零的数据包或 ACK 握手。这就是您在问题中引用的规范所说的内容。
    • 我的意思是对交换过程如何完成的一般描述,而不是从上下文中推断出来的东西。如果我找到相关的报价,我会编辑答案。
    • beyondlogic.org/usbnutshell/usb4.shtml - 你问的是这个吗?请随时编辑最适合该问题的答案。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2014-05-31
    • 2023-03-03
    • 2021-01-20
    相关资源
    最近更新 更多