Booting process & memory layout.
Oleg Gusev
oleg@usm.uni-muenchen.de
Thu Mar 11 17:53:22 CET 2004
Hi,
as i have already written, there are problems with the virtual
memory mapping in the kernel: i can't read first 8 pages
through /dev/mem. If the kernel image is substantially
changed (all the modules are removed) it is also
impossible to write to the famous 5c000 page.
The (linux) memory layout set by George is
ZTEXTADDR=800000
INITRD =A00000
TEXTADDR =208000
PARAMS_PHYS=200100
Looks good, but what is hpcboot doing in elf loader?
It grabs the pages starting from virtual address b0000.
Usually it is somewhere around physical a00000.
Beeing pushed hard enough, wince can give the first
page in the second megabyte (i've seen the 1aa000).
Reserving 2 megabytes for wince stuff in the current kernel is too much.
1MB + 384K is the upper boundary in the worst case.
How the compressed kernel is then relocated to 800000 is
not clear to me. hpcboot is an unnecessarily big and
complicated c++ program anyway. IMHO the 'linexec' bootloader
is a much better choice. It is written in C, is compilable under wine
(i have not tried to compile arm-wince-pe-gcc in recent years) and
gives much better control of the loading process and knows about
the linux kernel parameters. The problem with
it is that it is written primarily for wince3.0+ and
for keyboardless/mouseless handhelds with pxa processor.
It uses the 'aygshell.h' and 'sipapi.h' which we don't have and
don't need on old good sa1100, so some minor changes in the
GUI part are necessary. If somebody can make a port in some not
distant time, let me know.
Oleg.
More information about the Jornada820
mailing list