Booting process & memory layout.

Oleg Gusev
Thu Mar 11 17:53:22 CET 2004


  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

  INITRD          =A00000
  TEXTADDR  =208000

  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.


More information about the Jornada820 mailing list