STM32MP135烧录避坑实录用STM32CubeProgrammer USB模式搞定TF-A、OP-TEE和U-Boot第一次接触STM32MP135的开发者往往会在烧录环节遇到各种意想不到的问题。本文将带你完整走一遍从编译输出到成功启动的全过程重点解决USB模式烧录中的典型痛点。不同于常规教程的平铺直叙这里会真实还原我在实际操作中踩过的坑特别是那个令人困惑的USB PHY初始化报错问题。1. 烧录前的文件准备与检查在开始烧录前确保你已准备好以下关键文件。这些文件通常位于FIP_artifacts目录中是之前编译TF-A、OP-TEE和U-Boot的输出结果tf-a-stm32mp135-atk-usb.stm32USB模式专用tf-a-stm32mp135-atk-emmc.stm32eMMC启动用fip-stm32mp135-atk-optee.bin包含OP-TEE和U-Boot的FIP包metadata.bin元数据文件常见遗漏检查清单确认tf-a-stm32mp135-atk-usb.stm32确实存在很多人只编译了eMMC版本检查fip-stm32mp135-atk-optee.bin的生成时间是否最新验证文件路径是否与后续TSV脚本中的引用一致特别注意不同开发板厂商的命名可能略有差异比如atk可能替换为其他前缀务必保持文件名与实际一致。2. TSV烧录脚本的编写技巧创建stm32mp135-atk-emmc-optee.tsv文件时Tab分隔是成败关键。以下是典型脚本内容示例#Opt Id Name Type IP Offset Binary - 0x01 fsbl1-boot Binary none 0x0 arm-trusted-firmware/tf-a-stm32mp135-atk-usb.stm32 - 0x03 fip-boot FIP none 0x0 fip/fip-stm32mp135-atk-optee.bin P 0x04 fsbl1 Binary mmc1 boot1 arm-trusted-firmware/tf-a-stm32mp135-atk-emmc.stm32 P 0x05 fsbl2 Binary mmc1 boot2 arm-trusted-firmware/tf-a-stm32mp135-atk-emmc.stm32 P 0x06 metadata1 Binary mmc1 0x00080000 arm-trusted-firmware/metadata.bin P 0x07 metadata2 Binary mmc1 0x00100000 arm-trusted-firmware/metadata.bin P 0x08 fip-a FIP mmc1 0x00180000 fip/fip-stm32mp135-atk-optee.bin PED 0x09 fip-b FIP mmc1 0x00580000 none PED 0x0A u-boot-env Binary mmc1 0x00980000 noneTSV脚本编写注意事项使用纯文本编辑器如VS Code而非Word/记事本确保每列之间是单个Tab字符而非空格第一行的列标题必须保留路径引用要相对于TSV文件所在目录3. STM32CubeProgrammer操作全流程硬件准备将开发板拨码开关设为000USB启动模式连接USB Type-C到开发板的USB_OTG接口按住复位键后上电软件操作步骤打开STM32CubeProgrammer选择USB连接方式点击左上角号添加TSV脚本在File path中选择FIP_artifacts目录点击Download开始烧录典型问题排查表现象可能原因解决方案无法识别USB设备驱动未安装安装STM32 Bootloader驱动烧录中途失败电源不稳定使用独立5V/2A电源供电TSV解析错误格式错误用hex编辑器检查Tab分隔4. USB PHY初始化报错深度分析在成功烧录后启动时可能会看到如下警告stm32-usbphyc usbphyc5a006000: Cant get phy-supply regulator clk_register: failed to get ck_usbo_48m device (parent of usbo_k)这个现象其实涉及STM32MP135的USB PHY初始化机制双阶段初始化第一次初始化在TF-A阶段此时时钟树可能未完全配置电源管理phy-supplyregulator可能尚未就绪后续成功原因U-Boot阶段会重新初始化USB PHY此时系统时钟已稳定临时解决方案# 在U-Boot配置中增加以下参数 CONFIG_PHY_STM32_USBPHYCy CONFIG_USB_DWC2y虽然这个报错看起来令人担忧但实际测试发现不影响USB烧录功能不影响后续系统启动第二次初始化成功后USB功能完全正常这个问题可能与特定版本的TF-A/U-Boot配置有关建议关注ST官方GitHub的更新。我在实际项目中发现使用2023年后的SDK版本此问题出现概率会显著降低。