首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于USB控制传输的零长度数据包

用于USB控制传输的零长度数据包
EN

Stack Overflow用户
提问于 2022-02-27 08:31:09
回答 1查看 194关注 0票数 0

在DFU驱动程序的上下文中,我试图用长度为零的数据包(而不是最大大小的倍数,仅为零字节)来响应传输中的USB控件。但是,主机返回时具有超时条件。我尝试了这两种方法,dfu工具和相应的协议,以及一个使用pyusb的最小工作示例,它只是在传输某种长度的控制和不返回数据的设备上发出一个控制。

我的关键问题是:我是通过使用NAK响应来实现这一点,还是应该将端点设置为有效但没有任何数据?规范对此相当模糊,国际海事组织。

以下是一些技术细节,因为我不知道问题出在哪里:

  • 主机: Linux内核5.16.10,dfu-util和pyusb (大概)都使用libusb 0.1.12
  • 设备:带有ChibiOS 21.11.1 USB堆栈的STM32L1 (在上述情况下发送NAK,我还试图修改它以发送零长度数据包,但没有成功)
EN

回答 1

Stack Overflow用户

发布于 2022-02-28 07:23:23

听起来,您正在对设备的固件进行编程,当主机启动控件读取传输时,您希望您的设备给出一个0字节长的响应。

您不能简单地发送NAK令牌:当数据尚未准备好时,设备就是这样做的,这会导致主机稍后再试一次读取数据。

实际上,您必须向主机发送一个0长度的IN数据包。当主机接收到此数据包时,它会看到数据包小于最大数据包大小,因此它知道控制传输的数据阶段已经完成,并进入状态阶段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71283267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档