[U-Boot] bootm command: is there any load address limitation for fdt?

Hi,
I am using u-boot version 2008.10 + git commit 13d36ec849785453953d00220b2c7dc66644a3c2
The board is a custom MPC8360E, similar to MPC8360EMDS from freescale.
My DDR-SDRAM is at address 0x0 - 0x1FFFFFFF
I am trying to limit the amount of memory needed to load and boot a linux kernel (2.6.26)
to do this I loaded my fdt at address 0x20_0000 and uImage at 0x_30_0000
When I run bootm, I both the kernel and fdt passed their checksum tests, and then I got this error.
ERROR: image is not a fdt - must RESET the board to recover.
However, if I loaded my fdt at address 0x40_0000 and uImage at 0x50_0000, bootm works fine.
Is there a reason why fdt must be loaded at a specific offset from the start of RAM?
Thank you for all your time
- Richard Retanubun.

Dear Richard Retanubun,
In message 49404A1C.1070801@RuggedCom.com you wrote:
I am trying to limit the amount of memory needed to load and boot a linux kernel (2.6.26) to do this I loaded my fdt at address 0x20_0000 and uImage at 0x_30_0000
When I run bootm, I both the kernel and fdt passed their checksum tests, and then I got this error. ERROR: image is not a fdt - must RESET the board to recover.
...so the uncompressed Linux kernel image was written on top of your FDT image, corrupting it.
However, if I loaded my fdt at address 0x40_0000 and uImage at 0x50_0000, bootm works fine.
Makes sense.
Is there a reason why fdt must be loaded at a specific offset from the start of RAM?
Yes, there is - you need free space to load the uncompressed Linux kernel to low memory.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote:
Dear Richard Retanubun,
In message 49404A1C.1070801@RuggedCom.com you wrote:
I am trying to limit the amount of memory needed to load and boot a linux kernel (2.6.26) to do this I loaded my fdt at address 0x20_0000 and uImage at 0x_30_0000
FWIIW, your FDT blob should be a whole lot less than 1MB, like 4K-16K. I've taken to loading it 0x8000 (32K) before my linux image.
[snip Wolfgang's diagnosis of the overwrite problem]
Best regards, gvb

Jerry Van Baren wrote:
Wolfgang Denk wrote:
Dear Richard Retanubun,
In message 49404A1C.1070801@RuggedCom.com you wrote:
I am trying to limit the amount of memory needed to load and boot a linux kernel (2.6.26) to do this I loaded my fdt at address 0x20_0000 and uImage at 0x_30_0000
FWIIW, your FDT blob should be a whole lot less than 1MB, like 4K-16K. I've taken to loading it 0x8000 (32K) before my linux image.
[snip Wolfgang's diagnosis of the overwrite problem]
Dear Wolfgang and Jerry,
D'oh! I forgot that my uImage is compressed. Thank you for the prompt diagnosis.
My FDT blob is a whole lot less than 1MB, thanks for the 32K recommendation.
- Richard Retanubun.
participants (3)
-
Jerry Van Baren
-
Richard Retanubun
-
Wolfgang Denk