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

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

环境:toradex yocto scarthgap

内核:6.6.74

设备树:imx8mp-verdin-nonwifi-mallow.dts

initramfs:fsl-image-mfgtool-initramfs-verdin-imx8mp.cpio.gz.u-boot(来自toradex yocto)或者fsl-image-mfgtool-initramfs-imx_mfgtools.cpio.zst.u-boot(来自LF_v6.12.3-1.0.0_images_IMX8MPEVK)

目前线索:uuu.pdf-> FBK: Android fastboot protocol, implement at initramfs. See project imx-uuc ,需要在/init中手动挂载以下脚本并获取udc设备手动启动fastboot监听,来源:imx-uuc->linuxrc

mount -t sysfs none /sys
mount -t proc none /proc
mount -t devtmpfs none /dev
mount -t configfs none /sys/kernel/config

UDC_DIR=/sys/class/udc
GADGET_NAME=g1

while true; do*
if [ “$(ls -A $UDC_DIR)” ]; then
for udc in $UDC_DIR/*; do
udc_name=$(basename $udc)

如果 gadget 目录不存在,创建 gadget

if [ ! -d /sys/kernel/config/usb_gadget/$GADGET_NAME ]; then
mkdir -p /sys/kernel/config/usb_gadget/$GADGET_NAME
cd /sys/kernel/config/usb_gadget/$GADGET_NAME

echo 0x1fc9 > idVendor # NXP Vendor ID
echo 0x0152 > idProduct # Product ID,按需修改

mkdir -p strings/0x409
echo “0123456789” > strings/0x409/serialnumber
echo “NXP” > strings/0x409/manufacturer
echo “FBK Gadget” > strings/0x409/product

mkdir -p configs/c.1
echo 120 > configs/c.1/MaxPower
mkdir -p functions/fastboot.0
ln -s functions/fastboot.0 configs/c.1/

绑定 UDC

echo $udc_name > UDC
fi

gadget 已启动,进入 shell 等待连接

exec /bin/sh
done
else
echo “No UDC found, retry after 5 seconds”
sleep 5
fi
done

细节问题:目前挂载/sys之后还是不能获取到udc设备,在内核中打开了以下设备以及dwc3 platform还是不能找到udc中的设备,设备树暂时还未修改,dmesg报错dwc3未正常启动

Device Drivers
USB support
USB gadget support (very last entry)
Mass storage
Function filesystem (functionFS
HID Gadget
USB Physical Layer drivers
Freescale MXS USB PHY support

sh-5.2# dmesg
[11.750414] dwc3 38100000.usb: Configuration mismatch, dr mode forced to gadget
[11.766399] platform 38100000.usb:deferred probe pending

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.

Hi @gaotao , we don’t officially support flashing image by uuu tool. Toradex Easy Installer is recommended for such a purpose as well as massive programming. I notice that the same question was also asked on NXP Community. Let’s wait for NXP’s’ input.

OK,感谢你的回复!