Xilinx ZU5自定义PCB上A53内核启动失败:是否为硬件问题?
ZU5自定义PCB启动Linux内核故障排查分析
现象对比
- ZU9EG ZCU102开发板:使用相同设备树可正常启动Linux 5.15.19,能检测到PSCI v1.1
- ZU5自定义PCB:启动报错后触发内核panic,关键日志:
OF: fdt: Invalid device tree blob header
Failed to find device node for boot cpu
Unable to initialise architected timer
全程未检测到PSCI
故障根源定位与验证步骤
1. 先排除设备树加载的硬件传输问题
OF: fdt: Invalid device tree blob header 说明内核接收的DTB数据存在损坏或格式错误,优先排查硬件环节:
- 检查启动介质(SD卡/QSPI Flash)的硬件连接:确认SD卡数据线阻抗匹配、QSPI时钟信号完整性,劣质连接易导致DTB传输时出现比特错误
- 核对BOOT模式配置:确保ZU5的BOOT引脚配置与ZCU102一致(如均为SD卡启动),错误的BOOT模式会导致UBOOT加载DTB异常
- UBOOT内验证DTB完整性:执行命令
fdt addr <dtb_addr>; crc32 <dtb_addr> <dtb_size>,将校验值与ZCU102上的结果对比,若不一致则说明DTB在存储/传输过程中损坏,需排查存储介质硬件可靠性
2. 验证PSCI与CPU节点初始化问题
Failed to find device node for boot cpu和PSCI未检测到的关联问题:
- 核对ATF适配配置:ZU5与ZU9EG的PSCI依赖ARM Trusted Firmware(ATF),需确认自定义板的ATF是否针对ZU5编译(指定正确的平台参数、CPU核数、中断控制器配置)
- 检查CPU电源域硬件:确认ZU5的A53核心电源域正常上电,若电源引脚虚焊、电源芯片输出电压异常,会导致CPU核心无法初始化,进而无法识别CPU节点与PSCI
- 排查GIC中断控制器连接:架构定时器依赖GIC中断信号,若GIC信号线焊接不良、阻抗不匹配,会导致定时器初始化失败
3. 定位架构定时器panic的直接原因
Unable to initialise architected timer是最终panic触发点,需结合前置问题验证:
- 检查系统时钟配置:架构定时器时钟源来自PS时钟树,确认自定义板的时钟芯片输出(如PS_REF_CLK的频率、电平)符合ZU5规格,错误时钟会导致定时器无法正常计数
- UBOOT内测试定时器:执行
timer test命令,若UBOOT中定时器也无法工作,基本可确定是时钟或定时器模块的硬件问题
结论判定
若满足以下条件,可确认故障由硬件问题导致:
- UBOOT内DTB校验值与ZCU102一致,排除DTB传输损坏
- 更换适配ZU5的ATF后,仍无法识别PSCI与CPU节点
- UBOOT定时器测试失败,或CPU电源/时钟硬件检测存在异常
反之,若更换ATF、修正BOOT配置后故障消失,则属于软件/配置问题。
内容的提问来源于stack exchange,提问作者rbe
相关产品推荐
相关产品推荐

