通过uuu烧录toradex imx8mp-verdin时,板卡进入initramfs之后uuu主机通过fbk无法与板卡通信

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


您好,感谢您提供详细的问题描述和排查信息。

根据您的描述,板卡在通过 UUU 烧录时进入 initramfs,但 /sys/class/udc 目录中没有 UDC 设备,且 dmesg 显示 dwc3 38100000.usb: Configuration mismatch, dr mode forced to gadget 以及 deferred probe pending。这说明 USB 设备控制器(UDC)相关的驱动或者依赖没有正确启动,导致 fastboot gadget 无法初始化。

针对您的情况,以下是排查和可能的解决方向:


1. 内核配置(Kconfig)确认

您提到已打开了 gadget 相关的内核配置,但请确保以下项全部开启并在 initramfs kernel 就绪:

  • CONFIG_USB_DWC3(Enable DWC3 core support)
  • CONFIG_USB_DWC3_GADGET(DWC3 Gadget only mode)
  • CONFIG_USB_GADGET
  • CONFIG_USB_FASTBOOT
  • CONFIG_USB_CONFIGFS
  • CONFIG_USB_GADGET_VBUS_DRAW
  • CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS
  • 以及与 i.MX8MP 板级相关的 PHY 支持(如 CONFIG_PHY_FSL_IMX8MQ_USB 等)

建议通过 zcat /proc/config.gz | grep DWC3 等命令在线确认上述配置项。


2. 设备树相关

  • 确认设备树节点(如 usb@38100000)的 dr_mode 设置为 "peripheral",而不是 "host""otg"
  • 检查 DWC3 节点下是否有完整定义了 required properties,包括:
    • dr_mode = “peripheral”;
    • status = “okay”;

参考 Toradex Verdin iMX8MP 相关设备树文档 进行对照。


3. 依赖模块和芯片供电

  • dmesg 中 deferred probe 通常是因为依赖的器件还未 ready(如 PHY 还没初始化)。
  • 检查对应 USB PHY 的节点(如 usbphy@382f0040)是否正确 enable 且 status = “okay”。
  • 可尝试在 u-boot 或 kernel log 中排查上游 probe 为什么被 defer,是否因为缺乏 regulator/power-domain/clock 等依赖。

4. OTG/ID Pin/Type-C 配置

  • 如果是 Type-C OTG 口,确认相关的 extcon 或 connector 驱动加载了吗。
  • 检查是否需要 uboot/early initramfs 里做 usb mode force(一部分板卡可能要求强制配置为 device/peripheral)。

5. initramfs 文件/驱动是否完整

  • 建议使用来自 Toradex 官方 Yocto 的 initramfs(即 fsl-image-mfgtool-initramfs-verdin-imx8mp.cpio.gz.u-boot),确保所有 gadget 相关驱动集成进入镜像。
  • 检查 /lib/modules/$(uname -r)/ 下模块是否都存在。
  • 如果有模块被裁剪/未编进内核,需要补齐。

6. 测试命令

烧录流程准备好后,UUC/fastboot 服务应自动运行、或者您创建 gadget 后可以手动执行 fastboot 二进制看死否监听上 USB(lsusb 可以验证 host 侧是否发现 gadget 设备)。

  • ls /sys/class/udc 应显示如 38100000.usb
  • 可以执行 lsmoddmesg | grep usb,观测相关驱动是否装载。

典型补充/改动举例

设备树片段示例:

usb@38100000 {
    dr_mode = "peripheral";
    status = "okay";
};
usbphynop@382f0040 {
    status = "okay";
};

参考文档


总结

请重点排查设备树相关(dr_mode/peripheral)、USB PHY 依赖、电源与时钟、内核模块配置(DWC3 及 Gadget 相关),修正 deferred probe 问题后应可看到 UDC 并正常进入 fastboot 模式。如还有具体的 dmesg 日志、设备树片段等,也欢迎补充一起分析。

如仍无法解决,欢迎补充更多信息。希望上述方案对您的调试有帮助!

Best regards, Toradex AI Assistant.