首页 > 解决方案 > 加载较大的 rootfs 时 U-boot tftp ramdisk Bad Trap

问题描述

我正在使用 39.8 MB 的 u-boot ramdisk 映像在我的板上启动内核。它启动成功。当我尝试另一个 74.7 MB 大小的 u-boot 映像时,加载 ramdisk 的地址更改及其提供

'正在将 Ramdisk 加载到 ff8c0000,结束 03fffd63... PC 上的错误陷阱:7fef8cb0'

并且电路板挂起'###ERROR ### 请重置电路板###'

我用于通过 tftp 引导的命令:

tftp 30000000 uImage.bin
tftp 32000000 DTB.dtb
tftp 40000000 rootfs.ext2.gz.u-boot
bootm 30000000 40000000 32000000

我还尝试了不同的 tftp 地址。场景保持不变。

我该如何解决这种情况?

编辑:完整的控制台日志:

=> bootm 30000000 40000000 32000000 警告:将可用内存调整为 30000000

从 Legacy Image 以 30000000 启动内核...

镜像名称:Linux-4.19.26+gc0c2141

映像类型:PowerPC Linux 内核映像(gzip 压缩)

数据大小:7140198 字节 = 6.8 MiB

加载地址:00000000

入口点:00000000

验证校验和...确定

从 40000000 的旧映像加载 init Ramdisk ...

镜像名称:core-image-x11-t1042d4rdb-64b-20

映像类型:PowerPC Linux RAMDisk 映像(未压缩)

数据大小:74710371 字节 = 71.2 MiB

加载地址:00000000

入口点:00000000

验证校验和...确定

32000000 处的扁平设备树 blob

使用 0x32000000 处的 fdt blob 引导

解压缩内核映像...确定

将 Ramdisk 加载到 ff8c0000,结束 03fffd63 ... PC 上的错误陷阱:7fef8cb0,SR:0

NIP:7FEF8CB0 XER:20000000 LR:7FF16C60 REGS:7faedae0 TRAP:0d00 DAR:FFFFEFFC

MSR:00021200 EE:0 PR:0 FP:0 ME:1 IR/DR:00

GPR00: 00000003 7FAEDBD0 7FAEDE98 FF8C0000 4073F038 0473FD60 FFFFF000 5E2AE23B GPR08: DE633873 00000020 00000001 7FAEDBE0 7FFCB808 08200800 7FAF52E8 00000000 GPR16: 00000000 00000000 306CF3A6 30000000 00000001 30000040 00000000 7FF957A8 GPR24: 7FAF533C 7FFCB6FC 7FFCB718 40000040 04000000 7FFCB6F8 7FF78540 0473FD63 Call backtrace: 7FFCB6F8 7FF176CC 7FF0D9D4 7FEFA26C 7FF1B088 7FF0BC44 7FF0BE08 7FF0C3B8 7FF1A664 7FF09CDC 7FF0CCC4 7FF4FF3C 7FF0D1D0 7FEF1040 内核 pc 7fef8cb0 信号 0 中的异常

错误###请重置板###

标签: embedded-linuxbootloaderu-bootramdisk

解决方案


您正在 0x30000000 处加载内核映像。之后,您将在 0x30000000 处加载设备树。

0x32000000 - 0x30000000 = 0x2000000 = 33554432

因此,在加载设备树时,您将覆盖内核映像。

如果不使用 0x3f000000 和 0x40000000 之间的区域,则为设备树选择 0x3f000000 应该可以解决您的问题。


推荐阅读