zoukankan      html  css  js  c++  java
  • More about STALL

    http://fx.damasgate.com/more-about-stall/

    In other USB classes, a sender can indicate the end of a transfer
    by transmitting a short packet, which is a data packet that contains
    zero data bytes or any quantity fewer than wMaxPacketSize.

    The mass-storage class is unique in its use of the STALL handshake
    to end bulk transfers. In contrast, mass-storage devices
    use STALL for this purpose 
    and to respond to other error conditions.

    After a bulk endpoint returns STALL, the endpoint is in the halt condition.
    To resume communications with the endpoint, the host must issue a Clear
    Feature(ENDPOINT_HALT) control request with the endpoint’s address
    in the Setup transaction’s wIndex field.

    Endpoint zero can also use the STALL handshake. On receiving a
    Get Max LUN request, a device with a single LUN may return a STALL
    to indicate that the device doesn’t support the command.
    The endpoint resumes normal operation on receiving a new Setup transaction.

    A mass-storage device must stall one or both bulk endpoints in these situations:

    If a device sends less than the requested amount of data in the data-transport phase,
    the device must stall the bulk IN endpoint.

    If a received CBW isn’t valid, the device must stall the bulk IN endpoint and must
    either stall the bulk OUT endpoint
    or accept and discard any received data on the endpoint.

    On experiencing an internal error that requires a reset, a device must
    either stall the endpoint being used in any data transfer in progress and set bCSWStatus = 02h
    or stall the bulk IN and bulk OUT endpoints until a reset recovery.

    A mass-storage device may stall a bulk endpoints in these situations:
    If a device expects to send more data than the host specified in the CBW,
    after sending the requested quantity of data,
    the device may stall the bulk IN endpoint.

    If a device expects to receive a different quantity of
    data than the host specified in the CBW,
    the device may stall the bulk OUT endpoint.

    If a device determinines that it can’t complete a command
    during the data-transport phase, the device may stall
    the bulk IN or bulk OUT endpoint as appropriate.

    The thirteen cases described below have more about
    the use of STALL with mass-storage commands.

    Thirteen Cases for Any Situation
    The mass-storage bulk-only transport specification spells out
    how the host and device should behave after the host sends a command
    in each of thirteen cases.

    Cases 1, 6, and 12 (in bold) are the normal cases,
    where the host and device each expect the same quantity
    and direction of data transfer in the data-transport phase.

    The other cases are situations where the host and device have differing expectations.

     

  • 相关阅读:
    js 第四课
    斐波那契数列(Fibonacci)(递归,非递归)(动态规划,自顶向下,自底向上)
    八种方法计算字符串中特定字符的数量
    谁做对了?
    数组问题
    关于“ORA12988: 无法删除属于 SYS 的表中的列”
    两条路,此人如何问甲乙问题?才能走向京城
    学了快二月的Nhibernate
    温故知新,把牢基础~
    用键盘选择复选框
  • 原文地址:https://www.cnblogs.com/shangdawei/p/3163430.html
Copyright © 2011-2022 走看看