Re: Booting Linux Kernel without bootloader

From: Milton Miller <hidden>
Date: 2006-08-03 18:29:34

On Thu Aug  3 2006 11:49:24 AM CDT, David H. Lynch Jr. wrote:
 Grant Likely wrote:
 >
 > I've got a similar situation on my Virtex-4 platform.  The FPGA takes
 > care of all device initialization.  However, the kernel is loaded of a
 > CF card via a *slow* JTAG interface.  Loading an uncompressed image is
 > more time consuming than loading a compressed image and uncompressing
 > it in software.
 >
  
     I am working with the Pico E-12. It is a CF formfactor device. It
 has only a pseudo Parallel/Jtag
     interface exported through the >  CF connector Pico calls the Keyhole
 Port, and A UartLite, and TEMAC off some mini connector.
     Pico has their own "monitor" program that fits in 32K of ram inside
 the FPGA that loads and executes ELF files (or FPGA bit images)
     from a very simple FileSystem (basically a linked list). Then they
 have Host software to Read/Write the Flash, update files in Flash, ...
     that works primarily through the Keyhole.
 
     I just build the Kernel as an ELF file, update the ELF File in Flash
 and tell it to boot that file and away it goes.

The kernel requires some data be passed to it via both memory (the
device tree struct) and registers (pointer to same and a bit), or registers
set and a client interface.  You don't want the later.  See
Documentation/powerpc/booting-without-of.txt. 

If loading from the filesystem is faster than decompressing and copying
the image to place, and the loader supports multiple load segments, 
defined entry points, and loading to address 0, then you could construct 
an elf that is the kernel load segment, the device tree, and an entry point 
that sets the few registers and jumps to the kernel.  Generating such an 
image would still belong to the boot directory.

A zImage based compressed image may still be faster.

milton
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help