我已经开始了一个Atmel Start项目:
我的目标是将USB集线器连接到此演示板: SAM V71 Xplained Ultra Evaluation Kit
问题在于atmel不提供集线器驱动程序,他们还没有回答我们对此的疑问。因此,我一直试图根据他们提供的msc和其他驱动程序编写一个驱动程序。
当前,当我连接USB集线器时遇到问题。当我发送DEVICE类型的GET_DESCRIPTOR请求时,它将返回一个STALL。这对我来说很奇怪,因为其他USB设备(例如闪存驱动器或USB到串行转换器)不会对同一请求回复STALL。实际上,闪存驱动器经历了整个枚举过程和msc安装,因此我可以成功读取和写入驱动器。
我正在通过在管道处理器的STALL处理部分中设置的单个断点检测停顿。
我一直在阅读Universal Serial Bus Specification Rev 2.0,但是我发现从集线器与其他设备读取描述符的方式之间没有任何区别。而且我不明白为什么会发送一个STALL来响应GET_DESCRIPTOR请求。
谢谢
答案 0 :(得分:0)
以防万一这对其他人有用。我遇到的问题显然是由编译器优化设置引起的。具体来说,我已将此设置更改为:“无(-O0)”,将其更改回默认值后,枚举USB设备没有问题。 Picture of Optimization configuration
我的同事发现这是因为一个看似无关的问题,该问题导致了芯片上的硬件故障和总线故障,这些故障也可以通过切换回-O1来解决。看来-O0需要在该芯片上与盐一起使用或根本不使用。