[U-Boot] [RFC] ARM: U-boot and 2 GiB of ram with get_ram_size only being long
Wolfgang Denk
wd at denx.de
Fri Oct 18 23:53:40 CEST 2013
Dear Scott,
In message <1382130258.7979.896.camel at snotra.buserror.net> you wrote:
>
> > This is NOT a better approach. Reading the memory controller just
> > tells you what is supposed to be there, i. e. what you programmed into
> > the controller. get_ram_size() shows you what is _actually_ there,
>
> That may be useful with simpler memory controllers where there isn't
> much to get wrong other than size, but on modern DDR controllers you're
> pretty screwed anyway if you don't know what's actually there. If you
The standard approach here is to go through all expected memory
configurations...
> don't get the size right, what are the odds you got the timing right?
> We hard code a lot of other things in U-Boot such as the address of
> various I/O...
You sound as if you were proud of that? I don't think this is any
special kind of "acchievement".
> And if RAM is socketed (or the board designer was nice enough to include
> it with non-socketed RAM), the information should be coming from SPD
> EEPROMs, not hardcoded in the U-Boot image.
Agreed - but then, still, get_ram_size() is a pretty efficient test if
your memory is actually working as expected. Even DIMMs with SPD
EEPROMs tend to fail every now and then. And when you know you have
fit a 1 GB module, and U-Boot recognizes only 128 MB, you might start
to think...
> > get_ram_size() is a very efficient memory test that detects 95% or
> > more of all RAM related hardware issues.
>
> So call it something like test_ram_simple() and bound it by the maximum
Actually the _primary_ function is the memory sizing. The testimg is
just a pleasant side effect.
> amount of RAM that you expect to be there, so you don't accidentally
> touch I/O. For RAM beyond 2G, either leave it untested or use the MMU
> to test it, but don't tell the rest of the system that RAM beyond that
> doesn't exist. For RAM that ends on a non-power-of-2 (below 2G), do one
> final test at the end of the supplied size.
Patches welcoem :-)
> And if the test finds missing/bad RAM below the supplied limit, the
> caller should generally make noise that there's a problem rather than
> just use less RAM.
Well, it reports the working RAM size. You can check that, if you
like.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
A wise man asks himself the reason for his mistakes, while a fool
will ask others.
More information about the U-Boot
mailing list