USB标准提到在某些情况下写“零长度”数据包。
任何人都可以解释USB术语中“零长度”数据包的含义吗?
什么是“短包”? (似乎一起提到“短包”和“零长度包”)
答案 0 :(得分:2)
这两个术语都用于交易完成机制。 数据包的最大大小可以从存储在端点描述符中的 bMaxPacketSize 派生。当数据包小于该数据包时,其称为短包。 同样,当您可以发送长度为零的数据包时。
现在的问题是“为什么”。让我们讨论一下。
短包的原因 -
1 - 根据USB规范,当主机或设备接收数据时 数据包长度小于最大数据包大小的数据包应该 考虑传输已完成,不再需要数据包 接收。
2 - 批量传输(大容量存储设备)始终如此。 您并不总是询问MaxPacketSize的长度倍数的数据。所以 最后一个数据包总是小于最大数据包大小。考虑你 想从最大数据包大小为的批量端点获取1025字节的数据 1024字节。
第一数据包= 1024字节秒数据包= 1字节(短 包)。
这样主机就会知道数据传输已经完成。
零长度数据包的原因 -
1 - 与短数据包一样,零长度数据包也用于事务 完成。考虑您要发送2048字节的批量数据。
第一个数据包= 1024个字节第二个数据包= 1024个字节。
现在的问题是,两者都等于最大数据包大小。该设备将 不明白转移是否完整。然后你发一个零 长度包。
第三个数据包= 0个字节
这将使传输完成,然后设备可以启动 处理数据。
2 - 零长度数据包也用于状态期间的控制传输 通知成功完成的阶段。