USB 集线器在请求描述符时停滞



我从一个 Atmel Start 项目开始:

我的目标是将 USB 集线器连接到此演示板: SAM V71 超解释型超级评估套件

问题是 atmel 没有提供集线器驱动程序,他们也没有回答我们关于这个问题的问题。因此,我一直在尝试根据 msc 和他们提供的其他驱动程序编写一个。

目前,我在连接 USB 集线器时遇到问题。当我发送类型为 DEVICE 的GET_DESCRIPTOR请求时,它返回一个停顿。这对我来说似乎很奇怪,因为其他 USB 设备(例如闪存驱动器或 USB 到串行转换器(不会回复 STALL 相同的请求。实际上,闪存驱动器会经历整个枚举过程和msc安装,以便我可以成功地读取和写入驱动器。

我通过管道处理器的失速处理部分中设置的单个断点来检测失速。

我一直在阅读通用串行总线 规范修订版 2.0,但我找不到从集线器与其他设备读取描述符的方式之间存在任何差异。我不明白为什么会发送一个摊位来回复GET_DESCRIPTOR请求。

谢谢

以防万一这对其他人有用。 我遇到的问题显然是由编译器优化设置引起的。 具体来说,我将此设置更改为:"无(-O0(",将其更改回默认值后,我在枚举USB设备时没有问题。 优化配置图片

我的同事发现这一点是因为一个看似无关的问题导致了芯片上的硬故障和总线故障,这些问题也通过切换回 -O1 来修复。似乎 -O0 需要与颗粒盐一起使用,或者根本不在这个芯片上使用。

最新更新