
On Tue, Feb 02, 2021 at 09:28:20AM +0100, Matthias Brugger wrote:
On Thu, Jan 28, 2021 at 04:54:03PM +0800, Jian-Hong Pan wrote:
Load u-Boot environment ... from mmc 0:2 622 bytes read in 24 ms (24.4 KiB/s) Load device tree ... 25693 bytes read in 30 ms (835.9 KiB/s) fdt_addr_r @ 0x02600000 , size= 645d Load kernel and unzip it ... 13013555 bytes read in 574 ms (21.6 MiB/s) Uncompressed size: 38742528 = 0x24F2A00 kernel_addr_r @ 0x00080000 , size= 24f2a00 Load RAM disk ... 54360540 bytes read in 2298 ms (22.6 MiB/s) ramdisk_addr_r @ 0x02700000 , size= 33d79dc Boot ... Moving Image from 0x80000 to 0x200000, end=2820000 ERROR: RD image overlaps OS image (OS=0x200000..0x2820000) SCRIPT FAILED: continuing... Card did not respond to voltage select! genet@7d580000 Waiting for PHY auto negotiation to complete........
It shows error: "RD image overlaps OS image (OS=0x200000..0x2820000)"
So, I calculated the memory address and space:
0x200000 (kernel start address) + 0x24F2A00 (kernel size) = 0x26F2A00 < 2820000 (kernel end), but > 0x2700000 (ramdisk start address) & > 0x2600000 (FDT start address)
The kernel image size 0x24F2A00 bytes is too fat to sit in the memory space prepared by U-Boot and overlaps ramdisk and FDT's memory spaces. It is more than 36.9MB, which is over 36MB mentioned in U-Boot's comment [2].
If I did the math right, we should have a lot of space left. You could try to bump up fdt_addr_r=0x02900000 and ramdisk_addr_r=0x02A00000 and see what happens.
The environment section in include/configs/rpi.h needs to be updated. You cannot disable device tree relocation by default as that leads to problems. You need to set bootm_size to something that will cover all of the valid lowmem area the device tree and initrd can reside in. Please see include/configs/ti_armv7_common.h which is based on what the kernel documents as minimum / maximum values / locations. Thanks.