[U-Boot] hi, I could not understand the memsize.c, somebody help me?
IaMaPlAyEr
iamaplayer at gmail.com
Mon Jun 29 10:54:52 CEST 2009
hi~
thanks for your reply.
sorry for my ability of writing and understanding the code
=D
btw, How contribute my idea of this function, I means, it should be more
clean or easy just like this:
unsigned long get_ram_size(volatile long *base, long maxsize)
{
unsigned long mem;
for (mem = (*base); mem < (maxsize); mem <<= 1)) {
if (*(unsigned long *)((unsigned long)(get_ram_size) + mem)
==
*(unsigned long *)(get_ram_size))
break;
}
}
On Thu, Jun 25, 2009 at 8:56 PM, Detlev Zundel <dzu at denx.de> wrote:
> Hi ya,
>
> > I could not understand common/memsize.c, how it works?
>
> Like a charm ;)
>
> > maxsize / sizeof (long), what's meaning of it? why sizeof (long) is
> > dividend?
>
> As the comment in line 50 states, "cnt" is used in pointer arithmetic,
> so addr is increased in sizeof(long) bytes. maxsize however is
> considered to be in bytes only. Makes sense?
>
> > just like stack, push every step mem addr to save:
> >
> > save[i++] = *addr;
> > and then?
>
> Cannot parse the question.
>
> The algorithm should be pretty clear however (take a paper and pencil
> and work out the values of addr as it proceeds) - we save the original
> content of the adressed cells and write our own pattern there (~cnt).
> Then we walk these cells upward and see where the previous write did not
> work like it was supposed to - voila.
>
> Cheers
> Detlev
>
> --
> The continental people think life is a game. The English think
> cricket is a game.
> -- George Mikes
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
>
--
--
Sincerely,
HaveF
More information about the U-Boot
mailing list