[U-Boot] Kernel loading and memory layout

Jerry Van Baren gerald.vanbaren at ge.com
Wed Jan 21 13:34:10 CET 2009


Vinay Venkataraghavan wrote:
> Greetings,
> 
> I am new to using uboot but have gone through the code to a certain
> degree but still have some questions.
> 
> 1. Where does uboot transfer control to the linux kernel. By this I
> mean which file in the source code would I look for this.
> 
> Would it for example be in :  arch/powerpc/boot and in one of the
> assembly language files?

You could start with the "bootm" command in common/cmd_bootm.c and read 
its logic and comments (just skim the code and comments till you get to 
the end where it does the transfer to the loaded program).

> 2. I went through and did a lot of reading on how grub loads a linux kernel. 
> 
> Is the memory layout of uboot similar to that of grub. If not, how
> and where do I find more information on how does uboot layout the
> memory and where is the real-mode portion of the kernel loaded and
> where is the protected mode portion of the kernel loaded etc.

It is totally different from grub.  Grub is a second++ stage bootloader 
that runs after the PC-BIOS does the first stage initialization and 
loads grub.

U-Boot is generally the first and only bootloader (booting from NAND 
flash requires a very compact, simple first stage bootloader, which 
makes u-boot a second stage bootloader).

U-Boot loads the linux kernel in RAM where ever you tell it to and then 
jumps to the linux kernel entry point.  The linux kernel, on start up, 
relocates itself to where *it* wants to live and then proceeds.

>    Any pointers to the source code would greatly help.
> 
> Any other information to get me started along these lines would be of great help.
> 
> Thank you.
> Vinay

Best regards,
gvb


More information about the U-Boot mailing list