单片机/MCU论坛
直播中

甘满盛

7年用户 1273经验值
擅长:386660
私信 关注
[问答]

在Ubuntu 20.04上使用USB 3时遇到了FX3无法枚举的情况,怎么解决?

我们正在开发基于 FX3 的 UVC 应用程序,在 Ubuntu 20.04 上使用 USB 3 时遇到了 FX3 无法完成枚举的问题。 在附带的 Wireshark 捕获帧 79 中,可以看到设备描述器请求响应只包含了应包含的 18 个字节中的 8 个字节。 描述符内容包括正确的长度 18,但响应中没有包含该数据。 FX3 固件将描述符创建为一个常量变量 "CyFxUSB30DeviceDscr",该值仅在 CyU3PUsbSetDesc API(参数 "CY_U3P_USB_SET_SS_DEVICE_DESCR, 0, (uint8_t *)CyFxUSB30DeviceDscr`) 中使用。在 Ubuntu 20.04 中是否存在任何已知问题,或者枚举无法完成的原因?
我们在使用 Ubuntu 18.04 时没有遇到这个问题。 USB2 可以正常工作。 我还附上了 FX3 插入 Ubuntu 20.04 机器后枚举失败的 UART 调试日志。

回帖(1)

hsdou月半

2024-7-26 17:29:39
要解决在Ubuntu 20.04上使用USB 3时遇到的FX3无法枚举的问题,我们可以按照以下步骤进行排查和解决:

1. **检查USB 3.0驱动**:首先确保Ubuntu 20.04系统已经正确安装了USB 3.0驱动。可以通过以下命令检查驱动状态:
   ```
   lsmod | grep xhci_hcd
   ```
   如果没有输出,说明驱动可能未正确安装。可以通过以下命令安装驱动:
   ```
   sudo apt-get install linux-modules-extra-$(uname -r)
   ```

2. **检查USB端口**:确保USB端口是USB 3.0端口,而不是USB 2.0端口。可以通过查看主板手册或在线资源来确认。

3. **检查FX3固件**:确认FX3固件是否正确编译和烧录。检查固件中的描述符是否正确设置。你提到的描述符问题可能是固件中的一个错误。请确保固件中的描述符设置正确,例如:
   ```c
   const uint8_t CyFxUSB30DeviceDscr[] = {
       0x12, // bLength
       0x01, // bDescriptorType
       0x00, // bcdUSB - LSB
       0x02, // bcdUSB - MSB
       0xef, // bDeviceClass
       0x02, // bDeviceSubClass
       0x01, // bDeviceProtocol
       0x40, // bMaxPacketSize0
       0x83, // idVendor - LSB
       0x04, // idVendor - MSB
       0x00, // idProduct - LSB
       0x00, // idProduct - MSB
       0x00, // bcdDevice - LSB
       0x01  // bcdDevice - MSB
   };
   ```

4. **检查CyU3PUsbSetDesc API调用**:确保在固件中正确调用了CyU3PUsbSetDesc API。检查参数是否正确传递,例如:
   ```c
   CyU3PUsbSetDesc(CY_U3P_USB_SET_SS_DEVICE_DESCR, 0, (uint8_t *)CyFxUSB30DeviceDscr);
   ```

5. **检查USB线缆**:尝试更换USB线缆,以排除线缆故障的可能性。

6. **检查电源供应**:确保FX3设备和计算机的电源供应充足且稳定。

7. **检查操作系统设置**:在某些情况下,操作系统设置可能会影响USB设备的枚举。尝试在不同的操作系统版本或不同的计算机上测试FX3设备。

8. **查看日志**:通过查看系统日志,可以获取更多关于枚举失败的信息。可以使用以下命令查看日志:
   ```
   dmesg | grep -i usb
   ```


举报

更多回帖

发帖
×
20
完善资料,
赚取积分