针对LX2160ARDB上UEFI启动失败的问题,以下是逐步排查与解决方案:
1. 确认启动模式设置
- 检查拨码开关SW7设置:确保设置为XSPI启动模式。对于Rev2板,SW7[1-4]需设为
0010(XSPI 32-bit)或 0100(XSPI 16-bit)。参考手册确认正确配置。
- 验证QIXIS切换:执行
qixis_reset altbank后,通过qixis_print命令确认启动源已切换至XSPI的备用Bank。
2. 验证UEFI固件
- 确认镜像适用性:确保下载的
firmware_lx2160ardb_rev2_xspiboot_uefi.img与硬件版本完全匹配。检查NXP文档确认镜像支持您的EMMC和内存型号(UDIMM 18ADF2G72AZ-3G2E1)。
- 校验镜像完整性:比对下载镜像的哈希值(如SHA256)与NXP提供的是否一致,避免下载损坏。
3. 正确烧写XSPI
- 擦除与写入步骤:
=> sf probe 0:0 # 初始化SPI Flash
=> sf erase 0x0 +0x1000000 # 擦除整个XSPI区域(根据实际大小调整)
=> tftp ${loadaddr} firmware_lx2160ardb_rev2_xspiboot_uefi.img
=> sf write ${loadaddr} 0x0 ${filesize} # 写入镜像
确保loadaddr无冲突,且写入地址与XSPI布局匹配(通常从0x0开始)。
4. DDR初始化问题
- 检查DDR配置:UEFI/BL2需正确配置DDR参数。对比LSDK的DDR设置(位于
drivers/ddr/fsl),确认频率、时序与UDIMM兼容。
- 更新RCW:若使用自定义RCW,确保包含正确的DDR初始化代码。参考NXP示例调整
lx2160ardb_xspi_rcw.cfg。
5. 调试与日志收集
- 串口日志:连接串口查看完整启动日志,定位卡在DDR PMU的具体阶段。
- JTAG调试:若支持,使用JTAG工具(如Lauterbach)捕获更早阶段的异常,分析BL2或DDR初始化失败原因。
6. 构建环境检查
- 代码版本:确保UEFI代码与LSDK-21.08兼容,或尝试更新至最新版本修复潜在问题。
- 配置参数:构建时指定正确的目标(如
lx2160ardb-rev2),并在设备树中确认内存节点与SPI Flash配置正确。
7. 硬件排查
- SPI Flash检测:在U-Boot中执行
sf probe,确认能正确识别Flash型号和容量。
- 电源与连接:检查板子供电稳定,SPI芯片焊接无虚焊。
替代方案
若问题仍未解决,可尝试:
- 从SD卡启动UEFI:将UEFI镜像写入SD卡,测试是否为XSPI硬件问题。
- 使用预编译镜像:换用NXP提供的其他版本(如LSDK-20.12)排除构建环境干扰。
通过以上步骤,应能定位并解决UEFI启动卡住的问题。若仍存在异常,建议在NXP社区提交详细日志和配置以获取进一步支持。
针对LX2160ARDB上UEFI启动失败的问题,以下是逐步排查与解决方案:
1. 确认启动模式设置
- 检查拨码开关SW7设置:确保设置为XSPI启动模式。对于Rev2板,SW7[1-4]需设为
0010(XSPI 32-bit)或 0100(XSPI 16-bit)。参考手册确认正确配置。
- 验证QIXIS切换:执行
qixis_reset altbank后,通过qixis_print命令确认启动源已切换至XSPI的备用Bank。
2. 验证UEFI固件
- 确认镜像适用性:确保下载的
firmware_lx2160ardb_rev2_xspiboot_uefi.img与硬件版本完全匹配。检查NXP文档确认镜像支持您的EMMC和内存型号(UDIMM 18ADF2G72AZ-3G2E1)。
- 校验镜像完整性:比对下载镜像的哈希值(如SHA256)与NXP提供的是否一致,避免下载损坏。
3. 正确烧写XSPI
- 擦除与写入步骤:
=> sf probe 0:0 # 初始化SPI Flash
=> sf erase 0x0 +0x1000000 # 擦除整个XSPI区域(根据实际大小调整)
=> tftp ${loadaddr} firmware_lx2160ardb_rev2_xspiboot_uefi.img
=> sf write ${loadaddr} 0x0 ${filesize} # 写入镜像
确保loadaddr无冲突,且写入地址与XSPI布局匹配(通常从0x0开始)。
4. DDR初始化问题
- 检查DDR配置:UEFI/BL2需正确配置DDR参数。对比LSDK的DDR设置(位于
drivers/ddr/fsl),确认频率、时序与UDIMM兼容。
- 更新RCW:若使用自定义RCW,确保包含正确的DDR初始化代码。参考NXP示例调整
lx2160ardb_xspi_rcw.cfg。
5. 调试与日志收集
- 串口日志:连接串口查看完整启动日志,定位卡在DDR PMU的具体阶段。
- JTAG调试:若支持,使用JTAG工具(如Lauterbach)捕获更早阶段的异常,分析BL2或DDR初始化失败原因。
6. 构建环境检查
- 代码版本:确保UEFI代码与LSDK-21.08兼容,或尝试更新至最新版本修复潜在问题。
- 配置参数:构建时指定正确的目标(如
lx2160ardb-rev2),并在设备树中确认内存节点与SPI Flash配置正确。
7. 硬件排查
- SPI Flash检测:在U-Boot中执行
sf probe,确认能正确识别Flash型号和容量。
- 电源与连接:检查板子供电稳定,SPI芯片焊接无虚焊。
替代方案
若问题仍未解决,可尝试:
- 从SD卡启动UEFI:将UEFI镜像写入SD卡,测试是否为XSPI硬件问题。
- 使用预编译镜像:换用NXP提供的其他版本(如LSDK-20.12)排除构建环境干扰。
通过以上步骤,应能定位并解决UEFI启动卡住的问题。若仍存在异常,建议在NXP社区提交详细日志和配置以获取进一步支持。
举报