[U-Boot-Users] MPC8540 mtest "hang" with 1GByte memory module

Scott Coulter scott.coulter at cyclone.com
Wed Jul 5 21:29:18 CEST 2006


Hi Jerry,

> OK, what is the system trying to send out the UART when the hang
occurs? 
> Since you only send characters out the UART "when the test is done" 
> either the test has been successfully completed or it is sending a 
> failure message.  The two cases would cause different guesses.

I suspect that the "hang" is caused by a completion message since I can
also make the processor "hang" by only reading large chunks of memory in
a loop.

> Are you missing "sync" instructions in your UART handling?  Sounds
like 
> the UART register operations are not being forced to run by the 
> processor... when you hit the LED register, you are forcing the 
>instructions to run as a side effect and all becomes well.

The UART code that I am using is plain vanilla U-boot 1.1.4,
drivers/ns16550.c.  I dropped an asm("sync;isync;msync") in front of the
loop which polls the LSR and the behavior didn't change.  I dropped an
asm("sync;isync;msync") inside the loop which polls the LSR and the
behavior didn't change.

Scott

___________________________________________________________________

  Scott N. Coulter
  Senior Software Engineer
  
  Cyclone Microsystems          
  370 James Street              Phone:  203.786.5536 ext. 118
  New Haven, CT 06513-3051      Email:  scott.coulter at cyclone.com
  U.S.A.                        Web:    http://www.cyclone.com
___________________________________________________________________

-----Original Message-----
From: u-boot-users-bounces at lists.sourceforge.net
[mailto:u-boot-users-bounces at lists.sourceforge.net] On Behalf Of Jerry
Van Baren
Sent: Wednesday, July 05, 2006 12:39 PM
To: u-boot-users at lists.sourceforge.net
Subject: Re: [U-Boot-Users] MPC8540 mtest "hang" with 1GByte memory
module

Scott Coulter wrote:
> Hi everyone,
> 
> I have a custom MPC8540-based board running U-boot 1.1.4.  The
processor
> core runs at 833MHz and the memory is DDR 333MHz with ECC.  With a
> single banked SoDIMM memory module, 256 or 512Mbyte, the board can run
a
> memory test and boot/run linux 2.6.15.  With a multiple banked (2)
> 1Gbyte memory module, the board can boot/run linux 2.6.15, but, the
> memory test hangs in the vicinity of the bank (512Mbyte) boundary.
The
> uboot fill command also hangs.  We can also generate a hang condition
by
> doing a sequence of reads of a memory range that crosses the bank
> boundary.  Individual peeks and pokes of memory work fine.  It seems
> that a prolonged sequence of accesses is required to cause the
problem.
> 
> If I run 'mtest 1fff0000 20010000' (over the 512MB boundary on a 1GB
> module), the test hangs in seconds.
> 
> If I use a 512MB SoDIMM module which use two Chip Selects (2 banks).
I
> can run 'mtest fff0000 10010000' from U-boot for hours without a
> problem.
> 
> Investigation with a JTAG emulator shows that the processor is not
hung,
> but rather the code is stuck in a loop trying to output characters to
> the serial port (polling the LSR in the DUART for the transmitter to
be
> empty).  According to the JTAG emulator, the data being read in the
loop
> during the "hang" condition was 0.  However, if I read the register
> manually using the emulator, the value returned is 0x60 which should
> have caused the loop to exit and the character to be written.

OK, what is the system trying to send out the UART when the hang occurs?

  Since you only send characters out the UART "when the test is done" 
either the test has been successfully completed or it is sending a 
failure message.  The two cases would cause different guesses.

> On the board, we have an LED register connected to the local bus.  If
I
> write to the LEDs prior to the DUART LSR polling loop the memory test
> runs fine.  What effect should the local bus access have on the DUART
> polling loop?  According to the code and the emulator, the DUART
> registers do not show up in the data cache.

Are you missing "sync" instructions in your UART handling?  Sounds like 
the UART register operations are not being forced to run by the 
processor... when you hit the LED register, you are forcing the 
instructions to run as a side effect and all becomes well.

[snip]

> Thanks in advance,
> Scott

You are welcome in advance, ;-)
gvb

Using Tomcat but need to do more? Need to support web services,
security?
Get stuff done quickly with pre-integrated technology to make your job
easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache
Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users




More information about the U-Boot mailing list