如果主机正在发送视频流,USB 主机何时应将零长度数据包 (ZLP) 发送到 OUT 批量管道功能

问题描述 投票:0回答:1

我正在为 USB 2.0 FS 主机设备编写固件,该设备通过批量管道、ppp 模式与 LTE 调制解调器进行通信。当主机将数据流式传输到设备时,我对 ZLP 的用例有点不确定。如果我要发送一个文件并且文件大小 % maxPacketsize == 0,我假设我在文件的最后一个字节之后发送 ZLP。在我通过 ppp“连接”到主机并传输数据的情况下,是否需要 ZLP?或者我应该为长度为 % maxPaketSize == 0 的每个 ppp 帧发送 ZLP?

谢谢

pipe usb host bulk
1个回答
0
投票

当您通过批量端点发送数据时,您必须假设接收方不会立即对数据采取行动,而是对其进行缓冲,直到缓冲区已满或检测到发送方暂时没有更多数据。

后一个是 ZLP 数据包发挥作用的地方。 “没有更多数据”是用比端点声明的最大数据包大小短的 USB 数据包来指示的。

因此,在应用程序软件处理每个单独的 USB 数据包的裸机系统(而不是 Linux、macOS、Windows 系统)上,通常会在数据包已成功发送并且 USB 外设准备就绪时通知应用程序代码。接受下一个数据包。在这样的代码中,如果前一个数据包等于最大数据包大小,并且您无法立即提交下一个数据包(因为没有其他数据可供传输),您应该发送 ZLP。

在成熟的操作系统上,操作系统通常会处理此问题,并且不会让您控制单个 USB 数据包。

© www.soinside.com 2019 - 2024. All rights reserved.