USB设备枚举失败:"设备描述符读取/ 64,错误-32"

Sha*_*han 8 linux usb microcontroller linux-kernel embedded-linux

我正在使用ST微控制器开发一个ttyACM设备,并且使用相同的代码,我的主机有时可以成功地枚举它(下面),但有时它只是转储下面的消息.错误-32是什么意思?

[未能注册]

usb 1-2.1: new full speed USB device number 62 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 63 using ehci_hcd
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: device descriptor read/64, error -32
usb 1-2.1: new full speed USB device number 64 using ehci_hcd
usb 1-2.1: device not accepting address 64, error -32
usb 1-2.1: new full speed USB device number 65 using ehci_hcd
usb 1-2.1: device not accepting address 65, error -32
hub 1-2:1.0: unable to enumerate USB device on port 1
Run Code Online (Sandbox Code Playgroud)

[成功结果]

usb 1-3.1: new full speed USB device number 45 using ehci_hcd
usb 1-3.1: New USB device found, idVendor=0483, idProduct=5740
usb 1-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-3.1: Product: ChibiOS/RT Virtual COM Port
usb 1-3.1: Manufacturer: HelloWord
usb 1-3.1: SerialNumber: 262
usb 1-3.1: configuration #1 chosen from 1 choice
cdc_acm 1-3.1:1.0: This device cannot do calls on its own. It is not a modem.
cdc_acm 1-3.1:1.0: ttyACM0: USB ACM device
Run Code Online (Sandbox Code Playgroud)

非常感谢.

use*_*113 6

AFAIK状态-32表示"断管"(EPIPE).这意味着usb通信(协议)存在问题.例如,usb-device无法正确回答usb请求,并发送一些主机不期望的数据或发送的数据不足.可能还有其他原因.

第一条消息告知来自主机的"获取设备描述符"和"设置地址"请求存在问题.这些是主机在枚举过程开始时发送的基本请求.如果这些请求无法通过usb-device成功提供服务,那么您无法继续前进.