工具/软件:Linux
我们希望在 TI uboot 中启用 USB 2.0 (B 外设)。
但它总是失败的。 (USB 1.1正常)
我们的 USB 器件是 fastboot 协议。
在 Linux PC 中、该器件将成为未知器件。
但是、如果我们将其设置为 USB 1.1、一切都很好。
它现在在 Get 设备描述符上阻止。
在 DUT 被设置为寻址后,Get 设备描述符将出现错误。
[设备日志] Device_uart_log.txt
intx:0x1、intrax:0x0、intrausb:0x8、ep0_state:0x0
csr0:0x1、faddr:0xc len:0x8
ep0_recv_setup device->device_state:0x5
ep0_endpoint->sent:0x12 ep0_话 术-> actual_length:0x12
MUSB _ep0_TX_READY_AND_LAST
intx:0x1、intrax:0x0、intrausb:0x8、ep0_state:0x0
csr0:0x5、faddr:0xc len:0x0
intx:0x0、intrax:0x0、intrausb:0xc、ep0_state:0x0
UDC IRQ MUSB_INTR_RESET
intx:0x1、intrax:0x0、intrausb:0x8、ep0_state:0x0
csr0:0x1、faddr:0x0 len:0x8
错误:musb_perI_ep0_idle 地址与 SW 12与 HW 0不匹配
[PC log] PC_Linux_kmsg.txt
[262.550584] USB 1-1:器件描述符读取/全部、错误-71
下面是我的 USB 描述符。
/* USB 描述符*/
静态结构 USB_device_descriptor device_descriptor ={
.bLength = sizeof (struct USB_device_descriptor)、
bDescriptorType = USB_DT_DEVICE、
.bcdUSB = CPU_TO_le16 (0x0200)、
.bDeviceClass = 0x00、
.bDeviceSubClass = 0x00、
.bDeviceProtocol = 0x00、
.bMaxPacketSize0 = 0x40、
idVendor = cpu_TO_le16 (CONFIG_USBD_VendorID)、
idProduct = CPU_TO_le16 (CONFIG_USBD_ProductID)、
bcdDevice = CPU_TO_le16 (USBFBT_BCD_device)、
.iManufacturer = STR_Manufacturer、
iProduct = STR_PRODUCT、
iSerialNumber = STR_serial、
.bNumConfigurations = NUM_CONFIGs
};
我不知道为什么 PC 获取描述符失败。
USB 描述符看起来正常。
Darkhou