This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: iPAQ RAM problem


On Fri, 2002-08-09 at 08:00, Craig Vanderborgh wrote:
> Hello Gary:
> 
> Could you possibly say a few more words about this, in particular
> about the mechanism by which "Redboot tells Linux how much
> RAM is available?"
> 
> Thanks in advance,
> craig vanderborgh
> voxware incorporated
> 
> Gary Thomas wrote:
> > 
> > On Thu, 2002-08-08 at 16:38, Craig Vanderborgh wrote:
> > > Hello All:
> > >
> > > I am trying to run Linux (kernel 2.4.16-rmk1) from Redboot.  I now
> > > have the system booting up correctly and PCMCIA and other things
> > > are working.  Unfortunately, Linux sees only 16MB of my H3760's
> > > 64MB of RAM.  Is this a Redboot problem, or a Linux kernel issue?
> > 
> > Yes, RedBoot tells Linux how much RAM is available.
> > 
> > You can try rebuilding RedBoot to tell it you have 64MB.  You'll
> > have to edit:
> >   ecos/packages/hal/arm/sa11x0/ipaq/current/include/pkgconf/mlt_arm_sa11x0_ipaq_rom.h
> >   ecos/packages/hal/arm/sa11x0/ipaq/current/include/pkgconf/mlt_arm_sa11x0_ipaq_rom.ldi
> > 
> > (the changes should be obvious and are left to the reader :-)
> > 
> > Note: I'd probably try this by building a RAM RedBoot first and make
> > sure everything is kosher and then switch to ROM.  Of course, you'll
> > end up editing the mlt...rom.* files.

eCos (and hence RedBoot) are static systems.  The amount of RAM on
the device is set by configuration, when the software is built.  
Currently, the ipaq configuration is based on the older 3650 (which
I have) that only has 16M available.

When RedBoot runs the Linux kernel, part of the 'exec' command
process builds a data structure which is passed on to the kernel.
This data structure contains things like the command line, etc.
It also contains data about the size and location of RAM on the
unit.  This way, the Linux kernel doesn't need to know anything
about discovering such resources - it just gets them from the
bootstrap software.  Since the RedBoot you are using thinks the
unit only has 16M, that's what it tells Linux.

You could update RedBoot to support the full 64M.  I've not tested
this, but it should work just fine.  [caveat - since we've not tested
this, there may be a little tweaking to be done]

Alternatively, I think you can just tell the Linux kernel how much
ram there is, via the command line.  Try adding "mem=64m" to your
Linux kernel command line and see if it works.  That would be the
simplest [work-around].

-- 
------------------------------------------------------------
Gary Thomas                  |
eCosCentric, Ltd.            |  
+1 (970) 229-1963            |  eCos & RedBoot experts
gthomas@ecoscentric.com      |
http://www.ecoscentric.com/  |
------------------------------------------------------------


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]