This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3352: Kernel location in memory

Part Number: AM3352


Tool/software: Linux

Hi, 

I am using sdk 3.3.0.4. in board/u-boot/include/configs/ti_armv7_common.h, there is description as following. 

"

/*

 * Our DDR memory always starts at 0x80000000 and U-Boot shall have

 * relocated itself to higher in memory by the time this value is used.

 * However, set this to a 32MB offset to allow for easier Linux kernel

 * booting as the default is often used as the kernel load address.

 */

#define CONFIG_SYS_LOAD_ADDR  0x82000000

What's the reason for 32MB offset? Since  we only has 64MB memory total, loading at 32MB seems dumb. My question is, what the “constraints” are, and is there a more appropriate place to load linux? For example, it would seem to me that linux should be loaded as low as possible in memory, such as 8KB above the base, to allow for IRQ handlers in the first 8K.  Is that any problem with this approach?

Further questions : the EVM loads the FDT file at 128MB offset (obviously impossible for our 64MB memory), and the ramdisk at 128MB+512KB. So, what does the kernel do with the FDT after it has booted? Would it make more sense to load it (before) the kernel, in the (so-called) empty space? Also, what is the ramdisk for? I suspect it may be a pre-created image of the linux filesystem, stored in SPI-flash. Is it correct?

Thanks.