Embedded linux 加载较大rootfs时U-boot tftp ramdisk错误陷阱

Embedded linux 加载较大rootfs时U-boot tftp ramdisk错误陷阱,embedded-linux,bootloader,u-boot,ramdisk,Embedded Linux,Bootloader,U Boot,Ramdisk,我用39.8MB的u-boot ramdisk映像在我的主板上引导内核。它成功地启动了。当我尝试另一个大小为74.7MB的u-boot映像时,ramdisk的加载地址发生了变化,并给出了相应的设置 '正在将Ramdisk加载到ff8c0000,结束03fffd63。。。电脑上的错误陷阱:7fef8cb0' 板挂起时带有“####错误#####请重置板##” 使用tftp引导时使用的命令: tftp 30000000 uImage.bin tftp 32000000 DTB.dtb tftp 40

我用39.8MB的u-boot ramdisk映像在我的主板上引导内核。它成功地启动了。当我尝试另一个大小为74.7MB的u-boot映像时,ramdisk的加载地址发生了变化,并给出了相应的设置

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

板挂起时带有“####错误#####请重置板##”

使用tftp引导时使用的命令:

tftp 30000000 uImage.bin
tftp 32000000 DTB.dtb
tftp 40000000 rootfs.ext2.gz.u-boot
bootm 30000000 40000000 32000000
我还尝试了不同的tftp地址。 情况依然如此

我怎样才能解决这个问题

编辑:完整控制台日志:

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

正在以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。。。电脑上的错误陷阱: 7fef8cb0,SR:0

NIP:7FEF8CB0 XER:20000000 LR:7FF16C60寄存器:7faedae0陷阱:0d00 DAR:ffffffc

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

GPR00:00000003 7FAEDBD0 7FAED98 FF8C0000 4073F038 0473FD60 FFFFF 000 5E2AE23B GPR08:DE633873 000000 20 0000000 1 7FAEDBE0 7FFCB808 08200800 7FAF52E8 00000000 GPR16:00000000 00000000 306CF3A6 300000000 00000001 300000400000000 7FF957A8 GPR24:7FAF533C 7FFCB6FC 7FFCB718 40000040 04000000 7FFCB6F8 7FF78540 0473FD63回拨跟踪:7FFCB6F8 7FF176CC 7FF0D9D4 7FEFA26C 7FF1B088 7FF0BC44 7FF0BE08 7FF0C3B8 7FF1A664 内核pc中的7FF09CDC 7FF0CC4 7FF4FF3C 7FF0D1D0 7FEF1040异常 7fef8cb0信号0

错误###请重置电路板###


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

0x32000000 - 0x30000000 = 0x2000000 = 33554432
因此,在加载设备树时,您正在覆盖内核映像


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

到目前为止,我了解的是

'电脑故障陷阱:7fef8cb0'

7fef8cb0几乎等于1998995945GB,Ramdisk的起始地址似乎是ff8c0000,几乎等于3992919922GB


为什么U-boot要为~70 MB的ramdisk映像安排如此多的内存?

您是否看到了文件系统装载中的问题?内核加载成功吗?Ramdisk执行地址为ff8c0000。这个地址是您自己配置的吗?74.7 MB的文件系统可能会因此地址溢出。在RAM上装载文件系统时,我遇到了此问题。内核正在成功加载,但在下一步中会发生此错误。ff8c0000自动给出。是的,也许这就是原因,但我不明白为什么。39.8文件系统位于不同的位置。74.7位于ff8c0000。扩大此内存区域或更改ff8c0000的方法是什么?能否更改内核引导参数“ramdisk_size=(以KB为单位)将ramdisk_大小增加到74.7 MB以上。“ramdisk_size”变量的位置在哪里?根据我的演示板文件。nor闪存中rootfs的最大值为43 mb,也许他们将此变量的最大值安排为64 mb。也许将其增加到128MB是可行的。嗯,但是当我使用~39MB rootfs尝试此设置时,它成功引导。这有什么意义呢?很明显,在39MB内存中,您也在覆盖内核映像的一部分。如果未使用修改后的代码,您可能无法立即观察到错误。更改地址可以解决您原来的问题吗?您好,不,它还没有更改原来的问题。在地址ff8c0000和03fffd63之间,ff8c0000-03fffd63的面积不大于~79MB。我仍然不明白为什么会出现坏陷阱。