j820 boot process

Faré fahree@gmail.com
Wed Oct 27 11:53:41 CEST 2004


In a private email, Oleg asked me:

> PS. Think about the description of the wrap-up of vmlinux for hpcboot.exe
>        for dummies (i.e. me). This j820 subdirectory has no place in the
>        official kernel anyway.

I agree that once we have a real linux boot loader, this subdirectory
may go away.
Here's the description of the magic in it.

bootimage/linux/kernel26/arch/arm/boot/j820
contains three files, as invoked from
bootimage/linux/kernel26/arch/arm/Makefile
in line
j820:;  $(Q)$(MAKE) $(build)=$(boot) $(boot)/j820/j820

the Makefile specifies that a (compressed) kernel and a (probably
compressed) ramdiskimage are to be concatenated, thanks to a ldscript
j820.lds, into an image bootable by hpcboot, with init.S being the
lead code to be jumped into, followed by initrd image and by kernel.

It is important that initrd should be *before* the kernel, because the
standard way for an ARM kernel to decompress is to use the space that
follows the in-RAM compressed image as a BSS.

init.S detects the amount of available memory in bank 3 (if any), sets
up kernel parameters (registers and ATAGs), and jumps into the kernel.
In other words, it completes the tasks that hpcboot doesn't perform
for actually loading a linux kernel.

Image is loaded at 0xc0800000 (8MB into bank 0), as specified in
j820.lds. Parameters are stored at PARAMS_PHYS, as defined (along with
other stuff that may or may not go away) in arm/boot/Makefile, and
initialized in init.S (using the params symbol defined by
j820/Makefile)

Is there anything else you need to know?

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
The hacker: someone who figured things out and made something cool happen.
        -- Alan Schmitt


More information about the Jornada820 mailing list