[U-Boot-Users] best way to debug memory address problems?

Jerry Van Baren vanbargw at gmail.com
Fri Sep 7 12:26:07 CEST 2007


Jerry Van Baren wrote:
> Alan Bennett wrote:
>> Help;  I'm trying to figure out if these errors are hardware or
>> software.  And of course, this is our first ppc/uboot system, so I'm
>> still stepping through a lot of learning as I go.
>>
>> I'm supposed to have a memory region from 0 to 7fff_ffff assigned to
> 
> Looks like 07ff_ffff to me, although it doesn't matter for this discussion.
> 
>> our 128MB memory.  However, I run into several issues when trying to
>> run mtest.  I end up with an large sections  mis-behaving.  I don't
>> see any conflicts in the BRx registers, and I believe my OR1 is set up
>> properly, so I'm not sure how to proceed.
>>
>> good:
>> #> md  0x00100000 1; mw  0x00100000 0xfff0000f ; md  0x00100000 1;
>> 00100000: ffffffff    ....
>> 00100000: fff0000f    ....
>>
>> bad:
>> #> md  0x00b8ac98 1; mw  0x00b8ac98 0xffff0000 ; md  0x00b8ac98 1;
>> 00b8ac98: 61633938    ac98
>> 00b8ac98: 61633938    ac98
> 
> OK, the *data bits* in the memory are the *ASCII* values that form the 
> lower half of the address 0x61 = 'a', 0x63 = 'c', 0x39 = '9', 0x38 = 
> '8'.  There is *no way* this can be a coincidence unless you wrote those 
> values in intentionally before doing the above example "mw" command. 
> Going down that decision tree...
> 
> a) If you put 0x61633938 in that location of memory, how did you do it 
> when it worked as opposed to the above illustration where it failed?
> 
> b) If you *didn't* put 0x61633938 in that memory location, who did? 
> There is no way hardware mis-wrote half the address as *ASCII* values as 
> part of the "mw" command which means either there is a software bug 
> involved or your hardware is seriously sick (does u-boot run reliably?). 
>   If this is the case, what happens when you use capital letter addresses?
> md 0x00b8AC98 1; mw  0x00b8AC98 0xffff0000 ; md  0x00b8AC98 1;

Hi Alan,

[snip]

The above symptoms could be because your u-boot scratchpad memory (.data 
and/or .bss) resides in the memory locations you are trying to test - 
0x00b8xxxx - either intentionally or unintentionally.  If 
unintentionally, you have either a hardware problem or a software 
misconfiguration.

Is your memory space clean or does it get replicated?  If you write a 
unique pattern (say 0xcafeface) to address 0x0000_0000, do you see it 
again at an address related by one address bit - e.g. 0x0400_0000, 
0x0200_0000, 0x0100_0000, ... 0x0000_0010, 0x0000_0008, 0x0000_0004?

Hardware problems would tend to be miswiring or shorts/opens on the 
address bus.  That would be Very Bad. :-(

Software problems would tend to be errors in SDRAM (DDR/DDR2) 
configuration - if, for instance, you have your processor initialized 
with the wrong address split on the bank select, you will be sending the 
wrong number of bits for RAS and CAS, causing a memory "duplication" 
problem.  That would not be good, but *NOT* Very Bad since it is dead 
simple to fix (once you figure out what the configuration _should_ be, 
that is ;-).

Good luck,
gvb




More information about the U-Boot mailing list