0

我从一个 Atmel Start项目开始:

我的目标是将 USB 集线器连接到此演示板: SAM V71 Xplained Ultra 评估套件

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

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

我正在通过管道处理程序的 STALL 处理部分中设置的单个断点检测失速。

我一直在阅读通用串行总线规范 Rev 2.0,但我找不到从集线器与其他设备读取描述符的方式之间的任何区别。而且我不明白为什么会发送一个 STALL 来回复 GET_DESCRIPTOR 请求。

谢谢

4

1 回答 1

0

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

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

于 2018-09-05T15:37:21.377 回答