STM32MP157a自定义开发板Yocto项目启动异常排查求助
问题
手上有一块基于STM32MP157a芯片的本地厂商自定义开发板(非ST官方开发板),学习Yocto项目时,基于基础Yocto编译了core-image-full-cmdline镜像,在local.conf中设置machine为stm32mp1,按教程烧录镜像到SD卡(分区确认无误),但启动时卡在U-Boot阶段,日志如下:
NOTICE: CPU: STM32MP157AAC Rev.B NOTICE: Model: STMicroelectronics STM32MP157A-DK1 Discovery Board INFO: PMIC version = 0x21 INFO: Reset reason (0x15): INFO: Power-on Reset (rst_por) INFO: FCONF: Reading TB_FW firmware configuration file from: 0x2ffe2000 INFO: FCONF: Reading firmware configuration information for: stm32mp_io INFO: Using SDMMC INFO: Instance 1 INFO: Boot used partition fsbl1 NOTICE: BL2: v2.6-stm32mp1-r2.0(debug):v2.6-dirty(a1f02f4f) NOTICE: BL2: Built : 13:14:26, Nov 23 2021 INFO: BL2: Doing platform setup INFO: RAM: DDR3-DDR3L 16bits 533000kHz INFO: Memory size = 0x20000000 (512 MB) INFO: BL2: Loading image id 1 INFO: Loading image id=1 at address 0x2ffff000 INFO: Image id=1 loaded: 0x2ffff000 - 0x2ffff226 INFO: FCONF: Reading FW_CONFIG firmware configuration file from: 0x2ffff000 INFO: FCONF: Reading firmware configuration information for: dyn_cfg INFO: FCONF: Reading firmware configuration information for: stm32mp1_firewall INFO: BL2: Loading image id 4 INFO: Loading image id=4 at address 0x2ffc5000 INFO: Image id=4 loaded: 0x2ffc5000 - 0x2ffd9820 INFO: BL2: Skip loading image id 8 INFO: BL2: Skip loading image id 9 INFO: BL2: Loading image id 2 INFO: Loading image id=2 at address 0xc0500000 INFO: Image id=2 loaded: 0xc0500000 - 0xc051cdf8 INFO: BL2: Loading image id 16 INFO: Loading image id=16 at address 0x2ffc0000 INFO: Image id=16 loaded: 0x2ffc0000 - 0x2ffc44d2 INFO: BL2: Loading image id 5 INFO: Loading image id=5 at address 0xc0100000 INFO: Image id=5 loaded: 0xc0100000 - 0xc01ece88 NOTICE: BL2: Booting BL32 INFO: Entry point address = 0x2ffc5000 INFO: SPSR = 0x1d3 NOTICE: SP_MIN: v2.6-stm32mp1-r2.0(debug):v2.6-dirty(a1f02f4f) NOTICE: SP_MIN: Built : 13:14:26, Nov 23 2021 INFO: ARM GICv2 driver initialized INFO: Set calibration timer to 60 sec INFO: stm32mp1 IWDG1 is secure INFO: ETZPC: CRYP1 (9) could be non secure INFO: SP_MIN: Initializing runtime services INFO: SP_MIN: Preparing exit to normal world U-Boot 2021.10-stm32mp-r2 (Oct 04 2021 - 15:09:26 +0000) CPU: STM32MP157AAC Rev.B Model: STMicroelectronics STM32MP157A-DK1 Discovery Board Board: stm32mp1 in trusted mode (st,stm32mp157a-dk1) DRAM: 512 MiB Clocks: - MPU : 650 MHz - MCU : 208.878 MHz - AXI : 266.500 MHz - PER : 24 MHz - DDR : 533 MHz WDT: Started with servicing (32s timeout) NAND: 0 MiB MMC: STM32 SD/MMC: 0 Loading Environment from MMC... *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Previous ADC measurements was not the one expected, retry in 20ms **************************************************** * ERROR USB TYPE-C connection in unattached mode * * Check that USB TYPE-C cable is correctly plugged * * Current too low, use a 3A power supply! * ****************************************************
想知道问题出在哪里,遗漏了哪些步骤,是否需要为自定义板开发专属BSP才能正常运行?
分析与解决建议
核心问题:复用了官方开发板的硬件配置
日志显示BL2和U-Boot均识别当前板为STM32MP157A-DK1 Discovery Board,但你的自定义板在电源电路、外设布局等硬件设计上和官方板存在差异,直接使用官方stm32mp1机器配置必然出现兼容性问题。当前启动卡住的直接原因:电源检测逻辑不匹配
日志末尾的USB Type-C供电报错,是因为U-Boot的电源检测逻辑是针对DK1开发板设计的,自定义板的电源电路(比如供电能力、ADC采样参数)与官方板不同,导致U-Boot误判供电异常,进而中断启动流程。必须补充的关键步骤
- 优先获取厂商提供的适配BSP:联系本地厂商索要该自定义板的Yocto BSP层,里面包含适配好的U-Boot、TF-A(BL2/BL32)配置及设备树,这是最快解决问题的方式。
- 无厂商支持时自行适配BSP:
- 基于官方
meta-st-stm32mp层,创建自定义机器配置(例如命名为stm32mp1-custom); - 修改U-Boot和TF-A的板级配置,适配自定义板的DDR参数、电源检测逻辑、外设引脚等硬件参数;
- 编写或修改设备树文件,匹配自定义板的硬件布局;
- 在
local.conf中设置MACHINE = "stm32mp1-custom"后重新编译镜像。
- 基于官方
- 临时调试方案(仅验证启动):若需快速验证系统能否启动,可修改U-Boot源码,注释掉USB Type-C供电检测的报错逻辑,重新编译U-Boot并烧录,但这只是临时 workaround,长期必须完成硬件适配。
结论:自定义板必须使用适配的专属BSP才能正常运行,直接复用官方开发板的配置无法兼容硬件差异。
内容的提问来源于stack exchange,提问作者radium88
相关产品推荐
相关产品推荐

